From 573b090ed25a8bb8ec797217c7ca36b01f994126 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 2 Aug 2022 12:56:57 +0600 Subject: [PATCH 001/683] Add tinkoff, tinkoff-split, payment-eacq --- payment-eacq.cjs | 708 ++++++++++++++++++++++++ tinkoff-split/_utils.ts | 129 +++++ tinkoff-split/add-customer.ts | 68 +++ tinkoff-split/auth-partners-register.ts | 51 ++ tinkoff-split/cancel.ts | 70 +++ tinkoff-split/charge.ts | 72 +++ tinkoff-split/confirm.ts | 68 +++ tinkoff-split/finishAuth.ts | 68 +++ tinkoff-split/get-card-list.ts | 66 +++ tinkoff-split/get-customer.ts | 68 +++ tinkoff-split/get-state.ts | 66 +++ tinkoff-split/init.ts | 87 +++ tinkoff-split/register-partner.ts | 132 +++++ tinkoff-split/remove-customer.ts | 63 +++ tinkoff-split/resend.ts | 62 +++ tinkoff/_utils.ts | 101 ++++ tinkoff/add-customer.ts | 56 ++ tinkoff/cancel.ts | 57 ++ tinkoff/charge.ts | 60 ++ tinkoff/confirm.ts | 60 ++ tinkoff/finishAuth.ts | 56 ++ tinkoff/get-card-list.ts | 56 ++ tinkoff/get-customer.ts | 56 ++ tinkoff/get-state.ts | 54 ++ tinkoff/init.ts | 80 +++ tinkoff/remove-customer.ts | 54 ++ tinkoff/resend.ts | 50 ++ 27 files changed, 2518 insertions(+) create mode 100644 payment-eacq.cjs create mode 100644 tinkoff-split/_utils.ts create mode 100644 tinkoff-split/add-customer.ts create mode 100644 tinkoff-split/auth-partners-register.ts create mode 100644 tinkoff-split/cancel.ts create mode 100644 tinkoff-split/charge.ts create mode 100644 tinkoff-split/confirm.ts create mode 100644 tinkoff-split/finishAuth.ts create mode 100644 tinkoff-split/get-card-list.ts create mode 100644 tinkoff-split/get-customer.ts create mode 100644 tinkoff-split/get-state.ts create mode 100644 tinkoff-split/init.ts create mode 100644 tinkoff-split/register-partner.ts create mode 100644 tinkoff-split/remove-customer.ts create mode 100644 tinkoff-split/resend.ts create mode 100644 tinkoff/_utils.ts create mode 100644 tinkoff/add-customer.ts create mode 100644 tinkoff/cancel.ts create mode 100644 tinkoff/charge.ts create mode 100644 tinkoff/confirm.ts create mode 100644 tinkoff/finishAuth.ts create mode 100644 tinkoff/get-card-list.ts create mode 100644 tinkoff/get-customer.ts create mode 100644 tinkoff/get-state.ts create mode 100644 tinkoff/init.ts create mode 100644 tinkoff/remove-customer.ts create mode 100644 tinkoff/resend.ts diff --git a/payment-eacq.cjs b/payment-eacq.cjs new file mode 100644 index 00000000..93d1c0cb --- /dev/null +++ b/payment-eacq.cjs @@ -0,0 +1,708 @@ +require('react'); +require('graphql'); +require('lodash'); +require('subscriptions-transport-ws'); +require('dotenv').config(); + +// import {getError} from 'tinkoff-split/init' +const {init} = require('./tinkoff-split/init'); +const {getUrl, getError, _generateToken, generateToken, errorsConverter,generateTestToken, sleep} = require ('./tinkoff-split/_utils'); + +const { generateApolloClient } = require("@deep-foundation/hasura/client"); +const { DeepClient } = require('@deep-foundation/deeplinks/imports/client'); +const { minilinks, Link } = require('@deep-foundation/deeplinks/imports/minilinks'); + +const apolloClient = generateApolloClient({ + path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE + ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') ? false : true, + // admin token in prealpha deep secret key + // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', +}); + +const unloginedDeep = new DeepClient({ apolloClient }); + +// const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)); + +// export const getUrl = method => `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; +// export const getMarketUrl = method => `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; + +// export const errorsConverter = { +// 7: 'Покупатель не найден', +// 53: 'Обратитесь к продавцу', +// 99: 'Платеж отклонен', +// 100: 'Повторите попытку позже', +// 101: 'Не пройдена идентификация 3DS', +// 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', +// 103: 'Повторите попытку позже', +// 119: 'Превышено кол-во запросов на авторизацию', +// 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', +// 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', +// 1003: 'Неверный merchant ID', +// 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', +// 1005: 'Платеж отклонен банком, выпустившим карту', +// 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', +// 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', +// 1008: 'Платеж отклонен, необходима идентификация', +// 1012: 'Такие операции запрещены для этой карты', +// 1013: 'Повторите попытку позже', +// 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', +// 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', +// 1019: 'Платеж отклонен — попробуйте снова', +// 1030: 'Повторите попытку позже', +// 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', +// 1034: 'Попробуйте повторить попытку позже', +// 1038: 'Превышено количество попыток ввода ПИН-кода', +// 1039: 'Платеж отклонен — счет не найден', +// 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', +// 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', +// 1051: 'Недостаточно средств на карте', +// 1053: 'Платеж отклонен — счет не найден', +// 1054: 'Истек срок действия карты', +// 1055: 'Неверный ПИН', +// 1057: 'Такие операции запрещены для этой карты', +// 1058: 'Такие операции запрещены для этой карты', +// 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', +// 1061: 'Превышен дневной лимит платежей по карте', +// 1062: 'Платежи по карте ограничены', +// 1063: 'Операции по карте ограничены', +// 1064: 'Проверьте сумму', +// 1065: 'Превышен дневной лимит транзакций', +// 1075: 'Превышено число попыток ввода ПИН-кода', +// 1076: 'Платеж отклонен — попробуйте снова', +// 1077: 'Коды не совпадают — попробуйте снова', +// 1080: 'Неверный срок действия', +// 1082: 'Неверный CVV', +// 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', +// 1088: 'Ошибка шифрования. Попробуйте снова', +// 1089: 'Попробуйте повторить попытку позже', +// 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', +// 1092: 'Платеж отклонен — попробуйте снова', +// 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', +// 1094: 'Системная ошибка', +// 1096: 'Повторите попытку позже', +// 9999: 'Внутренняя ошибка системы', +// }; + + +// export const getError = errorCode => errorCode === '0' ? undefined : (errorsConverter[errorCode] || 'broken'); +// +// const _generateToken = (dataWithPassword) => { +// const dataString = Object.keys(dataWithPassword) +// .sort((a, b) => a.localeCompare(b)) +// .map(key => dataWithPassword[key]) +// .reduce((acc, item) => `${acc}${item}`, ''); +// const hash = crypto +// .createHash('sha256') +// .update(dataString) +// .digest('hex'); +// return hash; +// }; +// +// +// export const generateToken = (data) => { +// const { Receipt, DATA, Shops, ...restData } = data; +// const dataWithPassword = { ...restData, Password: process.env.PAYMENT_EACQ_TERMINAL_PASSWORD }; +// return _generateToken(dataWithPassword); +// }; +// +// export const generateTestToken = (data) => { +// const { Receipt, DATA, Shops, ...restData } = data; +// const dataWithPassword = { ...restData, Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD }; +// return _generateToken(dataWithPassword); +// }; +// +// export const tokenize = (options) => { +// return { +// ...options, +// Token: generateToken(options), +// }; +// }; +// +// export function createShops({ splitToken, amount, needFee = true }) { +// const shops = [{ +// ShopCode: splitToken?.json?.shopCode, +// Amount: Math.abs(amount) * 100, +// ...(amount > 0 && needFee ? { Fee: Math.round(+(SHAKE_PART * (amount * 100)).toFixed(2)) } : {}), +// }]; +// return shops; +// } +// + +// export const init = async (options) => { +// try { +// const response = await axios({ +// method: 'post', +// url: getUrl('Init'), +// headers: { +// 'Content-Type': 'application/json', +// }, +// data: options, +// }); + +// const error = getError(response.data.ErrorCode); + +// const d = { +// error, +// request: options, +// response: response.data, +// }; +// debug(d); +// options?.log && options.log(d); + +// return { +// error, +// request: options, +// response: response.data, +// }; +// } catch (error) { +// return { +// error, +// request: options, +// response: null, +// }; +// } +// }; + +export const payInBrowser = async ({ page, browser, url }) => { + await page.goto(url, { waitUntil: 'networkidle2' }); + await sleep(3000); + const oldForm = await page.evaluate(() => { + return !!document.querySelector('input[automation-id="tui-input-card-grouped__card"]'); + }); + if (oldForm) { + console.log('OLD FORM!!!!!!!'); + // Старая форма используется на тестовом сервере + const cvc1 = await page.evaluate(() => { + return !!document.querySelector('button[automation-id="pay-card__submit"]'); + }); + if (cvc1) { + await page.waitFor('input[automation-id="tui-input-card-grouped__card"]'); + await sleep(300); + await page.type('input[automation-id="tui-input-card-grouped__card"]', process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type('input[automation-id="tui-input-card-grouped__expire"]', process.env.PAYMENT_TEST_CARD_EXPDATE); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type('input[automation-id="tui-input-card-grouped__cvc"]', process.env.PAYMENT_TEST_CARD_CVC); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-card__submit"]'); // submit button + } else { + await page.waitFor('input[automation-id="tui-input-card-grouped__card"]'); + await sleep(300); + await page.type('input[automation-id="tui-input-card-grouped__card"]', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type('input[automation-id="tui-input-card-grouped__expire"]', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type('input[automation-id="tui-input-card-grouped__cvc"]', process.env.PAYMENT_E2C_CARD_CVC); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-wallet__submit"]'); // submit button + await sleep(300); + await page.waitFor('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(1000); + } + // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен + await sleep(1000); + } else { + console.log('NEW FORM!!!!!!!'); + await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number + await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date + await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code + await page.click('button[type=submit]'); // submit button + await page.waitFor('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(3000); + } + await browser.close(); +}; + +// const _generateToken = (dataWithPassword) => { +// const dataString = Object.keys(dataWithPassword) +// .sort((a, b) => a.localeCompare(b)) +// .map(key => dataWithPassword[key]) +// .reduce((acc, item) => `${acc}${item}`, ''); +// const hash = crypto +// .createHash('sha256') +// .update(dataString) +// .digest('hex'); +// return hash; +// }; + + +// export const generateTestToken = (data) => { +// const { Receipt, DATA, Shops, ...restData } = data; +// const dataWithPassword = { ...restData, Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD }; +// return _generateToken(dataWithPassword); +// }; + + + + +export const sendInit = async (noTokenData) => { + const options = { + ...noTokenData, + Token: generateToken(noTokenData), + }; + + return init(options); +}; + +const guest = await unloginedDeep.guest(); +const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); +const admin = await guestDeep.login({ linkId: await guestDeep.id('deep', 'admin') }); +const deep = new DeepClient({ deep: guestDeep, ...admin }); + +const f = async () => { + + + const User = await deep.id('@deep-foundation/core', 'User'); + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + const Join = await deep.id('@deep-foundation/core', 'Join'); + const Contain = await deep.id('@deep-foundation/core', 'Contain'); + const Value = await deep.id('@deep-foundation/core', 'Value'); + const String = await deep.id('@deep-foundation/core', 'String'); + const Package = await deep.id('@deep-foundation/core', 'Package'); + + const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); + const dockerSupportsJs = await deep.id('@deep-foundation/core', 'dockerSupportsJs'); + const Handler = await deep.id('@deep-foundation/core', 'Handler'); + const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); + const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); + + const Tree = await deep.id('@deep-foundation/core', 'Tree'); + const TreeIncludeNode = await deep.id('@deep-foundation/core', 'TreeIncludeNode'); + const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); + const TreeIncludeDown = await deep.id('@deep-foundation/core', 'TreeIncludeDown'); + + const Rule = await deep.id('@deep-foundation/core', 'Rule'); + const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); + const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); + const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); + const Selector = await deep.id('@deep-foundation/core', 'Selector'); + const SelectorInclude = await deep.id('@deep-foundation/core', 'SelectorInclude'); + const SelectorExclude = await deep.id('@deep-foundation/core', 'SelectorExclude'); + const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); + const containTree = await deep.id('@deep-foundation/core', 'containTree'); + const AllowInsertType = await deep.id('@deep-foundation/core', 'AllowInsertType'); + const AllowDeleteType = await deep.id('@deep-foundation/core', 'AllowDeleteType'); + const SelectorFilter = await deep.id('@deep-foundation/core', 'SelectorFilter'); + const BoolExp = await deep.id('@deep-foundation/core', 'BoolExp'); + const usersId = await deep.id('deep', 'users'); + + const BasePayment = await deep.id('@deep-foundation/payment', 'Payment'); + const BaseObject = await deep.id('@deep-foundation/payment', 'Object'); + const BaseSum = await deep.id('@deep-foundation/payment', 'Sum'); + const BasePay = await deep.id('@deep-foundation/payment', 'Pay'); + const BaseUrl = await deep.id('@deep-foundation/payment', 'Url'); + const BasePayed = await deep.id('@deep-foundation/payment', 'Payed'); + const BaseError = await deep.id('@deep-foundation/payment', 'Error'); + + const { data: [{ id: packageId }] } = await deep.insert({ + type_id: Package, + string: { data: { value: '@deep-foundation/payment-individual-entity' } }, + in: { data: [ + { + type_id: Contain, + from_id: deep.linkId + }, + ] }, + out: { data: [ + { + type_id: Join, + to_id: await deep.id('deep', 'users', 'packages'), + }, + { + type_id: Join, + to_id: await deep.id('deep', 'admin'), + }, + ] }, + }); + + console.log({ packageId }); + + const { data: [{ id: PPayment }] } = await deep.insert({ + type_id: BasePayment, + from_id: Any, + to_id: Any, + in: { data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Payment' } }, + } }, + }); + + console.log({ PPayment: PPayment }); + + const { data: [{ id: PObject }] } = await deep.insert({ + type_id: BaseObject, + from_id: PPayment, + to_id: Any, + in: { data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Object' } }, + } }, + }); + + console.log({ PObject: PObject }); + + const { data: [{ id: PSum }] } = await deep.insert({ + type_id: BaseSum, + from_id: Any, + to_id: PPayment, + in: { data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Sum' } }, + } }, + }); + + console.log({ PSum: PSum }); + + const { data: [{ id: PPay }] } = await deep.insert({ + type_id: BasePay, + from_id: Any, + to_id: PSum, + in: { data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Pay' } }, + } }, + }); + + console.log({ PPay: PPay }); + + const { data: [{ id: PUrl }] } = await deep.insert({ + type_id: BaseUrl, + from_id: Any, + to_id: PPay, + in: { data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Url' } }, + } }, + }); + + console.log({ PUrl: PUrl }); + + const { data: [{ id: PPayed }] } = await deep.insert({ + type_id: BasePayed, + from_id: Any, + to_id: PUrl, + in: { data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Payed' } }, + } }, + }); + + console.log({ PPayed: PPayed }); + + const { data: [{ id: PError }] } = await deep.insert({ + type_id: BaseError, + from_id: Any, + to_id: PPay, + in: { data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Error' } }, + } }, + }); + + console.log({ PError: PError }); + + const { data: [{ id: paymentTreeId }] } = await deep.insert({ + type_id: Tree, + in: { data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'paymentTree' } }, + } }, + out: { data: [ + { + type_id: TreeIncludeNode, + to_id: PPayment, + }, + { + type_id: TreeIncludeUp, + to_id: PSum, + }, + { + type_id: TreeIncludeDown, + to_id: PObject, + }, + { + type_id: TreeIncludeUp, + to_id: PError, + }, + { + type_id: TreeIncludeUp, + to_id: PPayed, + }, + { + type_id: TreeIncludeUp, + to_id: PPay, + }, + { + type_id: TreeIncludeUp, + to_id: PUrl, + }, + ] }, + }); + + const { data: [{ id: PSumProvider }] } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'SumProvider' } }, + } }, + }); + + console.log({ PSumProvider: PSumProvider }); + + const { data: [{ id: PTinkoffProvider }] } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'TinkoffProvider' } }, + } }, + }); + + console.log({ PTinkoffProvider: PTinkoffProvider }); + + // Handlers + + const insertHandlerDependencies = ` + const crypto = require('crypto'); + const axios = require('axios'); + const errorsConverter = ${errorsConverter}; + const getError = ${getError}; + const getUrl = ${getUrl}; + const _generateToken = ${_generateToken}; + const generateTestToken = ${generateTestToken}; + const init = ${init}; + const sendInit = ${sendInit}; + ` + + const payInsertHandler = async ({ _, data: { newLink: payLink } }) => { + const { data: [{id: paymentId}, {value: {value: sum}}] } = await deep.select({ + _by_path_item: { item_id: { _eq: payLink.id }, group_id: { _eq: paymentTreeId } }, + }); + console.log('paymentId', paymentId); + console.log('sum', sum); + const options = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: 5500, + Receipt: { + Items: [{ + Name: 'Test item', + Price: sum, + Quantity: 1, + Amount: 5500, + PaymentMethod: 'prepayment', + PaymentObject: 'service', + Tax: 'none', + }], + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + Taxation: 'usn_income', + }, + }; + + const initResult = await await sendInit({ + ...options, + OrderId: paymentId, + CustomerKey: deep.linkId, + PayType: 'T', + }); + + if(initResult.error != undefined) { + console.log('initResult.error:', initResult.error); + const { data: [{ id: error }] } = await deep.insert({ + type_id: PError, + to_id: payLink.id, + string: { data: { value: initResult.error } }, + }); + + console.log({error}); + } else { + console.log('Payment URL:', initResult.response.PaymentURL); + const { data: [{ id: url }] } = await deep.insert({ + type_id: PUrl, + to_id: payLink.id, + string: { data: { value: initResult.response.PaymentURL } }, + }); + console.log({url}) + } + + return initResult; + }; + + + + const { data: [{ id: payInsertHandlerId }] } = await deep.insert({ + type_id: SyncTextFile, + in: { data: [{ + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'joinInsertHandlerFile' } }, + }, { + from_id: dockerSupportsJs, + type_id: Handler, + in: { data: [{ + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'joinInsertHandler' } }, + }, { + type_id: HandleInsert, + from_id: PPay, + in: { data: [{ + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'joinInsertHandle' } }, + }] }, + }] }, + }] }, + string: { data: { value: insertHandlerDependencies+payInsertHandler.toString() + .replace('process.env.PAYMENT_TEST_TERMINAL_KEY', process.env.PAYMENT_TEST_TERMINAL_KEY) + .replace('process.env.PAYMENT_TEST_EMAIL', process.env.PAYMENT_TEST_EMAIL) + .replace('process.env.PAYMENT_TEST_PHONE', process.env.PAYMENT_TEST_PHONE) } }, + }); + + console.log({ payInsertHandlerId }); +}; + +await f(); + +await sleep(4000); + +// Tests + +// Setup + +const { data: [{ id: Product }] } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any +}); + +console.log({ Product }); + +// Types + +const PPayment = await deep.id('@deep-foundation/payment-individual-entity', 'Payment'); +const PObject = await deep.id('@deep-foundation/payment-individual-entity', 'Object'); +const PSum = await deep.id('@deep-foundation/payment-individual-entity', 'Sum'); +const PPay = await deep.id('@deep-foundation/payment-individual-entity', 'Pay'); +const PUrl = await deep.id('@deep-foundation/payment-individual-entity', 'Url'); +const PPayed = await deep.id('@deep-foundation/payment-individual-entity', 'Payed'); +const PError = await deep.id('@deep-foundation/payment-individual-entity', 'Error'); + +// Init + +const testInit = async () => { + const { data: [{ id: payment }] } = await deep.insert({ + type_id: PPayment, + }); + + const { data: [{ id: sum }] } = await deep.insert({ + type_id: PSum, + from_id: deep.linkId, + to_id: payment + }); + + console.log({ sum }); + + const { data: [{ id: product }] } = await deep.insert({ + type_id: Product, + }); + + console.log({product}); + + const { data: [{ id: object }] } = await deep.insert({ + type_id: PObject, + from_id: payment, + to_id: product + }); + + console.log({ object }); + + sleep(5000); + + expect(result.error).to.equal(undefined); +}; + +await testInit(); + +// Confirm + +const testConfirm = async () => { + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const customerKey = uniqid(); + const orderId = uniqid(); + + const noTokenConfirmData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: 5500, + Receipt: { + Items: [{ + Name: 'Test item', + Price: 5500, + Quantity: 1, + Amount: 5500, + PaymentMethod: 'prepayment', + PaymentObject: 'service', + Tax: 'none', + }], + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + Taxation: 'usn_income', + }, + }; + + + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const newConfirmData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const options = { + ...newConfirmData, + Token: generateToken(newConfirmData), + }; + + const result = await confirm(options); + + expect(result.error).to.equal(undefined); + expect(result.response.Status).to.equal('CONFIRMED'); + +} + +await testConfirm(); \ No newline at end of file diff --git a/tinkoff-split/_utils.ts b/tinkoff-split/_utils.ts new file mode 100644 index 00000000..58bd0df7 --- /dev/null +++ b/tinkoff-split/_utils.ts @@ -0,0 +1,129 @@ +import crypto from 'crypto'; + +export const getUrl = method => `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; +export const getMarketUrl = method => `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; + +export const sleep = (ms: any) => new Promise(resolve => setTimeout(resolve, ms)); +const SHAKE_PART = 0.07; + +export const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', +}; + +export const getError = errorCode => errorCode === '0' ? undefined : (errorsConverter[errorCode] || 'broken'); + +export const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map(key => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + const hash = crypto + .createHash('sha256') + .update(dataString) + .digest('hex'); + return hash; +}; + +export const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { ...restData, Password: process.env.PAYMENT_EACQ_TERMINAL_PASSWORD }; + return _generateToken(dataWithPassword); +}; + +export const generateTestToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { ...restData, Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD }; + return _generateToken(dataWithPassword); +}; + +export const tokenize = (options) => { + return { + ...options, + Token: generateToken(options), + }; +}; + +export interface IReceipt { + Items: IItem[]; + Phone?: string; + Email?: string; + Taxation: string; +} + +export interface IItem { + Name: string; + Price: number; + Quantity: number; + Amount: number; + PaymentMethod?: string; + PaymentObject?: string; + Tax: string; +} +export interface IShops { + ShopCode: String; + Amount: number; + Name?: string; + Fee?: number; +} + +export function createShops({ splitToken, amount, needFee = true }) { + const shops = [{ + ShopCode: splitToken?.json?.shopCode, + Amount: Math.abs(amount) * 100, + ...(amount > 0 && needFee ? { Fee: Math.round(+(SHAKE_PART * (amount * 100)).toFixed(2)) } : {}), + }]; + return shops; +} diff --git a/tinkoff-split/add-customer.ts b/tinkoff-split/add-customer.ts new file mode 100644 index 00000000..6fe6a5e2 --- /dev/null +++ b/tinkoff-split/add-customer.ts @@ -0,0 +1,68 @@ +import axios from 'axios'; +import { getUrl, getError } from './_utils'; +import Debug from 'debug'; + +const debug = Debug('payments:tinkoff-split:add-customer'); + +export interface IAddCustomerRequest { + (options: IAddCustomerOptions): Promise; +} + +export interface IAddCustomerOptions { + TerminalKey: string; + CustomerKey: string; + Email?: string; + Phone?: string; + Token: string; + log?: (data) => any; +} + +export interface IAddCustomerResponse { + error: string; + request: IAddCustomerOptions; + response: IAddCustomerPaymentResponse; +} + +export interface IAddCustomerPaymentResponse { + TerminalKey: string; + CustomerKey: string; + Success: boolean; + ErrorCode: string; + Message?: string; + Details?: string; +} + +export const addCustomer: IAddCustomerRequest = async (options: IAddCustomerOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('AddCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff-split/auth-partners-register.ts b/tinkoff-split/auth-partners-register.ts new file mode 100644 index 00000000..faa4cbf0 --- /dev/null +++ b/tinkoff-split/auth-partners-register.ts @@ -0,0 +1,51 @@ +import axios from 'axios'; +import { getError, getMarketUrl } from './_utils'; +import Debug from 'debug'; + +const debug = Debug('payments:tinkoff-split:auth-partners-register'); + +export interface IAuthPartnersRegisterPartner { + (options: IAuthPartnersRegisterPartnerOptions): Promise; +} + +export interface IAuthPartnersRegisterPartnerOptions { + username: string; + password: string; +} + +export interface IAuthPartnersRegisterPartnerResponse { + access_token: string; + token_type: string; + refresh_token: string; + expires_in: number; + scope: string; + jti: string; +} + +// only for unsafe usage in registerPartner +export const authPartnerRegister: IAuthPartnersRegisterPartner = async (options: IAuthPartnersRegisterPartnerOptions): Promise => { + const response = await axios({ + method: 'post', + url: `${getMarketUrl('oauth/token')}?grant_type=password&username=${options.username}&password=${options.password}`, + auth: { + username: 'partner', + password: 'partner', + }, + headers: { + Authorization: 'Basic', + 'Content-Type': 'application/json', + }, + validateStatus: () => true, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + + return response.data; +}; diff --git a/tinkoff-split/cancel.ts b/tinkoff-split/cancel.ts new file mode 100644 index 00000000..771df10c --- /dev/null +++ b/tinkoff-split/cancel.ts @@ -0,0 +1,70 @@ +import axios from 'axios'; +import { getUrl, IReceipt, getError, IShops } from './_utils'; +import Debug from 'debug'; + +const debug = Debug('payments:tinkoff-split:cancel'); + +export interface ICancelRequest { + (options: ICancelOptions): Promise; +} + +export interface ICancelOptions { + TerminalKey: string; + PaymentId: number; + Amount?: number; + Token: string; + Receipt?: IReceipt; + shops: IShops[]; + log?: (data) => any; +} + +export interface ICancelResponse { + error: string; + request: ICancelOptions; + response: ICancelPaymentResponse; +} + +export interface ICancelPaymentResponse { + TerminalKey: string; + Success: boolean; + Status: string; + PaymentId: number; + ErrorCode: string; + OrderId: string; + OriginalAmount: number; + NewAmount: number; + Message?: string; + Details?: string; +} + +export const cancel: ICancelRequest = async (options: ICancelOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Cancel'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff-split/charge.ts b/tinkoff-split/charge.ts new file mode 100644 index 00000000..4ffed9a2 --- /dev/null +++ b/tinkoff-split/charge.ts @@ -0,0 +1,72 @@ +import axios from 'axios'; +import Debug from 'debug'; +import { getError, getUrl } from './_utils'; + +const debug = Debug('payments:tinkoff-split:charge'); + +export interface IChargeRequest { + (options: IChargeOptions): Promise; +} + +export interface IChargeOptions { + TerminalKey: string; + PaymentId: number; + RebillId: number; + SendEmail?: boolean; + InfoEmail?: boolean; + Token: string; + log?: (data) => any; +} + +export interface IChargeResponse { + error: string; + request: IChargeOptions; + response: IChargePaymentResponse; +} + +export interface IChargePaymentResponse { + TerminalKey: string; + OrderId: string; + Success: boolean; + Status: string; + PaymentId: number; + ErrorCode: string; + Amount: number; + Message?: string; + Details?: string; +} + +export const charge: IChargeRequest = async (options: IChargeOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Charge'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff-split/confirm.ts b/tinkoff-split/confirm.ts new file mode 100644 index 00000000..47b8f32c --- /dev/null +++ b/tinkoff-split/confirm.ts @@ -0,0 +1,68 @@ +import axios from 'axios'; +import { getUrl, IReceipt, getError, IShops } from './_utils'; +import Debug from 'debug'; + +const debug = Debug('payments:tinkoff-split:confirm'); + +export interface IConfirmRequest { + (options: IConfirmOptions): Promise; +} + +export interface IConfirmOptions { + TerminalKey: string; + PaymentId: number; + Amount?: number; + Token: string; + Receipt?: IReceipt; + shops: IShops[]; + log?: (data) => any; +} + +export interface IConfirmResponse { + error: string; + request: IConfirmOptions; + response: IConfirmPaymentResponse; +} + +export interface IConfirmPaymentResponse { + TerminalKey: string; + OrderId: string; + Success: boolean; + Status: string; + PaymentId: number; + ErrorCode: string; + Message?: string; + Details?: string; +} + +export const confirm: IConfirmRequest = async (options: IConfirmOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff-split/finishAuth.ts b/tinkoff-split/finishAuth.ts new file mode 100644 index 00000000..9f586806 --- /dev/null +++ b/tinkoff-split/finishAuth.ts @@ -0,0 +1,68 @@ +import axios from 'axios'; +import { getUrl, getError } from './_utils'; +import Debug from 'debug'; + +const debug = Debug('payments:tinkoff-split:finishAuth'); + +export interface IFinishAuthRequest { + (options: IFinishAuthOptions): Promise; +} + +export interface IFinishAuthOptions { + CardData: string; + PaymentId: number; + Token: string; + TerminalKey: string; + log?: (data) => any; +} + +export interface IFinishAuthResponse { + error: string; + request: IFinishAuthOptions; + response: IFinishAuthPaymentResponse; +} + +export interface IFinishAuthPaymentResponse { + Success: boolean; + ErrorCode: number; + TerminalKey: string; + Status: string; + PaymentId: number; + OrderId: string; + Amount: number; + ACSUrl: string; + MD: string; + PaReq: string; +} + +export const finishAuth: IFinishAuthRequest = async (options: IFinishAuthOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('FinishAuthorize'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff-split/get-card-list.ts b/tinkoff-split/get-card-list.ts new file mode 100644 index 00000000..d2e57827 --- /dev/null +++ b/tinkoff-split/get-card-list.ts @@ -0,0 +1,66 @@ +import axios from 'axios'; +import { getUrl, getError } from './_utils'; +import Debug from 'debug'; + +const debug = Debug('payments:tinkoff-split:get-card-list'); + +export interface IGetCardListRequest { + (options: IGetCardListOptions): Promise; +} + +export interface IGetCardListOptions { + TerminalKey: string; + CustomerKey: string; + Token: string; + log?: (data) => any; +} + +export interface IGetCardListResponse { + error: string; + request: IGetCardListOptions; + response: IGetCardListPaymentResponse[]; +} + +export interface IGetCardListPaymentResponse { + Pan: string; + CardId: string; + Status: string; + RebillId?: string; + ExpDate: string; + CardType: number; +} + +export const getCardList: IGetCardListRequest = async (options: IGetCardListOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCardList'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode || '0'); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff-split/get-customer.ts b/tinkoff-split/get-customer.ts new file mode 100644 index 00000000..70048368 --- /dev/null +++ b/tinkoff-split/get-customer.ts @@ -0,0 +1,68 @@ +import axios from 'axios'; +import { getUrl, getError } from './_utils'; +import Debug from 'debug'; + +const debug = Debug('payments:tinkoff-split:get-customer'); + +export interface IGetCustomerRequest { + (options: IGetCustomerOptions): Promise; +} + +export interface IGetCustomerOptions { + TerminalKey: string; + CustomerKey: string; + Token: string; + log?: (data) => any; +} + +export interface IGetCustomerResponse { + error: string; + request: IGetCustomerOptions; + response: IGetCustomerPaymentResponse; +} + +export interface IGetCustomerPaymentResponse { + TerminalKey: string; + CustomerKey: string; + Success: boolean; + ErrorCode: string; + Email?: string; + Phone?: string; + Message?: string; + Details?: string; +} + +export const getCustomer: IGetCustomerRequest = async (options: IGetCustomerOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff-split/get-state.ts b/tinkoff-split/get-state.ts new file mode 100644 index 00000000..74804024 --- /dev/null +++ b/tinkoff-split/get-state.ts @@ -0,0 +1,66 @@ +import axios from 'axios'; +import { getUrl, getError } from './_utils'; +import Debug from 'debug'; + +const debug = Debug('payments:tinkoff-split:get-state'); + +export interface IGetStateRequest { + (options: IGetStateOptions): Promise; +} + +export interface IGetStateOptions { + TerminalKey: string; + PaymentId: number; + Amount?: number; + Token: string; + log?: (data) => any; +} + +export interface IGetStateResponse { + error: string; + request: IGetStateOptions; + response: IGetStatePaymentResponse; +} + +export interface IGetStatePaymentResponse { + TerminalKey: string; + OrderId: string; + Success: boolean; + Status: string; + PaymentId: number; + ErrorCode: string; + Message?: string; + Details?: string; +} + +export const getState: IGetStateRequest = async (options: IGetStateOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetState'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff-split/init.ts b/tinkoff-split/init.ts new file mode 100644 index 00000000..1a2ed79c --- /dev/null +++ b/tinkoff-split/init.ts @@ -0,0 +1,87 @@ +import axios from 'axios'; +import { getUrl, getError, IReceipt, IShops } from './_utils'; +import Debug from 'debug'; + +const debug = Debug('payments:tinkoff-split:init'); + +export interface IInitRequest { + (options: IInitOptions): Promise; +} + +export interface IInitOptions { + TerminalKey: string; + OrderId: string; + Amount: number; + Description?: string; + CustomerKey?: string; + Language?: string; + Token?: string; + Recurrent?: string; + DATA?: IUserData; + PayType?: string; + Receipt?: IReceipt; + NotificationURL?: string; + SuccessURL?: string; + FailURL?: string; + shops: IShops[]; + log?: (data) => any; +} + +export interface IUserData { + Phone: string; + Email: string; +} + +export interface IInitResponse { + error: string; + request: IInitOptions; + response: IInitPaymentResponse; +} + +export interface IInitPaymentResponse { + TerminalKey: string; + Amount: number; + OrderId: string; + Success: boolean; + Status: string; + PaymentId: number; + ErrorCode: string; + PaymentURL?: string; + Message?: string; + Details?: string; +} + +export const init: IInitRequest = async (options: IInitOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Init'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff-split/register-partner.ts b/tinkoff-split/register-partner.ts new file mode 100644 index 00000000..d300084a --- /dev/null +++ b/tinkoff-split/register-partner.ts @@ -0,0 +1,132 @@ +import axios from 'axios'; +import { getMarketUrl } from './_utils'; +import { authPartnerRegister } from './auth-partners-register'; +import Debug from 'debug'; + +const debug = Debug('payments:tinkoff-split:register-partner'); + +export interface IRegisterPartner { + (options: IRegisterPartnerOptions): Promise; +} + +export interface IRegisterPartnerOptions { + serviceProviderEmail?: string; + shopArticleId?: string; + billingDescriptor: string; + fullName: string; + name: string; + inn: string; + kpp: string; + okved?: string; + ogrn: number; + regDepartment?: string; + regDate?: string; + addresses: { + type: string; + zip: string; + country: string; + city: string; + street: string; + description?: string; + }[]; + phones?: { + type?: string; + phone?: string; + description?: string; + }[]; + email: string; + assets?: string; + founders?: { + individuals: { + firstName: string; + lastName: string; + middleName?: string; + birthDate?: string; + birthPlace?: string; + citizenship: string; + docType?: string; + docNumber?: string; + issueDate?: string; + issuedBy?: string; + address: string; + }[]; + }; + ceo: { + firstName: string; + lastName: string; + middleName: string; + birthDate: string; + birthPlace?: string; + docType?: string; + docNumber?: string; + issueDate?: string; + issuedBy?: string; + address?: string; + phone: string; + }; + licenses?: { + type?: string; + number?: string; + issueDate?: string; + issuedBy?: string; + expiryDate?: string; + description?: string; + }; + siteUrl: string; + primaryActivities?: string; + bankAccount: { + account: string; + korAccount?: string; + bankName: string; + bik: string; + details: string; + tax: string; + }; + comment?: string; + nonResident?: boolean; +} + +export interface IRegisterPartnerResponse { + code?: string; + shopCode?: string; + terminals?: any[]; + + timestamp?: string; + status?: number; + error?: string; + errors?: { + field?: string; + defaultMessage?: string; + rejectedValue?: string; + code?: string; + }[]; + message?: string; + path?: string; +} + +export const registerPartner: IRegisterPartner = async (options: IRegisterPartnerOptions): Promise => { + const access_token = (await authPartnerRegister({ + username: process.env.PAYMENT_TINKOFF_MARKET_USERNAME || '', + password: process.env.PAYMENT_TINKOFF_MARKET_PASSWORD || '', + })); + + console.log({ access_token }); + + const response = await axios({ + method: 'post', + url: getMarketUrl('register'), + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${access_token?.access_token}`, + }, + data: options, + validateStatus: () => true, + }); + + debug({ + request: options, + response: response.data, + }); + + return response.data; +}; diff --git a/tinkoff-split/remove-customer.ts b/tinkoff-split/remove-customer.ts new file mode 100644 index 00000000..ce77e3d1 --- /dev/null +++ b/tinkoff-split/remove-customer.ts @@ -0,0 +1,63 @@ +import axios from 'axios'; +import { getUrl, getError } from './_utils'; +import Debug from 'debug'; + +const debug = Debug('payments:tinkoff-split:remove-customer'); + +export interface IRemoveCustomerRequest { + (options: IRemoveCustomerOptions): Promise; +} + +export interface IRemoveCustomerOptions { + TerminalKey: string; + CustomerKey: string; + Token: string; +} + +export interface IRemoveCustomerResponse { + error: string; + request: IRemoveCustomerOptions; + response: IRemoveCustomerPaymentResponse; +} + +export interface IRemoveCustomerPaymentResponse { + TerminalKey: string; + CustomerKey: string; + Success: boolean; + ErrorCode: string; + Message?: string; + Details?: string; +} + +export const removeCustomer: IRemoveCustomerRequest = async (options: IRemoveCustomerOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('RemoveCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + debug({ + error, + request: options, + response: response.data, + }); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff-split/resend.ts b/tinkoff-split/resend.ts new file mode 100644 index 00000000..644c8d78 --- /dev/null +++ b/tinkoff-split/resend.ts @@ -0,0 +1,62 @@ +import axios from 'axios'; +import { getUrl, getError } from './_utils'; +import Debug from 'debug'; + +const debug = Debug('payments:tinkoff-split:add-customer'); + +export interface IResendRequest { + (options: IResendOptions): Promise; +} + +export interface IResendOptions { + TerminalKey: string; + Token: string; + log?: (data) => any; +} + +export interface IResendResponse { + error: string; + request: IResendOptions; + response: IResendPaymentResponse; +} + +export interface IResendPaymentResponse { + TerminalKey: string; + Count: number; + Success: boolean; + ErrorCode: string; + Message?: string; + Details?: string; +} + +export const resend: IResendRequest = async (options: IResendOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Resend'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff/_utils.ts b/tinkoff/_utils.ts new file mode 100644 index 00000000..03efe7b8 --- /dev/null +++ b/tinkoff/_utils.ts @@ -0,0 +1,101 @@ +import crypto from 'crypto'; + +export const getUrl = method => `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; + +export const errorsConverter = { + 4: 'invalid', + 7: 'invalid', + 53: 'broken', + 99: 'invalid', + 100: 'broken', + 101: 'invalid', + 102: 'invalid', + 103: 'broken', + 308: 'invalid', + 1006: 'invalid', + 1012: 'broken', + 1013: 'broken', + 1014: 'invalid', + 1030: 'broken', + 1033: 'invalid', + 1034: 'broken', + 1041: 'broken', + 1043: 'broken', + 1051: 'no-money', + 1054: 'invalid', + 1057: 'broken', + 1065: 'broken', + 1082: 'invalid', + 1089: 'broken', + 1091: 'broken', + 1096: 'broken', + 9999: 'invalid', +}; + +export const getError = errorCode => errorCode === '0' ? undefined : (errorsConverter[errorCode] || 'broken'); + +const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map(key => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + const hash = crypto + .createHash('sha256') + .update(dataString) + .digest('hex'); + return hash; +}; + +export const generateToken = (data) => { + const { Receipt, DATA, ...restData } = data; + console.log(restData); + const dataWithPassword = { ...restData, Password: process.env.PAYMENT_EACQ_TERMINAL_PASSWORD }; + return _generateToken(dataWithPassword); +}; + +export const generateTestToken = (data) => { + const { Receipt, DATA, ...restData } = data; + const dataWithPassword = { ...restData, Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD }; + return _generateToken(dataWithPassword); +}; + +export const tokenize = (options) => { + return { + ...options, + Token: generateToken(options), + }; +}; + +export interface IReceipt { + Items: IItem[]; + FfdVersion?: string; + Email?: string; + Phone?: string; + Taxation: string; + Payments?: object; +} + +export interface IItem { + Name: string; + Price: number; + Quantity: number; + Amount: number; + PaymentMethod?: string; + PaymentObject?: string; + Tax: string; +} + +export interface IReceipts { + ShopCode: string; + Items: IItem[]; + Email?: string; + Phone?: string; + Taxation: string; +} + +export interface IShops { + ShopCode: string; + Amount: number; + Name?: string; + Fee?: string; +} diff --git a/tinkoff/add-customer.ts b/tinkoff/add-customer.ts new file mode 100644 index 00000000..01c759a5 --- /dev/null +++ b/tinkoff/add-customer.ts @@ -0,0 +1,56 @@ +import axios from 'axios'; +import { getUrl, getError } from './_utils'; + +export interface IAddCustomerRequest { + (options: IAddCustomerOptions): Promise; +} + +export interface IAddCustomerOptions { + TerminalKey: string; + CustomerKey: string; + Email?: string; + Phone?: string; + Token: string; +} + +export interface IAddCustomerResponse { + error: string; + request: IAddCustomerOptions; + response: IAddCustomerPaymentResponse; +} + +export interface IAddCustomerPaymentResponse { + TerminalKey: string; + CustomerKey: string; + Success: boolean; + ErrorCode: string; + Message?: string; + Details?: string; +} + +export const addCustomer: IAddCustomerRequest = async (options: IAddCustomerOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('AddCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff/cancel.ts b/tinkoff/cancel.ts new file mode 100644 index 00000000..85842d6e --- /dev/null +++ b/tinkoff/cancel.ts @@ -0,0 +1,57 @@ +import axios from 'axios'; +import { getUrl, IReceipt, getError } from './_utils'; + +export interface ICancelRequest { + (options: ICancelOptions): Promise; +} + +export interface ICancelOptions { + TerminalKey: string; + PaymentId: number; + Amount?: number; + Token: string; + Receipt?: IReceipt; +} + +export interface ICancelResponse { + error: string; + request: ICancelOptions; + response: ICancelPaymentResponse; +} + +export interface ICancelPaymentResponse { + TerminalKey: string; + Success: boolean; + Status: string; + PaymentId: number; + ErrorCode: string; + OrderId: string; + OriginalAmount: number; + NewAmount: number; + Message?: string; + Details?: string; +} + +export const cancel: ICancelRequest = async (options: ICancelOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Cancel'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff/charge.ts b/tinkoff/charge.ts new file mode 100644 index 00000000..14bfceae --- /dev/null +++ b/tinkoff/charge.ts @@ -0,0 +1,60 @@ +import axios from 'axios'; +import { getUrl, getError } from './_utils'; + +export interface IChargeRequest { + (options: IChargeOptions): Promise; +} + +export interface IChargeOptions { + TerminalKey: string; + PaymentId: number; + RebillId: number; + SendEmail?: boolean; + InfoEmail?: boolean; + Token: string; +} + +export interface IChargeResponse { + error: string; + request: IChargeOptions; + response: IChargePaymentResponse; +} + +export interface IChargePaymentResponse { + TerminalKey: string; + OrderId: string; + Success: boolean; + Status: string; + PaymentId: number; + ErrorCode: string; + Amount: number; + Message?: string; + Details?: string; +} + +export const charge: IChargeRequest = async (options: IChargeOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Charge'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff/confirm.ts b/tinkoff/confirm.ts new file mode 100644 index 00000000..201d1f08 --- /dev/null +++ b/tinkoff/confirm.ts @@ -0,0 +1,60 @@ +import axios from 'axios'; +import { getUrl, IReceipt, IShops, getError } from './_utils'; + +export interface IConfirmRequest { + (options: IConfirmOptions): Promise; +} + +export interface IConfirmOptions { + TerminalKey: string; + PaymentId: number; + Token: string; + IP?: string; + Amount?: number; + Receipt?: IReceipt; + Shops?: IShops; + Receipts?: object; + Route?: 'ТСВ' | 'BNPL'; + Source?: 'Installment' | 'BNPL'; +} + +export interface IConfirmResponse { + error: string; + request: IConfirmOptions; + response: IConfirmPaymentResponse; +} + +export interface IConfirmPaymentResponse { + TerminalKey: string; + OrderId: string; + Success: boolean; + Status: string; + PaymentId: number; + ErrorCode: string; + Message?: string; + Details?: string; +} + +export const confirm: IConfirmRequest = async (options: IConfirmOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff/finishAuth.ts b/tinkoff/finishAuth.ts new file mode 100644 index 00000000..23eacd24 --- /dev/null +++ b/tinkoff/finishAuth.ts @@ -0,0 +1,56 @@ +import axios from 'axios'; +import { getUrl, getError } from './_utils'; + +export interface IFinishAuthRequest { + (options: IFinishAuthOptions): Promise; +} + +export interface IFinishAuthOptions { + CardData: string; + PaymentId: number; + Token: string; + TerminalKey: string; +} + +export interface IFinishAuthResponse { + error: string; + request: IFinishAuthOptions; + response: IFinishAuthPaymentResponse; +} + +export interface IFinishAuthPaymentResponse { + Success: boolean; + ErrorCode: number; + TerminalKey: string; + Status: string; + PaymentId: number; + OrderId: string; + Amount: number; + ACSUrl: string; + MD: string; + PaReq: string; +} + +export const finishAuth: IFinishAuthRequest = async (options: IFinishAuthOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('FinishAuthorize'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff/get-card-list.ts b/tinkoff/get-card-list.ts new file mode 100644 index 00000000..9d9aca56 --- /dev/null +++ b/tinkoff/get-card-list.ts @@ -0,0 +1,56 @@ +import axios from 'axios'; +import { getUrl, getError } from './_utils'; + +export interface IGetCardListRequest { + (options: IGetCardListOptions): Promise; +} + +export interface IGetCardListOptions { + TerminalKey: string; + CustomerKey: string; + Token: string; +} + +export interface IGetCardListResponse { + error: string; + request: IGetCardListOptions; + response: IGetCardListPaymentResponse; +} + +export interface IGetCardListPaymentResponse { + Pan: string; + CardId: string; + Status: string; + RebillId?: string; + ExpDate: string; + CardType: number; +} + +export const getCardList: IGetCardListRequest = async (options: IGetCardListOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCardList'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode || '0'); + + console.log('response.data getCardList', response.data); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff/get-customer.ts b/tinkoff/get-customer.ts new file mode 100644 index 00000000..59b6cd48 --- /dev/null +++ b/tinkoff/get-customer.ts @@ -0,0 +1,56 @@ +import axios from 'axios'; +import { getUrl, getError } from './_utils'; + +export interface IGetCustomerRequest { + (options: IGetCustomerOptions): Promise; +} + +export interface IGetCustomerOptions { + TerminalKey: string; + CustomerKey: string; + Token: string; +} + +export interface IGetCustomerResponse { + error: string; + request: IGetCustomerOptions; + response: IGetCustomerPaymentResponse; +} + +export interface IGetCustomerPaymentResponse { + TerminalKey: string; + CustomerKey: string; + Success: boolean; + ErrorCode: string; + Email?: string; + Phone?: string; + Message?: string; + Details?: string; +} + +export const getCustomer: IGetCustomerRequest = async (options: IGetCustomerOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff/get-state.ts b/tinkoff/get-state.ts new file mode 100644 index 00000000..4ceefe45 --- /dev/null +++ b/tinkoff/get-state.ts @@ -0,0 +1,54 @@ +import axios from 'axios'; +import { getUrl, getError } from './_utils'; + +export interface IGetStateRequest { + (options: IGetStateOptions): Promise; +} + +export interface IGetStateOptions { + TerminalKey: string; + PaymentId: number; + Amount?: number; + Token: string; +} + +export interface IGetStateResponse { + error: string; + request: IGetStateOptions; + response: IGetStatePaymentResponse; +} + +export interface IGetStatePaymentResponse { + TerminalKey: string; + OrderId: string; + Success: boolean; + Status: string; + PaymentId: number; + ErrorCode: string; + Message?: string; + Details?: string; +} + +export const getState: IGetStateRequest = async (options: IGetStateOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetState'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff/init.ts b/tinkoff/init.ts new file mode 100644 index 00000000..357dafca --- /dev/null +++ b/tinkoff/init.ts @@ -0,0 +1,80 @@ +import axios from 'axios'; +import { getUrl, getError, IReceipt } from './_utils'; + +const log = require('debug')('shakeapp-payments-event-handler'); +const debugResponse = log.extend('response.data'); + +export interface IInitRequest { + (options: IInitOptions): Promise; +} + +export interface IInitOptions { + TerminalKey: string; + OrderId: string; + Amount: number; + Description?: string; + CustomerKey?: string; + Language?: string; + Token?: string; + Recurrent?: string; + DATA?: IUserData; + PayType?: string; + Receipt?: IReceipt; + NotificationURL?: string; + SuccessURL?: string; + FailURL?: string; +} + +export interface IUserData { + Phone: string; + Email: string; +} + +export interface IInitResponse { + error: string; + request: IInitOptions; + response: IInitPaymentResponse; +} + +export interface IInitPaymentResponse { + TerminalKey: string; + Amount: number; + OrderId: string; + Success: boolean; + Status: string; + PaymentId: number; + ErrorCode: string; + PaymentURL?: string; + Message?: string; + Details?: string; +} + +export const init: IInitRequest = async (options: IInitOptions): Promise => { + try { + console.log('!!!!!!', getUrl('Init')); + const response = await axios({ + method: 'post', + url: getUrl('Init'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + debugResponse(response.data); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff/remove-customer.ts b/tinkoff/remove-customer.ts new file mode 100644 index 00000000..59b31670 --- /dev/null +++ b/tinkoff/remove-customer.ts @@ -0,0 +1,54 @@ +import axios from 'axios'; +import { getUrl, getError } from './_utils'; + +export interface IRemoveCustomerRequest { + (options: IRemoveCustomerOptions): Promise; +} + +export interface IRemoveCustomerOptions { + TerminalKey: string; + CustomerKey: string; + Token: string; +} + +export interface IRemoveCustomerResponse { + error: string; + request: IRemoveCustomerOptions; + response: IRemoveCustomerPaymentResponse; +} + +export interface IRemoveCustomerPaymentResponse { + TerminalKey: string; + CustomerKey: string; + Success: boolean; + ErrorCode: string; + Message?: string; + Details?: string; +} + +export const removeCustomer: IRemoveCustomerRequest = async (options: IRemoveCustomerOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('RemoveCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; diff --git a/tinkoff/resend.ts b/tinkoff/resend.ts new file mode 100644 index 00000000..f6f591a2 --- /dev/null +++ b/tinkoff/resend.ts @@ -0,0 +1,50 @@ +import axios from 'axios'; +import { getUrl, getError } from './_utils'; + +export interface IResendRequest { + (options: IResendOptions): Promise; +} + +export interface IResendOptions { + TerminalKey: string; + Token: string; +} + +export interface IResendResponse { + error: string; + request: IResendOptions; + response: IResendPaymentResponse; +} + +export interface IResendPaymentResponse { + TerminalKey: string; + Count: number; + Success: boolean; + ErrorCode: string; + Message?: string; + Details?: string; +} + +export const resend: IResendRequest = async (options: IResendOptions): Promise => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Resend'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; From 94d6005b7de5c231ef89a878446c30a305c3f057 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 2 Aug 2022 13:07:54 +0600 Subject: [PATCH 002/683] Import and use confirm --- payment-eacq.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payment-eacq.cjs b/payment-eacq.cjs index 93d1c0cb..19897b18 100644 --- a/payment-eacq.cjs +++ b/payment-eacq.cjs @@ -698,6 +698,7 @@ const testConfirm = async () => { Token: generateToken(newConfirmData), }; + const confirm = require('./tinkoff/confirm') const result = await confirm(options); expect(result.error).to.equal(undefined); From 75163ece248af8aa1baa15d0d03827159ee50b95 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 3 Aug 2022 10:40:45 +0600 Subject: [PATCH 003/683] Move tets to separate file --- payment-eacq-tests.ts | 201 ++++++++++++++++++++++++++++++ payment-eacq.cjs | 280 ++++++++---------------------------------- 2 files changed, 255 insertions(+), 226 deletions(-) create mode 100644 payment-eacq-tests.ts diff --git a/payment-eacq-tests.ts b/payment-eacq-tests.ts new file mode 100644 index 00000000..04d0ffcb --- /dev/null +++ b/payment-eacq-tests.ts @@ -0,0 +1,201 @@ +import { DeepClient } from './packages/deeplinks/imports/client'; +import { sleep } from './tinkoff-split/_utils'; +import { confirm } from './tinkoff/confirm'; +import { puppeteer } from 'puppeteer'; +import { uniqid } from 'uniqid'; +import { Link } from './packages/deeplinks/imports/minilinks'; +import {expeect} from 'chai'; + +const payInBrowser = async ({ page, browser, url }) => { + await page.goto(url, { waitUntil: 'networkidle2' }); + await sleep(3000); + const oldForm = await page.evaluate(() => { + return !!document.querySelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + }); + if (oldForm) { + console.log('OLD FORM!!!!!!!'); + // Старая форма используется на тестовом сервере + const cvc1 = await page.evaluate(() => { + return !!document.querySelector( + 'button[automation-id="pay-card__submit"]' + ); + }); + if (cvc1) { + await page.waitFor('input[automation-id="tui-input-card-grouped__card"]'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_TEST_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_TEST_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-card__submit"]'); // submit button + } else { + await page.waitFor('input[automation-id="tui-input-card-grouped__card"]'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_E2C_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_E2C_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-wallet__submit"]'); // submit button + await sleep(300); + await page.waitFor('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(1000); + } + // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен + await sleep(1000); + } else { + console.log('NEW FORM!!!!!!!'); + await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number + await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date + await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code + await page.click('button[type=submit]'); // submit button + await page.waitFor('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(3000); + } + await browser.close(); +}; + +export async function tests(deep: DeepClient>) { + // Tests + + // Setup + + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + }); + + console.log({ Product }); + + // Types + + const PPayment = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Payment' + ); + const PObject = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Object' + ); + const PSum = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Sum' + ); + const PPay = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Pay' + ); + const PUrl = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Url' + ); + const PPayed = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Payed' + ); + const PError = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Error' + ); + + // Init + + const testInit = async () => { + const { + data: [{ id: payment }], + } = await deep.insert({ + type_id: PPayment, + }); + + const { + data: [{ id: sum }], + } = await deep.insert({ + type_id: PSum, + from_id: deep.linkId, + to_id: payment, + }); + + console.log({ sum }); + + const { + data: [{ id: product }], + } = await deep.insert({ + type_id: Product, + }); + + console.log({ product }); + + const { + data: [{ id: object }], + } = await deep.insert({ + type_id: PObject, + from_id: payment, + to_id: product, + }); + + console.log({ object }); + + sleep(5000); + + expect(result.error).to.equal(undefined); + }; + + await testInit(); + + // Confirm + + const testConfirm = async () => { + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + await testConfirm(); +} diff --git a/payment-eacq.cjs b/payment-eacq.cjs index 19897b18..197ac3fd 100644 --- a/payment-eacq.cjs +++ b/payment-eacq.cjs @@ -12,21 +12,14 @@ const { generateApolloClient } = require("@deep-foundation/hasura/client"); const { DeepClient } = require('@deep-foundation/deeplinks/imports/client'); const { minilinks, Link } = require('@deep-foundation/deeplinks/imports/minilinks'); -const apolloClient = generateApolloClient({ - path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE - ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') ? false : true, - // admin token in prealpha deep secret key - // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', -}); -const unloginedDeep = new DeepClient({ apolloClient }); // const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)); -// export const getUrl = method => `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; -// export const getMarketUrl = method => `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; +// const getUrl = method => `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; +// const getMarketUrl = method => `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; -// export const errorsConverter = { +// const errorsConverter = { // 7: 'Покупатель не найден', // 53: 'Обратитесь к продавцу', // 99: 'Платеж отклонен', @@ -84,7 +77,7 @@ const unloginedDeep = new DeepClient({ apolloClient }); // }; -// export const getError = errorCode => errorCode === '0' ? undefined : (errorsConverter[errorCode] || 'broken'); +// const getError = errorCode => errorCode === '0' ? undefined : (errorsConverter[errorCode] || 'broken'); // // const _generateToken = (dataWithPassword) => { // const dataString = Object.keys(dataWithPassword) @@ -99,26 +92,26 @@ const unloginedDeep = new DeepClient({ apolloClient }); // }; // // -// export const generateToken = (data) => { +// const generateToken = (data) => { // const { Receipt, DATA, Shops, ...restData } = data; // const dataWithPassword = { ...restData, Password: process.env.PAYMENT_EACQ_TERMINAL_PASSWORD }; // return _generateToken(dataWithPassword); // }; // -// export const generateTestToken = (data) => { +// const generateTestToken = (data) => { // const { Receipt, DATA, Shops, ...restData } = data; // const dataWithPassword = { ...restData, Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD }; // return _generateToken(dataWithPassword); // }; // -// export const tokenize = (options) => { +// const tokenize = (options) => { // return { // ...options, // Token: generateToken(options), // }; // }; // -// export function createShops({ splitToken, amount, needFee = true }) { +// function createShops({ splitToken, amount, needFee = true }) { // const shops = [{ // ShopCode: splitToken?.json?.shopCode, // Amount: Math.abs(amount) * 100, @@ -128,7 +121,7 @@ const unloginedDeep = new DeepClient({ apolloClient }); // } // -// export const init = async (options) => { +// const init = async (options) => { // try { // const response = await axios({ // method: 'post', @@ -163,107 +156,55 @@ const unloginedDeep = new DeepClient({ apolloClient }); // } // }; -export const payInBrowser = async ({ page, browser, url }) => { - await page.goto(url, { waitUntil: 'networkidle2' }); - await sleep(3000); - const oldForm = await page.evaluate(() => { - return !!document.querySelector('input[automation-id="tui-input-card-grouped__card"]'); - }); - if (oldForm) { - console.log('OLD FORM!!!!!!!'); - // Старая форма используется на тестовом сервере - const cvc1 = await page.evaluate(() => { - return !!document.querySelector('button[automation-id="pay-card__submit"]'); - }); - if (cvc1) { - await page.waitFor('input[automation-id="tui-input-card-grouped__card"]'); - await sleep(300); - await page.type('input[automation-id="tui-input-card-grouped__card"]', process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type('input[automation-id="tui-input-card-grouped__expire"]', process.env.PAYMENT_TEST_CARD_EXPDATE); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type('input[automation-id="tui-input-card-grouped__cvc"]', process.env.PAYMENT_TEST_CARD_CVC); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-card__submit"]'); // submit button - } else { - await page.waitFor('input[automation-id="tui-input-card-grouped__card"]'); - await sleep(300); - await page.type('input[automation-id="tui-input-card-grouped__card"]', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type('input[automation-id="tui-input-card-grouped__expire"]', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type('input[automation-id="tui-input-card-grouped__cvc"]', process.env.PAYMENT_E2C_CARD_CVC); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-wallet__submit"]'); // submit button - await sleep(300); - await page.waitFor('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(1000); - } - // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен - await sleep(1000); - } else { - console.log('NEW FORM!!!!!!!'); - await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number - await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date - await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code - await page.click('button[type=submit]'); // submit button - await page.waitFor('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(3000); - } - await browser.close(); -}; - -// const _generateToken = (dataWithPassword) => { -// const dataString = Object.keys(dataWithPassword) -// .sort((a, b) => a.localeCompare(b)) -// .map(key => dataWithPassword[key]) -// .reduce((acc, item) => `${acc}${item}`, ''); -// const hash = crypto -// .createHash('sha256') -// .update(dataString) -// .digest('hex'); -// return hash; -// }; - - -// export const generateTestToken = (data) => { -// const { Receipt, DATA, Shops, ...restData } = data; -// const dataWithPassword = { ...restData, Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD }; -// return _generateToken(dataWithPassword); -// }; - +const f = async () => { + const apolloClient = generateApolloClient({ + path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE + ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') ? false : true, + // admin token in prealpha deep secret key + // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', + }); + + const unloginedDeep = new DeepClient({ apolloClient }); -export const sendInit = async (noTokenData) => { - const options = { - ...noTokenData, - Token: generateToken(noTokenData), + + + // const _generateToken = (dataWithPassword) => { + // const dataString = Object.keys(dataWithPassword) + // .sort((a, b) => a.localeCompare(b)) + // .map(key => dataWithPassword[key]) + // .reduce((acc, item) => `${acc}${item}`, ''); + // const hash = crypto + // .createHash('sha256') + // .update(dataString) + // .digest('hex'); + // return hash; + // }; + + + // const generateTestToken = (data) => { + // const { Receipt, DATA, Shops, ...restData } = data; + // const dataWithPassword = { ...restData, Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD }; + // return _generateToken(dataWithPassword); + // }; + + + + + const sendInit = async (noTokenData) => { + const options = { + ...noTokenData, + Token: generateToken(noTokenData), + }; + + return init(options); }; - - return init(options); -}; - -const guest = await unloginedDeep.guest(); -const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); -const admin = await guestDeep.login({ linkId: await guestDeep.id('deep', 'admin') }); -const deep = new DeepClient({ deep: guestDeep, ...admin }); - -const f = async () => { + + const guest = await unloginedDeep.guest(); + const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); + const admin = await guestDeep.login({ linkId: await guestDeep.id('deep', 'admin') }); + const deep = new DeepClient({ deep: guestDeep, ...admin }); const User = await deep.id('@deep-foundation/core', 'User'); @@ -594,116 +535,3 @@ await f(); await sleep(4000); -// Tests - -// Setup - -const { data: [{ id: Product }] } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any -}); - -console.log({ Product }); - -// Types - -const PPayment = await deep.id('@deep-foundation/payment-individual-entity', 'Payment'); -const PObject = await deep.id('@deep-foundation/payment-individual-entity', 'Object'); -const PSum = await deep.id('@deep-foundation/payment-individual-entity', 'Sum'); -const PPay = await deep.id('@deep-foundation/payment-individual-entity', 'Pay'); -const PUrl = await deep.id('@deep-foundation/payment-individual-entity', 'Url'); -const PPayed = await deep.id('@deep-foundation/payment-individual-entity', 'Payed'); -const PError = await deep.id('@deep-foundation/payment-individual-entity', 'Error'); - -// Init - -const testInit = async () => { - const { data: [{ id: payment }] } = await deep.insert({ - type_id: PPayment, - }); - - const { data: [{ id: sum }] } = await deep.insert({ - type_id: PSum, - from_id: deep.linkId, - to_id: payment - }); - - console.log({ sum }); - - const { data: [{ id: product }] } = await deep.insert({ - type_id: Product, - }); - - console.log({product}); - - const { data: [{ id: object }] } = await deep.insert({ - type_id: PObject, - from_id: payment, - to_id: product - }); - - console.log({ object }); - - sleep(5000); - - expect(result.error).to.equal(undefined); -}; - -await testInit(); - -// Confirm - -const testConfirm = async () => { - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const customerKey = uniqid(); - const orderId = uniqid(); - - const noTokenConfirmData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: 5500, - Receipt: { - Items: [{ - Name: 'Test item', - Price: 5500, - Quantity: 1, - Amount: 5500, - PaymentMethod: 'prepayment', - PaymentObject: 'service', - Tax: 'none', - }], - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - Taxation: 'usn_income', - }, - }; - - - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const newConfirmData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const options = { - ...newConfirmData, - Token: generateToken(newConfirmData), - }; - - const confirm = require('./tinkoff/confirm') - const result = await confirm(options); - - expect(result.error).to.equal(undefined); - expect(result.response.Status).to.equal('CONFIRMED'); - -} - -await testConfirm(); \ No newline at end of file From 8a00c938754e683e3afed1795e220ebc1f31f05d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 3 Aug 2022 11:03:07 +0600 Subject: [PATCH 004/683] Move tests back. Update tests logic --- payment-eacq-tests.ts | 201 --------------------- payment-eacq.cjs | 396 ++++++++++++++++++++++++------------------ 2 files changed, 223 insertions(+), 374 deletions(-) delete mode 100644 payment-eacq-tests.ts diff --git a/payment-eacq-tests.ts b/payment-eacq-tests.ts deleted file mode 100644 index 04d0ffcb..00000000 --- a/payment-eacq-tests.ts +++ /dev/null @@ -1,201 +0,0 @@ -import { DeepClient } from './packages/deeplinks/imports/client'; -import { sleep } from './tinkoff-split/_utils'; -import { confirm } from './tinkoff/confirm'; -import { puppeteer } from 'puppeteer'; -import { uniqid } from 'uniqid'; -import { Link } from './packages/deeplinks/imports/minilinks'; -import {expeect} from 'chai'; - -const payInBrowser = async ({ page, browser, url }) => { - await page.goto(url, { waitUntil: 'networkidle2' }); - await sleep(3000); - const oldForm = await page.evaluate(() => { - return !!document.querySelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - }); - if (oldForm) { - console.log('OLD FORM!!!!!!!'); - // Старая форма используется на тестовом сервере - const cvc1 = await page.evaluate(() => { - return !!document.querySelector( - 'button[automation-id="pay-card__submit"]' - ); - }); - if (cvc1) { - await page.waitFor('input[automation-id="tui-input-card-grouped__card"]'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_TEST_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_TEST_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-card__submit"]'); // submit button - } else { - await page.waitFor('input[automation-id="tui-input-card-grouped__card"]'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_E2C_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_E2C_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-wallet__submit"]'); // submit button - await sleep(300); - await page.waitFor('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(1000); - } - // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен - await sleep(1000); - } else { - console.log('NEW FORM!!!!!!!'); - await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number - await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date - await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code - await page.click('button[type=submit]'); // submit button - await page.waitFor('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(3000); - } - await browser.close(); -}; - -export async function tests(deep: DeepClient>) { - // Tests - - // Setup - - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); - - const { - data: [{ id: Product }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - }); - - console.log({ Product }); - - // Types - - const PPayment = await deep.id( - '@deep-foundation/payment-individual-entity', - 'Payment' - ); - const PObject = await deep.id( - '@deep-foundation/payment-individual-entity', - 'Object' - ); - const PSum = await deep.id( - '@deep-foundation/payment-individual-entity', - 'Sum' - ); - const PPay = await deep.id( - '@deep-foundation/payment-individual-entity', - 'Pay' - ); - const PUrl = await deep.id( - '@deep-foundation/payment-individual-entity', - 'Url' - ); - const PPayed = await deep.id( - '@deep-foundation/payment-individual-entity', - 'Payed' - ); - const PError = await deep.id( - '@deep-foundation/payment-individual-entity', - 'Error' - ); - - // Init - - const testInit = async () => { - const { - data: [{ id: payment }], - } = await deep.insert({ - type_id: PPayment, - }); - - const { - data: [{ id: sum }], - } = await deep.insert({ - type_id: PSum, - from_id: deep.linkId, - to_id: payment, - }); - - console.log({ sum }); - - const { - data: [{ id: product }], - } = await deep.insert({ - type_id: Product, - }); - - console.log({ product }); - - const { - data: [{ id: object }], - } = await deep.insert({ - type_id: PObject, - from_id: payment, - to_id: product, - }); - - console.log({ object }); - - sleep(5000); - - expect(result.error).to.equal(undefined); - }; - - await testInit(); - - // Confirm - - const testConfirm = async () => { - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - await testConfirm(); -} diff --git a/payment-eacq.cjs b/payment-eacq.cjs index 197ac3fd..c2f35d83 100644 --- a/payment-eacq.cjs +++ b/payment-eacq.cjs @@ -1,3 +1,5 @@ +import { tests } from "./payment-eacq-tests"; + require('react'); require('graphql'); require('lodash'); @@ -12,151 +14,93 @@ const { generateApolloClient } = require("@deep-foundation/hasura/client"); const { DeepClient } = require('@deep-foundation/deeplinks/imports/client'); const { minilinks, Link } = require('@deep-foundation/deeplinks/imports/minilinks'); - - -// const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)); - -// const getUrl = method => `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; -// const getMarketUrl = method => `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; - -// const errorsConverter = { -// 7: 'Покупатель не найден', -// 53: 'Обратитесь к продавцу', -// 99: 'Платеж отклонен', -// 100: 'Повторите попытку позже', -// 101: 'Не пройдена идентификация 3DS', -// 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', -// 103: 'Повторите попытку позже', -// 119: 'Превышено кол-во запросов на авторизацию', -// 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', -// 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', -// 1003: 'Неверный merchant ID', -// 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', -// 1005: 'Платеж отклонен банком, выпустившим карту', -// 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', -// 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', -// 1008: 'Платеж отклонен, необходима идентификация', -// 1012: 'Такие операции запрещены для этой карты', -// 1013: 'Повторите попытку позже', -// 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', -// 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', -// 1019: 'Платеж отклонен — попробуйте снова', -// 1030: 'Повторите попытку позже', -// 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', -// 1034: 'Попробуйте повторить попытку позже', -// 1038: 'Превышено количество попыток ввода ПИН-кода', -// 1039: 'Платеж отклонен — счет не найден', -// 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', -// 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', -// 1051: 'Недостаточно средств на карте', -// 1053: 'Платеж отклонен — счет не найден', -// 1054: 'Истек срок действия карты', -// 1055: 'Неверный ПИН', -// 1057: 'Такие операции запрещены для этой карты', -// 1058: 'Такие операции запрещены для этой карты', -// 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', -// 1061: 'Превышен дневной лимит платежей по карте', -// 1062: 'Платежи по карте ограничены', -// 1063: 'Операции по карте ограничены', -// 1064: 'Проверьте сумму', -// 1065: 'Превышен дневной лимит транзакций', -// 1075: 'Превышено число попыток ввода ПИН-кода', -// 1076: 'Платеж отклонен — попробуйте снова', -// 1077: 'Коды не совпадают — попробуйте снова', -// 1080: 'Неверный срок действия', -// 1082: 'Неверный CVV', -// 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', -// 1088: 'Ошибка шифрования. Попробуйте снова', -// 1089: 'Попробуйте повторить попытку позже', -// 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', -// 1092: 'Платеж отклонен — попробуйте снова', -// 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', -// 1094: 'Системная ошибка', -// 1096: 'Повторите попытку позже', -// 9999: 'Внутренняя ошибка системы', -// }; - - -// const getError = errorCode => errorCode === '0' ? undefined : (errorsConverter[errorCode] || 'broken'); -// -// const _generateToken = (dataWithPassword) => { -// const dataString = Object.keys(dataWithPassword) -// .sort((a, b) => a.localeCompare(b)) -// .map(key => dataWithPassword[key]) -// .reduce((acc, item) => `${acc}${item}`, ''); -// const hash = crypto -// .createHash('sha256') -// .update(dataString) -// .digest('hex'); -// return hash; -// }; -// -// -// const generateToken = (data) => { -// const { Receipt, DATA, Shops, ...restData } = data; -// const dataWithPassword = { ...restData, Password: process.env.PAYMENT_EACQ_TERMINAL_PASSWORD }; -// return _generateToken(dataWithPassword); -// }; -// -// const generateTestToken = (data) => { -// const { Receipt, DATA, Shops, ...restData } = data; -// const dataWithPassword = { ...restData, Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD }; -// return _generateToken(dataWithPassword); -// }; -// -// const tokenize = (options) => { -// return { -// ...options, -// Token: generateToken(options), -// }; -// }; -// -// function createShops({ splitToken, amount, needFee = true }) { -// const shops = [{ -// ShopCode: splitToken?.json?.shopCode, -// Amount: Math.abs(amount) * 100, -// ...(amount > 0 && needFee ? { Fee: Math.round(+(SHAKE_PART * (amount * 100)).toFixed(2)) } : {}), -// }]; -// return shops; -// } -// - -// const init = async (options) => { -// try { -// const response = await axios({ -// method: 'post', -// url: getUrl('Init'), -// headers: { -// 'Content-Type': 'application/json', -// }, -// data: options, -// }); - -// const error = getError(response.data.ErrorCode); - -// const d = { -// error, -// request: options, -// response: response.data, -// }; -// debug(d); -// options?.log && options.log(d); - -// return { -// error, -// request: options, -// response: response.data, -// }; -// } catch (error) { -// return { -// error, -// request: options, -// response: null, -// }; -// } -// }; - - +const packageName = "@deep-foundation/payments-eacq"; + +const payInBrowser = async ({ page, browser, url }) => { + await page.goto(url, { waitUntil: 'networkidle2' }); + await sleep(3000); + const oldForm = await page.evaluate(() => { + return !!document.querySelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + }); + if (oldForm) { + console.log('OLD FORM!!!!!!!'); + // Старая форма используется на тестовом сервере + const cvc1 = await page.evaluate(() => { + return !!document.querySelector( + 'button[automation-id="pay-card__submit"]' + ); + }); + if (cvc1) { + await page.waitFor('input[automation-id="tui-input-card-grouped__card"]'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_TEST_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_TEST_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-card__submit"]'); // submit button + } else { + await page.waitFor('input[automation-id="tui-input-card-grouped__card"]'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_E2C_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_E2C_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-wallet__submit"]'); // submit button + await sleep(300); + await page.waitFor('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(1000); + } + // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен + await sleep(1000); + } else { + console.log('NEW FORM!!!!!!!'); + await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number + await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date + await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code + await page.click('button[type=submit]'); // submit button + await page.waitFor('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(3000); + } + await browser.close(); +}; const f = async () => { const apolloClient = generateApolloClient({ @@ -167,30 +111,6 @@ const f = async () => { }); const unloginedDeep = new DeepClient({ apolloClient }); - - - - // const _generateToken = (dataWithPassword) => { - // const dataString = Object.keys(dataWithPassword) - // .sort((a, b) => a.localeCompare(b)) - // .map(key => dataWithPassword[key]) - // .reduce((acc, item) => `${acc}${item}`, ''); - // const hash = crypto - // .createHash('sha256') - // .update(dataString) - // .digest('hex'); - // return hash; - // }; - - - // const generateTestToken = (data) => { - // const { Receipt, DATA, Shops, ...restData } = data; - // const dataWithPassword = { ...restData, Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD }; - // return _generateToken(dataWithPassword); - // }; - - - const sendInit = async (noTokenData) => { const options = { @@ -250,9 +170,11 @@ const f = async () => { const BasePayed = await deep.id('@deep-foundation/payment', 'Payed'); const BaseError = await deep.id('@deep-foundation/payment', 'Error'); + + const { data: [{ id: packageId }] } = await deep.insert({ type_id: Package, - string: { data: { value: '@deep-foundation/payment-individual-entity' } }, + string: { data: { value: packageName } }, in: { data: [ { type_id: Contain, @@ -529,9 +451,137 @@ const f = async () => { }); console.log({ payInsertHandlerId }); -}; -await f(); + { + // Tests + + // Setup + + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + }); + + console.log({ Product }); + + // Types + + const PPayment = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Payment' + ); + const PObject = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Object' + ); + const PSum = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Sum' + ); + const PPay = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Pay' + ); + const PUrl = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Url' + ); + const PPayed = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Payed' + ); + const PError = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Error' + ); + + + const paymentTreeId = await deep.id(packageName, 'paymentTreeId'); + + // Init + + const testInit = async () => { + const { + data: [{ id: paymentId }], + } = await deep.insert({ + type_id: PPayment, + }); + + const { + data: [{ id: sumId }], + } = await deep.insert({ + type_id: PSum, + from_id: deep.linkId, + to_id: paymentId, + }); + + console.log({ sum: sumId }); + + const { + data: [{ id: productId }], + } = await deep.insert({ + type_id: Product, + }); + + console.log({ product: productId }); + + const { + data: [{ id: objectId }], + } = await deep.insert({ + type_id: PObject, + from_id: paymentId, + to_id: productId, + }); + + console.log({ object: objectId }); + + + const { + data: [{ id: payId }], + } = await deep.insert({ + type_id: PPay, + from_id: deep.linkId, + to_id: sumId, + }); + + console.log({ pay: payId }); + + sleep(5000); + + const payIdChildrenMp = await deep.select({ + _by_path_item: { item_id: { _eq: payId }, group_id: { _eq: paymentTreeId } }, + }) + + if(payIdChildrenMp.error) { + console.log('payIdChildrenMp.error:', payIdChildrenMp.error); + } else { + console.log('payIdChildrenMp.data', payIdChildrenMp.data) + } + }; + + await testInit(); + + // Confirm + + // const testConfirm = async () => { + // const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + // const page = await browser.newPage(); + + // await payInBrowser({ + // browser, + // page, + // url: initResult.response.PaymentURL, + // }); + + // await testConfirm(); + } +}; -await sleep(4000); +f(); From 8c3a865fb21cc8d3fd29ff08de95b33e33b2b8db Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 3 Aug 2022 11:09:49 +0600 Subject: [PATCH 005/683] Remove unused code, format --- payment-eacq.cjs | 1035 ++++++++++++++++++++++++++-------------------- 1 file changed, 580 insertions(+), 455 deletions(-) diff --git a/payment-eacq.cjs b/payment-eacq.cjs index c2f35d83..776063b9 100644 --- a/payment-eacq.cjs +++ b/payment-eacq.cjs @@ -1,20 +1,26 @@ -import { tests } from "./payment-eacq-tests"; - require('react'); require('graphql'); require('lodash'); require('subscriptions-transport-ws'); require('dotenv').config(); - -// import {getError} from 'tinkoff-split/init' -const {init} = require('./tinkoff-split/init'); -const {getUrl, getError, _generateToken, generateToken, errorsConverter,generateTestToken, sleep} = require ('./tinkoff-split/_utils'); - -const { generateApolloClient } = require("@deep-foundation/hasura/client"); +const { init } = require('./tinkoff-split/init'); +const { + getUrl, + getError, + _generateToken, + generateToken, + errorsConverter, + generateTestToken, + sleep, +} = require('./tinkoff-split/_utils'); +const { generateApolloClient } = require('@deep-foundation/hasura/client'); const { DeepClient } = require('@deep-foundation/deeplinks/imports/client'); -const { minilinks, Link } = require('@deep-foundation/deeplinks/imports/minilinks'); +const { + minilinks, + Link, +} = require('@deep-foundation/deeplinks/imports/minilinks'); -const packageName = "@deep-foundation/payments-eacq"; +const packageName = '@deep-foundation/payments-eacq'; const payInBrowser = async ({ page, browser, url }) => { await page.goto(url, { waitUntil: 'networkidle2' }); @@ -103,485 +109,604 @@ const payInBrowser = async ({ page, browser, url }) => { }; const f = async () => { - const apolloClient = generateApolloClient({ - path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE - ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') ? false : true, - // admin token in prealpha deep secret key - // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', - }); - - const unloginedDeep = new DeepClient({ apolloClient }); - - const sendInit = async (noTokenData) => { - const options = { - ...noTokenData, - Token: generateToken(noTokenData), - }; - - return init(options); - }; - - const guest = await unloginedDeep.guest(); - const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); - const admin = await guestDeep.login({ linkId: await guestDeep.id('deep', 'admin') }); - const deep = new DeepClient({ deep: guestDeep, ...admin }); - - - const User = await deep.id('@deep-foundation/core', 'User'); - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); - const Join = await deep.id('@deep-foundation/core', 'Join'); - const Contain = await deep.id('@deep-foundation/core', 'Contain'); - const Value = await deep.id('@deep-foundation/core', 'Value'); - const String = await deep.id('@deep-foundation/core', 'String'); - const Package = await deep.id('@deep-foundation/core', 'Package'); - - const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); - const dockerSupportsJs = await deep.id('@deep-foundation/core', 'dockerSupportsJs'); - const Handler = await deep.id('@deep-foundation/core', 'Handler'); - const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); - const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); - - const Tree = await deep.id('@deep-foundation/core', 'Tree'); - const TreeIncludeNode = await deep.id('@deep-foundation/core', 'TreeIncludeNode'); - const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); - const TreeIncludeDown = await deep.id('@deep-foundation/core', 'TreeIncludeDown'); - - const Rule = await deep.id('@deep-foundation/core', 'Rule'); - const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); - const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); - const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); - const Selector = await deep.id('@deep-foundation/core', 'Selector'); - const SelectorInclude = await deep.id('@deep-foundation/core', 'SelectorInclude'); - const SelectorExclude = await deep.id('@deep-foundation/core', 'SelectorExclude'); - const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); - const containTree = await deep.id('@deep-foundation/core', 'containTree'); - const AllowInsertType = await deep.id('@deep-foundation/core', 'AllowInsertType'); - const AllowDeleteType = await deep.id('@deep-foundation/core', 'AllowDeleteType'); - const SelectorFilter = await deep.id('@deep-foundation/core', 'SelectorFilter'); - const BoolExp = await deep.id('@deep-foundation/core', 'BoolExp'); - const usersId = await deep.id('deep', 'users'); - - const BasePayment = await deep.id('@deep-foundation/payment', 'Payment'); - const BaseObject = await deep.id('@deep-foundation/payment', 'Object'); - const BaseSum = await deep.id('@deep-foundation/payment', 'Sum'); - const BasePay = await deep.id('@deep-foundation/payment', 'Pay'); - const BaseUrl = await deep.id('@deep-foundation/payment', 'Url'); - const BasePayed = await deep.id('@deep-foundation/payment', 'Payed'); - const BaseError = await deep.id('@deep-foundation/payment', 'Error'); - - - - const { data: [{ id: packageId }] } = await deep.insert({ - type_id: Package, - string: { data: { value: packageName } }, - in: { data: [ - { - type_id: Contain, - from_id: deep.linkId - }, - ] }, - out: { data: [ - { - type_id: Join, - to_id: await deep.id('deep', 'users', 'packages'), - }, - { - type_id: Join, - to_id: await deep.id('deep', 'admin'), - }, - ] }, - }); - - console.log({ packageId }); - - const { data: [{ id: PPayment }] } = await deep.insert({ - type_id: BasePayment, - from_id: Any, - to_id: Any, - in: { data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Payment' } }, - } }, - }); - - console.log({ PPayment: PPayment }); - - const { data: [{ id: PObject }] } = await deep.insert({ - type_id: BaseObject, - from_id: PPayment, - to_id: Any, - in: { data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Object' } }, - } }, - }); - - console.log({ PObject: PObject }); - - const { data: [{ id: PSum }] } = await deep.insert({ - type_id: BaseSum, - from_id: Any, - to_id: PPayment, - in: { data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Sum' } }, - } }, - }); - - console.log({ PSum: PSum }); - - const { data: [{ id: PPay }] } = await deep.insert({ - type_id: BasePay, - from_id: Any, - to_id: PSum, - in: { data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Pay' } }, - } }, - }); - - console.log({ PPay: PPay }); - - const { data: [{ id: PUrl }] } = await deep.insert({ - type_id: BaseUrl, - from_id: Any, - to_id: PPay, - in: { data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Url' } }, - } }, - }); - - console.log({ PUrl: PUrl }); - - const { data: [{ id: PPayed }] } = await deep.insert({ - type_id: BasePayed, - from_id: Any, - to_id: PUrl, - in: { data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Payed' } }, - } }, - }); - - console.log({ PPayed: PPayed }); - - const { data: [{ id: PError }] } = await deep.insert({ - type_id: BaseError, - from_id: Any, - to_id: PPay, - in: { data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Error' } }, - } }, - }); - - console.log({ PError: PError }); - - const { data: [{ id: paymentTreeId }] } = await deep.insert({ - type_id: Tree, - in: { data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'paymentTree' } }, - } }, - out: { data: [ - { - type_id: TreeIncludeNode, - to_id: PPayment, - }, - { - type_id: TreeIncludeUp, - to_id: PSum, - }, - { - type_id: TreeIncludeDown, - to_id: PObject, - }, - { - type_id: TreeIncludeUp, - to_id: PError, - }, - { - type_id: TreeIncludeUp, - to_id: PPayed, - }, - { - type_id: TreeIncludeUp, - to_id: PPay, - }, - { - type_id: TreeIncludeUp, - to_id: PUrl, - }, - ] }, - }); - - const { data: [{ id: PSumProvider }] } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'SumProvider' } }, - } }, - }); - - console.log({ PSumProvider: PSumProvider }); - - const { data: [{ id: PTinkoffProvider }] } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'TinkoffProvider' } }, - } }, - }); - - console.log({ PTinkoffProvider: PTinkoffProvider }); - - // Handlers - - const insertHandlerDependencies = ` - const crypto = require('crypto'); - const axios = require('axios'); - const errorsConverter = ${errorsConverter}; - const getError = ${getError}; - const getUrl = ${getUrl}; - const _generateToken = ${_generateToken}; - const generateTestToken = ${generateTestToken}; - const init = ${init}; - const sendInit = ${sendInit}; - ` - - const payInsertHandler = async ({ _, data: { newLink: payLink } }) => { - const { data: [{id: paymentId}, {value: {value: sum}}] } = await deep.select({ - _by_path_item: { item_id: { _eq: payLink.id }, group_id: { _eq: paymentTreeId } }, - }); - console.log('paymentId', paymentId); - console.log('sum', sum); - const options = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: 5500, - Receipt: { - Items: [{ - Name: 'Test item', - Price: sum, - Quantity: 1, - Amount: 5500, - PaymentMethod: 'prepayment', - PaymentObject: 'service', - Tax: 'none', - }], - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - Taxation: 'usn_income', - }, - }; - - const initResult = await await sendInit({ - ...options, - OrderId: paymentId, - CustomerKey: deep.linkId, - PayType: 'T', - }); - - if(initResult.error != undefined) { - console.log('initResult.error:', initResult.error); - const { data: [{ id: error }] } = await deep.insert({ - type_id: PError, - to_id: payLink.id, - string: { data: { value: initResult.error } }, - }); - - console.log({error}); - } else { - console.log('Payment URL:', initResult.response.PaymentURL); - const { data: [{ id: url }] } = await deep.insert({ - type_id: PUrl, - to_id: payLink.id, - string: { data: { value: initResult.response.PaymentURL } }, - }); - console.log({url}) - } - - return initResult; - }; - - - - const { data: [{ id: payInsertHandlerId }] } = await deep.insert({ - type_id: SyncTextFile, - in: { data: [{ - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'joinInsertHandlerFile' } }, - }, { - from_id: dockerSupportsJs, - type_id: Handler, - in: { data: [{ - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'joinInsertHandler' } }, - }, { - type_id: HandleInsert, - from_id: PPay, - in: { data: [{ - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'joinInsertHandle' } }, - }] }, - }] }, - }] }, - string: { data: { value: insertHandlerDependencies+payInsertHandler.toString() - .replace('process.env.PAYMENT_TEST_TERMINAL_KEY', process.env.PAYMENT_TEST_TERMINAL_KEY) - .replace('process.env.PAYMENT_TEST_EMAIL', process.env.PAYMENT_TEST_EMAIL) - .replace('process.env.PAYMENT_TEST_PHONE', process.env.PAYMENT_TEST_PHONE) } }, - }); - - console.log({ payInsertHandlerId }); - - { - // Tests - - // Setup + const apolloClient = generateApolloClient({ + path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE + ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') + ? false + : true, + // admin token in prealpha deep secret key + // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', + }); - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); + const unloginedDeep = new DeepClient({ apolloClient }); - const { - data: [{ id: Product }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - }); + const sendInit = async (noTokenData) => { + const options = { + ...noTokenData, + Token: generateToken(noTokenData), + }; - console.log({ Product }); + return init(options); + }; - // Types + const guest = await unloginedDeep.guest(); + const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); + const admin = await guestDeep.login({ + linkId: await guestDeep.id('deep', 'admin'), + }); + const deep = new DeepClient({ deep: guestDeep, ...admin }); - const PPayment = await deep.id( - '@deep-foundation/payment-individual-entity', - 'Payment' + const User = await deep.id('@deep-foundation/core', 'User'); + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + const Join = await deep.id('@deep-foundation/core', 'Join'); + const Contain = await deep.id('@deep-foundation/core', 'Contain'); + const Value = await deep.id('@deep-foundation/core', 'Value'); + const String = await deep.id('@deep-foundation/core', 'String'); + const Package = await deep.id('@deep-foundation/core', 'Package'); + + const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); + const dockerSupportsJs = await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' ); - const PObject = await deep.id( - '@deep-foundation/payment-individual-entity', - 'Object' + const Handler = await deep.id('@deep-foundation/core', 'Handler'); + const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); + const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); + + const Tree = await deep.id('@deep-foundation/core', 'Tree'); + const TreeIncludeNode = await deep.id( + '@deep-foundation/core', + 'TreeIncludeNode' ); - const PSum = await deep.id( - '@deep-foundation/payment-individual-entity', - 'Sum' + const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); + const TreeIncludeDown = await deep.id( + '@deep-foundation/core', + 'TreeIncludeDown' ); - const PPay = await deep.id( - '@deep-foundation/payment-individual-entity', - 'Pay' + + const Rule = await deep.id('@deep-foundation/core', 'Rule'); + const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); + const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); + const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); + const Selector = await deep.id('@deep-foundation/core', 'Selector'); + const SelectorInclude = await deep.id( + '@deep-foundation/core', + 'SelectorInclude' ); - const PUrl = await deep.id( - '@deep-foundation/payment-individual-entity', - 'Url' + const SelectorExclude = await deep.id( + '@deep-foundation/core', + 'SelectorExclude' ); - const PPayed = await deep.id( - '@deep-foundation/payment-individual-entity', - 'Payed' + const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); + const containTree = await deep.id('@deep-foundation/core', 'containTree'); + const AllowInsertType = await deep.id( + '@deep-foundation/core', + 'AllowInsertType' ); - const PError = await deep.id( - '@deep-foundation/payment-individual-entity', - 'Error' + const AllowDeleteType = await deep.id( + '@deep-foundation/core', + 'AllowDeleteType' ); + const SelectorFilter = await deep.id( + '@deep-foundation/core', + 'SelectorFilter' + ); + const BoolExp = await deep.id('@deep-foundation/core', 'BoolExp'); + const usersId = await deep.id('deep', 'users'); - - const paymentTreeId = await deep.id(packageName, 'paymentTreeId'); + const BasePayment = await deep.id('@deep-foundation/payment', 'Payment'); + const BaseObject = await deep.id('@deep-foundation/payment', 'Object'); + const BaseSum = await deep.id('@deep-foundation/payment', 'Sum'); + const BasePay = await deep.id('@deep-foundation/payment', 'Pay'); + const BaseUrl = await deep.id('@deep-foundation/payment', 'Url'); + const BasePayed = await deep.id('@deep-foundation/payment', 'Payed'); + const BaseError = await deep.id('@deep-foundation/payment', 'Error'); - // Init + const { + data: [{ id: packageId }], + } = await deep.insert({ + type_id: Package, + string: { data: { value: packageName } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + out: { + data: [ + { + type_id: Join, + to_id: await deep.id('deep', 'users', 'packages'), + }, + { + type_id: Join, + to_id: await deep.id('deep', 'admin'), + }, + ], + }, + }); - const testInit = async () => { - const { - data: [{ id: paymentId }], - } = await deep.insert({ - type_id: PPayment, - }); + console.log({ packageId }); - const { - data: [{ id: sumId }], - } = await deep.insert({ - type_id: PSum, - from_id: deep.linkId, - to_id: paymentId, - }); + const { + data: [{ id: PPayment }], + } = await deep.insert({ + type_id: BasePayment, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Payment' } }, + }, + }, + }); - console.log({ sum: sumId }); + console.log({ PPayment: PPayment }); - const { - data: [{ id: productId }], - } = await deep.insert({ - type_id: Product, - }); + const { + data: [{ id: PObject }], + } = await deep.insert({ + type_id: BaseObject, + from_id: PPayment, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Object' } }, + }, + }, + }); - console.log({ product: productId }); + console.log({ PObject: PObject }); - const { - data: [{ id: objectId }], - } = await deep.insert({ - type_id: PObject, - from_id: paymentId, - to_id: productId, - }); + const { + data: [{ id: PSum }], + } = await deep.insert({ + type_id: BaseSum, + from_id: Any, + to_id: PPayment, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Sum' } }, + }, + }, + }); + + console.log({ PSum: PSum }); + + const { + data: [{ id: PPay }], + } = await deep.insert({ + type_id: BasePay, + from_id: Any, + to_id: PSum, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Pay' } }, + }, + }, + }); - console.log({ object: objectId }); + console.log({ PPay: PPay }); + + const { + data: [{ id: PUrl }], + } = await deep.insert({ + type_id: BaseUrl, + from_id: Any, + to_id: PPay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Url' } }, + }, + }, + }); + console.log({ PUrl: PUrl }); + const { + data: [{ id: PPayed }], + } = await deep.insert({ + type_id: BasePayed, + from_id: Any, + to_id: PUrl, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Payed' } }, + }, + }, + }); + + console.log({ PPayed: PPayed }); + + const { + data: [{ id: PError }], + } = await deep.insert({ + type_id: BaseError, + from_id: Any, + to_id: PPay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Error' } }, + }, + }, + }); + + console.log({ PError: PError }); + + const { + data: [{ id: paymentTreeId }], + } = await deep.insert({ + type_id: Tree, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'paymentTree' } }, + }, + }, + out: { + data: [ + { + type_id: TreeIncludeNode, + to_id: PPayment, + }, + { + type_id: TreeIncludeUp, + to_id: PSum, + }, + { + type_id: TreeIncludeDown, + to_id: PObject, + }, + { + type_id: TreeIncludeUp, + to_id: PError, + }, + { + type_id: TreeIncludeUp, + to_id: PPayed, + }, + { + type_id: TreeIncludeUp, + to_id: PPay, + }, + { + type_id: TreeIncludeUp, + to_id: PUrl, + }, + ], + }, + }); + + const { + data: [{ id: PSumProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'SumProvider' } }, + }, + }, + }); + + console.log({ PSumProvider: PSumProvider }); + + const { + data: [{ id: PTinkoffProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'TinkoffProvider' } }, + }, + }, + }); + + console.log({ PTinkoffProvider: PTinkoffProvider }); + + // Handlers + + const insertHandlerDependencies = ` + const crypto = require('crypto'); + const axios = require('axios'); + const errorsConverter = ${errorsConverter}; + const getError = ${getError}; + const getUrl = ${getUrl}; + const _generateToken = ${_generateToken}; + const generateTestToken = ${generateTestToken}; + const init = ${init}; + const sendInit = ${sendInit}; + `; + + const payInsertHandler = async ({ _, data: { newLink: payLink } }) => { const { - data: [{ id: payId }], - } = await deep.insert({ - type_id: PPay, - from_id: deep.linkId, - to_id: sumId, + data: [ + { id: paymentId }, + { + value: { value: sum }, + }, + ], + } = await deep.select({ + _by_path_item: { + item_id: { _eq: payLink.id }, + group_id: { _eq: paymentTreeId }, + }, + }); + console.log('paymentId', paymentId); + console.log('sum', sum); + const options = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: 5500, + Receipt: { + Items: [ + { + Name: 'Test item', + Price: sum, + Quantity: 1, + Amount: 5500, + PaymentMethod: 'prepayment', + PaymentObject: 'service', + Tax: 'none', + }, + ], + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + Taxation: 'usn_income', + }, + }; + + const initResult = await await sendInit({ + ...options, + OrderId: paymentId, + CustomerKey: deep.linkId, + PayType: 'T', }); - console.log({ pay: payId }); + if (initResult.error != undefined) { + console.log('initResult.error:', initResult.error); + const { + data: [{ id: error }], + } = await deep.insert({ + type_id: PError, + to_id: payLink.id, + string: { data: { value: initResult.error } }, + }); + + console.log({ error }); + } else { + console.log('Payment URL:', initResult.response.PaymentURL); + const { + data: [{ id: url }], + } = await deep.insert({ + type_id: PUrl, + to_id: payLink.id, + string: { data: { value: initResult.response.PaymentURL } }, + }); + console.log({ url }); + } - sleep(5000); + return initResult; + }; - const payIdChildrenMp = await deep.select({ - _by_path_item: { item_id: { _eq: payId }, group_id: { _eq: paymentTreeId } }, - }) + const { + data: [{ id: payInsertHandlerId }], + } = await deep.insert({ + type_id: SyncTextFile, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'joinInsertHandlerFile' } }, + }, + { + from_id: dockerSupportsJs, + type_id: Handler, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'joinInsertHandler' } }, + }, + { + type_id: HandleInsert, + from_id: PPay, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'joinInsertHandle' } }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + string: { + data: { + value: + insertHandlerDependencies + + payInsertHandler + .toString() + .replace( + 'process.env.PAYMENT_TEST_TERMINAL_KEY', + process.env.PAYMENT_TEST_TERMINAL_KEY + ) + .replace( + 'process.env.PAYMENT_TEST_EMAIL', + process.env.PAYMENT_TEST_EMAIL + ) + .replace( + 'process.env.PAYMENT_TEST_PHONE', + process.env.PAYMENT_TEST_PHONE + ), + }, + }, + }); - if(payIdChildrenMp.error) { - console.log('payIdChildrenMp.error:', payIdChildrenMp.error); - } else { - console.log('payIdChildrenMp.data', payIdChildrenMp.data) - } - }; + console.log({ payInsertHandlerId }); + + { + // Tests + + // Setup + + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); - await testInit(); + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + }); - // Confirm + console.log({ Product }); - // const testConfirm = async () => { - // const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - // const page = await browser.newPage(); + // Types - // await payInBrowser({ - // browser, - // page, - // url: initResult.response.PaymentURL, - // }); + const PPayment = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Payment' + ); + const PObject = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Object' + ); + const PSum = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Sum' + ); + const PPay = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Pay' + ); + const PUrl = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Url' + ); + const PPayed = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Payed' + ); + const PError = await deep.id( + '@deep-foundation/payment-individual-entity', + 'Error' + ); - // await testConfirm(); - } + const paymentTreeId = await deep.id(packageName, 'paymentTreeId'); + + // Init + + const testInit = async () => { + const { + data: [{ id: paymentId }], + } = await deep.insert({ + type_id: PPayment, + }); + + const { + data: [{ id: sumId }], + } = await deep.insert({ + type_id: PSum, + from_id: deep.linkId, + to_id: paymentId, + }); + + console.log({ sum: sumId }); + + const { + data: [{ id: productId }], + } = await deep.insert({ + type_id: Product, + }); + + console.log({ product: productId }); + + const { + data: [{ id: objectId }], + } = await deep.insert({ + type_id: PObject, + from_id: paymentId, + to_id: productId, + }); + + console.log({ object: objectId }); + + const { + data: [{ id: payId }], + } = await deep.insert({ + type_id: PPay, + from_id: deep.linkId, + to_id: sumId, + }); + + console.log({ pay: payId }); + + sleep(5000); + + const payIdChildrenMp = await deep.select({ + _by_path_item: { + item_id: { _eq: payId }, + group_id: { _eq: paymentTreeId }, + }, + }); + + if (payIdChildrenMp.error) { + console.log('payIdChildrenMp.error:', payIdChildrenMp.error); + } else { + console.log('payIdChildrenMp.data', payIdChildrenMp.data); + } + }; + + await testInit(); + + // Confirm + + // const testConfirm = async () => { + // const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + // const page = await browser.newPage(); + + // await payInBrowser({ + // browser, + // page, + // url: initResult.response.PaymentURL, + // }); + + // await testConfirm(); + } }; f(); - From 1d2c90a5e2bf2e4f40229b802f31d343a4cccc93 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 3 Aug 2022 18:35:06 +0600 Subject: [PATCH 006/683] Do not import. "Hardcode" --- payment-eacq.cjs => payments-eacq.cjs | 159 +++++++++++++++++++++----- 1 file changed, 133 insertions(+), 26 deletions(-) rename payment-eacq.cjs => payments-eacq.cjs (70%) diff --git a/payment-eacq.cjs b/payments-eacq.cjs similarity index 70% rename from payment-eacq.cjs rename to payments-eacq.cjs index 776063b9..3f71ac60 100644 --- a/payment-eacq.cjs +++ b/payments-eacq.cjs @@ -3,16 +3,6 @@ require('graphql'); require('lodash'); require('subscriptions-transport-ws'); require('dotenv').config(); -const { init } = require('./tinkoff-split/init'); -const { - getUrl, - getError, - _generateToken, - generateToken, - errorsConverter, - generateTestToken, - sleep, -} = require('./tinkoff-split/_utils'); const { generateApolloClient } = require('@deep-foundation/hasura/client'); const { DeepClient } = require('@deep-foundation/deeplinks/imports/client'); const { @@ -120,6 +110,123 @@ const f = async () => { const unloginedDeep = new DeepClient({ apolloClient }); + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + + const getError = errorCode => errorCode === '0' ? undefined : (errorsConverter[errorCode] || 'broken'); + + const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map(key => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + const hash = crypto + .createHash('sha256') + .update(dataString) + .digest('hex'); + return hash; + }; + + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { ...restData, Password: process.env.PAYMENT_EACQ_TERMINAL_PASSWORD }; + return _generateToken(dataWithPassword); + }; + + const getUrl = method => `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; + const getMarketUrl = method => `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; + + const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)); + + const init = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Init'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + const sendInit = async (noTokenData) => { const options = { ...noTokenData, @@ -195,13 +302,13 @@ const f = async () => { const BoolExp = await deep.id('@deep-foundation/core', 'BoolExp'); const usersId = await deep.id('deep', 'users'); - const BasePayment = await deep.id('@deep-foundation/payment', 'Payment'); - const BaseObject = await deep.id('@deep-foundation/payment', 'Object'); - const BaseSum = await deep.id('@deep-foundation/payment', 'Sum'); - const BasePay = await deep.id('@deep-foundation/payment', 'Pay'); - const BaseUrl = await deep.id('@deep-foundation/payment', 'Url'); - const BasePayed = await deep.id('@deep-foundation/payment', 'Payed'); - const BaseError = await deep.id('@deep-foundation/payment', 'Error'); + const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); + const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); + const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); + const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); + const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); + const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); + const BaseError = await deep.id('@deep-foundation/payments', 'Error'); const { data: [{ id: packageId }], @@ -439,7 +546,7 @@ const f = async () => { const getError = ${getError}; const getUrl = ${getUrl}; const _generateToken = ${_generateToken}; - const generateTestToken = ${generateTestToken}; + const generateToken = ${generateToken}; const init = ${init}; const sendInit = ${sendInit}; `; @@ -598,35 +705,35 @@ const f = async () => { // Types const PPayment = await deep.id( - '@deep-foundation/payment-individual-entity', + packageName, 'Payment' ); const PObject = await deep.id( - '@deep-foundation/payment-individual-entity', + packageName, 'Object' ); const PSum = await deep.id( - '@deep-foundation/payment-individual-entity', + packageName, 'Sum' ); const PPay = await deep.id( - '@deep-foundation/payment-individual-entity', + packageName, 'Pay' ); const PUrl = await deep.id( - '@deep-foundation/payment-individual-entity', + packageName, 'Url' ); const PPayed = await deep.id( - '@deep-foundation/payment-individual-entity', + packageName, 'Payed' ); const PError = await deep.id( - '@deep-foundation/payment-individual-entity', + packageName, 'Error' ); - const paymentTreeId = await deep.id(packageName, 'paymentTreeId'); + const paymentTreeId = await deep.id(packageName, 'paymentTree'); // Init From 106fb2c06f04221eb69c4763755e8c0f57d6dd25 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 5 Aug 2022 16:46:53 +0600 Subject: [PATCH 007/683] Debugging handler --- payments-eacq.cjs | 50 ++++++++++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 3f71ac60..2a815316 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -299,7 +299,7 @@ const f = async () => { '@deep-foundation/core', 'SelectorFilter' ); - const BoolExp = await deep.id('@deep-foundation/core', 'BoolExp'); + const Query = await deep.id('@deep-foundation/core', 'Query'); const usersId = await deep.id('deep', 'users'); const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); @@ -540,18 +540,22 @@ const f = async () => { // Handlers const insertHandlerDependencies = ` - const crypto = require('crypto'); - const axios = require('axios'); - const errorsConverter = ${errorsConverter}; - const getError = ${getError}; - const getUrl = ${getUrl}; - const _generateToken = ${_generateToken}; - const generateToken = ${generateToken}; - const init = ${init}; - const sendInit = ${sendInit}; + const errorsConverter = ${JSON.stringify(errorsConverter)}; + const getError = ${getError}; + const getUrl = ${getUrl}; + const _generateToken = ${_generateToken}; + const generateToken = ${generateToken}; + const init = ${init}; + const sendInit = ${sendInit}; `; - const payInsertHandler = async ({ _, data: { newLink: payLink } }) => { + const payInsertHandler = async ({ _, data: { newLink: payLink } }) => { + console.log("Before deps"); + return {data: `newLink is ${newLink}`}; + 'DEPENDENCIES' + const crypto = require('crypto'); + const axios = require('axios'); + console.log("payInsertHandler is called") const { data: [ { id: paymentId }, @@ -663,9 +667,12 @@ const f = async () => { string: { data: { value: - insertHandlerDependencies + payInsertHandler .toString() + .replace( + "'DEPENDENCIES'", + insertHandlerDependencies + ) .replace( 'process.env.PAYMENT_TEST_TERMINAL_KEY', process.env.PAYMENT_TEST_TERMINAL_KEY @@ -735,6 +742,8 @@ const f = async () => { const paymentTreeId = await deep.id(packageName, 'paymentTree'); + console.log({paymentTreeId}) + // Init const testInit = async () => { @@ -784,18 +793,19 @@ const f = async () => { sleep(5000); - const payIdChildrenMp = await deep.select({ - _by_path_item: { - item_id: { _eq: payId }, - group_id: { _eq: paymentTreeId }, + const payDownMp = await deep.select({ + down: { + link_id: { _eq: payId }, + tree_id: { _eq: paymentTreeId }, }, - }); + }); - if (payIdChildrenMp.error) { - console.log('payIdChildrenMp.error:', payIdChildrenMp.error); + if (payDownMp.error) { + console.log('payDownMp.error:', payDownMp.error); } else { - console.log('payIdChildrenMp.data', payIdChildrenMp.data); + console.log('payDownMp.data', payDownMp.data); } + }; await testInit(); From 21a02cae032ddedd788305ce447037be3b128947 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 5 Aug 2022 17:07:14 +0600 Subject: [PATCH 008/683] Add contains --- payments-eacq.cjs | 65 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 2a815316..3fdb3549 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -607,6 +607,14 @@ const f = async () => { type_id: PError, to_id: payLink.id, string: { data: { value: initResult.error } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + } }); console.log({ error }); @@ -618,6 +626,14 @@ const f = async () => { type_id: PUrl, to_id: payLink.id, string: { data: { value: initResult.response.PaymentURL } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + } }); console.log({ url }); } @@ -705,6 +721,14 @@ const f = async () => { type_id: Type, from_id: Any, to_id: Any, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + } }); console.log({ Product }); @@ -751,6 +775,14 @@ const f = async () => { data: [{ id: paymentId }], } = await deep.insert({ type_id: PPayment, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + } }); const { @@ -759,6 +791,14 @@ const f = async () => { type_id: PSum, from_id: deep.linkId, to_id: paymentId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + } }); console.log({ sum: sumId }); @@ -767,6 +807,14 @@ const f = async () => { data: [{ id: productId }], } = await deep.insert({ type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + } }); console.log({ product: productId }); @@ -777,6 +825,14 @@ const f = async () => { type_id: PObject, from_id: paymentId, to_id: productId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + } }); console.log({ object: objectId }); @@ -787,6 +843,15 @@ const f = async () => { type_id: PPay, from_id: deep.linkId, to_id: sumId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + } + }); console.log({ pay: payId }); From 233bb9d0c4dd3294fc0d9a0d1145f7531cee2445 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 6 Aug 2022 10:44:39 +0600 Subject: [PATCH 009/683] Add Add replaces --- payments-eacq.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 3fdb3549..7e0998fd 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -691,15 +691,15 @@ const f = async () => { ) .replace( 'process.env.PAYMENT_TEST_TERMINAL_KEY', - process.env.PAYMENT_TEST_TERMINAL_KEY + `'${process.env.PAYMENT_TEST_TERMINAL_KEY}'` ) .replace( 'process.env.PAYMENT_TEST_EMAIL', - process.env.PAYMENT_TEST_EMAIL + `'${process.env.PAYMENT_TEST_EMAIL}'` ) .replace( 'process.env.PAYMENT_TEST_PHONE', - process.env.PAYMENT_TEST_PHONE + `'${process.env.PAYMENT_TEST_PHONE}'` ), }, }, From 67d49902651b11c18efc1cf7759ea3e8924e9872 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 6 Aug 2022 10:44:48 +0600 Subject: [PATCH 010/683] Add replaces --- payments-eacq.cjs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 7e0998fd..9fdd22a7 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -689,6 +689,10 @@ const f = async () => { "'DEPENDENCIES'", insertHandlerDependencies ) + .replace( + "packageName", + `'${packageName}'` + ) .replace( 'process.env.PAYMENT_TEST_TERMINAL_KEY', `'${process.env.PAYMENT_TEST_TERMINAL_KEY}'` @@ -700,7 +704,13 @@ const f = async () => { .replace( 'process.env.PAYMENT_TEST_PHONE', `'${process.env.PAYMENT_TEST_PHONE}'` - ), + ) + .replace( + 'process.env.PAYMENT_EACQ_AND_TEST_URL', + `'${process.env.PAYMENT_EACQ_AND_TEST_URL}'` + ) + .replace('process.env.PAYMENT_EACQ_TERMINAL_PASSWORD', + `'${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}'`), }, }, }); From e96321449149a14c04cd4e2d722a03cdc5a47d47 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 6 Aug 2022 10:45:56 +0600 Subject: [PATCH 011/683] Find paymentTreeId in pay insert handler --- payments-eacq.cjs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 9fdd22a7..cd3006d5 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -549,13 +549,10 @@ const f = async () => { const sendInit = ${sendInit}; `; - const payInsertHandler = async ({ _, data: { newLink: payLink } }) => { - console.log("Before deps"); - return {data: `newLink is ${newLink}`}; + const payInsertHandler = async ({ deep, data: { newLink } }) => { 'DEPENDENCIES' - const crypto = require('crypto'); - const axios = require('axios'); - console.log("payInsertHandler is called") + const payLink = newLink; + const paymentTreeId = await deep.id(packageName, 'paymentTree'); const { data: [ { id: paymentId }, From 7e6a27011a1deb9223bfea86bcedd17dae53cb24 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 6 Aug 2022 10:46:31 +0600 Subject: [PATCH 012/683] Use down relation instead of _by_path_item --- payments-eacq.cjs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index cd3006d5..e541ce47 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -550,22 +550,23 @@ const f = async () => { `; const payInsertHandler = async ({ deep, data: { newLink } }) => { + // const crypto = require('crypto'); + // const axios = require('axios'); 'DEPENDENCIES' const payLink = newLink; + console.log("payInsertHandler is called"); const paymentTreeId = await deep.id(packageName, 'paymentTree'); const { data: [ { id: paymentId }, - { - value: { value: sum }, - }, + { value: sum } ], - } = await deep.select({ - _by_path_item: { - item_id: { _eq: payLink.id }, - group_id: { _eq: paymentTreeId }, + } = await await deep.select({ + down: { + link_id: { _eq: payLink.id }, + tree_id: { _eq: paymentTreeId }, }, - }); + }); console.log('paymentId', paymentId); console.log('sum', sum); const options = { @@ -858,7 +859,6 @@ const f = async () => { }, ], } - }); console.log({ pay: payId }); From c2dcd75d93f452fb97c2b029136d2df09c2e7c69 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 8 Aug 2022 18:43:52 +0600 Subject: [PATCH 013/683] Add requires, use require parameter --- payments-eacq.cjs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index e541ce47..840b9622 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -549,12 +549,11 @@ const f = async () => { const sendInit = ${sendInit}; `; - const payInsertHandler = async ({ deep, data: { newLink } }) => { - // const crypto = require('crypto'); - // const axios = require('axios'); + const payInsertHandler = async ({ deep, require, data: { newLink } }) => { 'DEPENDENCIES' + const crypto = require('crypto'); + const axios = require('axios'); const payLink = newLink; - console.log("payInsertHandler is called"); const paymentTreeId = await deep.id(packageName, 'paymentTree'); const { data: [ From 339a4bf6642d74a91871dbcd99fdf095210007e9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 10:55:01 +0600 Subject: [PATCH 014/683] Add confirm --- payments-eacq.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 840b9622..96d5b012 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -236,6 +236,7 @@ const f = async () => { return init(options); }; + }); const guest = await unloginedDeep.guest(); const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); const admin = await guestDeep.login({ From d41fee627a5cd29a19d569ea47931bdbc51b02a8 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 10:55:17 +0600 Subject: [PATCH 015/683] Add confirm --- payments-eacq.cjs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 96d5b012..2d998bb9 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -236,7 +236,39 @@ const f = async () => { return init(options); }; + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: options, }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const guest = await unloginedDeep.guest(); const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); const admin = await guestDeep.login({ From 4eb0fef655e6bb878b68911a4e6c95a311a9f2f1 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 10:55:30 +0600 Subject: [PATCH 016/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 2d998bb9..1b189aa7 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -622,7 +622,7 @@ const f = async () => { }, }; - const initResult = await await sendInit({ + const initResult = await sendInit({ ...options, OrderId: paymentId, CustomerKey: deep.linkId, From 112f0a0ef184d2eb1bb0ea4517fed21f043da21b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 10:55:40 +0600 Subject: [PATCH 017/683] Add notification url to init --- payments-eacq.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 1b189aa7..bfd8d092 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -626,6 +626,7 @@ const f = async () => { ...options, OrderId: paymentId, CustomerKey: deep.linkId, + NotificationURL: process.env.PAYMENT_EACQ_AND_TEST_URL, PayType: 'T', }); From 7fc48e3f993877425d96f9f86d43e0070b237b32 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 10:59:49 +0600 Subject: [PATCH 018/683] Add notifications route handler --- payments-eacq.cjs | 90 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index bfd8d092..5e405ebd 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -748,6 +748,96 @@ const f = async () => { console.log({ payInsertHandlerId }); + const port = 443; + const route = '/tinkoff/payment-eacq'; + + const tinkoffNotificationhandlerDependencies = ` + const errorsConverter = ${JSON.stringify(errorsConverter)}; + const getError = ${getError}; + const confirm = ${confirm}; + `; + + const tinkoffNotificationHandler = async (req, res, next, {deep, require,gql}) => { + /* Dependencies placeholder */ + if(req.Status == "AUTORIZED") { + await confirm({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: req.PaymentId, + Amount: req.Amount, + Token: req.Token, + Receipt: req.Receipt, + }) + } else if(req.Status == "CONFIRMED") { + await deep.insert({ + type_id: PPayed, + to_id: req.OrderId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + } + }); + } else if (req.Status == "CANCELED") { + await deep.insert({ + type_id: PError, + to_id: req.OrderId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + string: { data: { value: getError(req.ErrorCode) } }, + }, + ], + } + }); + } + res.send('ok'); + }; + + await deep.insert({ + type_id: await deep.id('@deep-foundation/core', 'Port'), + number: { data: { value: port } }, + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + from: { data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'RouterStringUse'), + string: { data: { value: route } }, + from: { data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + out: { data: { + type_id: await deep.id('@deep-foundation/core', 'HandleRoute'), + to: { data: { + type_id: await deep.id('@deep-foundation/core', 'Handler'), + from_id: await deep.id('@deep-foundation/core', 'dockerSupportsJs'), + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'Contain'), + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { data: { value: 'tinkoffNotificationHandler' } }, + } }, + to: { data: { + type_id: await deep.id('@deep-foundation/core', 'SyncTextFile'), + string: { data: { + value: tinkoffNotificationHandler.toString() + .replace("/* Dependencies placeholder */", tinkoffNotificationhandlerDependencies), + } }, + } }, + } }, + } }, + } }, + } }, + } }, + } }, + }, { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + }) + { // Tests From d533f70eb7e490e4e2ade33970513dc57b605249 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 11:00:20 +0600 Subject: [PATCH 019/683] Throw if error in tests --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 5e405ebd..88d936dd 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -996,7 +996,7 @@ const f = async () => { }); if (payDownMp.error) { - console.log('payDownMp.error:', payDownMp.error); + throw payDownMp.error; } else { console.log('payDownMp.data', payDownMp.data); } From cceacc1a6f60a1e4b1a837f9ecdac134e6f747ae Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 11:01:03 +0600 Subject: [PATCH 020/683] Update confirm to use init test and get url from there --- payments-eacq.cjs | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 88d936dd..4ae49858 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1007,17 +1007,22 @@ const f = async () => { // Confirm - // const testConfirm = async () => { - // const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - // const page = await browser.newPage(); + const testConfirm = async () => { + await testInit(); + const {data: [{value: url}]} = await deep.select({ + type_id: PUrl + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); - // await payInBrowser({ - // browser, - // page, - // url: initResult.response.PaymentURL, - // }); + await payInBrowser({ + browser, + page, + url, + }); - // await testConfirm(); + await testConfirm(); } }; From 3834c4113476af053fbf1014e8dc8ab63f2bcda5 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 11:04:12 +0600 Subject: [PATCH 021/683] Fix typo --- payments-eacq.cjs | 449 ++++++++++++++++++++++++---------------------- 1 file changed, 238 insertions(+), 211 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 4ae49858..53e07c2c 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -111,86 +111,89 @@ const f = async () => { const unloginedDeep = new DeepClient({ apolloClient }); const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', }; - const getError = errorCode => errorCode === '0' ? undefined : (errorsConverter[errorCode] || 'broken'); + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; const _generateToken = (dataWithPassword) => { const dataString = Object.keys(dataWithPassword) .sort((a, b) => a.localeCompare(b)) - .map(key => dataWithPassword[key]) + .map((key) => dataWithPassword[key]) .reduce((acc, item) => `${acc}${item}`, ''); - const hash = crypto - .createHash('sha256') - .update(dataString) - .digest('hex'); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); return hash; }; - + const generateToken = (data) => { const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { ...restData, Password: process.env.PAYMENT_EACQ_TERMINAL_PASSWORD }; + const dataWithPassword = { + ...restData, + Password: process.env.PAYMENT_EACQ_TERMINAL_PASSWORD, + }; return _generateToken(dataWithPassword); }; - const getUrl = method => `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; - const getMarketUrl = method => `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; + const getUrl = (method) => + `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; + const getMarketUrl = (method) => + `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; - const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)); + const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const init = async (options) => { try { @@ -202,9 +205,9 @@ const f = async () => { }, data: options, }); - + const error = getError(response.data.ErrorCode); - + const d = { error, request: options, @@ -212,7 +215,7 @@ const f = async () => { }; debug(d); options?.log && options.log(d); - + return { error, request: options, @@ -243,9 +246,9 @@ const f = async () => { url: getUrl('Confirm'), data: options, }); - + const error = getError(response.data.ErrorCode); - + const d = { error, request: options, @@ -253,7 +256,7 @@ const f = async () => { }; debug(d); options?.log && options.log(d); - + return { error, request: options, @@ -267,7 +270,6 @@ const f = async () => { }; } }; - const guest = await unloginedDeep.guest(); const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); @@ -582,23 +584,20 @@ const f = async () => { const sendInit = ${sendInit}; `; - const payInsertHandler = async ({ deep, require, data: { newLink } }) => { - 'DEPENDENCIES' - const crypto = require('crypto'); - const axios = require('axios'); - const payLink = newLink; - const paymentTreeId = await deep.id(packageName, 'paymentTree'); + const payInsertHandler = async ({ deep, require, data: { newLink } }) => { + 'DEPENDENCIES'; + const crypto = require('crypto'); + const axios = require('axios'); + const payLink = newLink; + const paymentTreeId = await deep.id(packageName, 'paymentTree'); const { - data: [ - { id: paymentId }, - { value: sum } - ], + data: [{ id: paymentId }, { value: sum }], } = await await deep.select({ down: { - link_id: { _eq: payLink.id }, - tree_id: { _eq: paymentTreeId }, + link_id: { _eq: payLink.id }, + tree_id: { _eq: paymentTreeId }, }, - }); + }); console.log('paymentId', paymentId); console.log('sum', sum); const options = { @@ -645,7 +644,7 @@ const f = async () => { from_id: deep.linkId, }, ], - } + }, }); console.log({ error }); @@ -664,7 +663,7 @@ const f = async () => { from_id: deep.linkId, }, ], - } + }, }); console.log({ url }); } @@ -713,35 +712,30 @@ const f = async () => { }, string: { data: { - value: - payInsertHandler - .toString() - .replace( - "'DEPENDENCIES'", - insertHandlerDependencies - ) - .replace( - "packageName", - `'${packageName}'` - ) - .replace( - 'process.env.PAYMENT_TEST_TERMINAL_KEY', - `'${process.env.PAYMENT_TEST_TERMINAL_KEY}'` - ) - .replace( - 'process.env.PAYMENT_TEST_EMAIL', - `'${process.env.PAYMENT_TEST_EMAIL}'` - ) - .replace( - 'process.env.PAYMENT_TEST_PHONE', - `'${process.env.PAYMENT_TEST_PHONE}'` - ) - .replace( - 'process.env.PAYMENT_EACQ_AND_TEST_URL', - `'${process.env.PAYMENT_EACQ_AND_TEST_URL}'` - ) - .replace('process.env.PAYMENT_EACQ_TERMINAL_PASSWORD', - `'${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}'`), + value: payInsertHandler + .toString() + .replace("'DEPENDENCIES'", insertHandlerDependencies) + .replace('packageName', `'${packageName}'`) + .replace( + 'process.env.PAYMENT_TEST_TERMINAL_KEY', + `'${process.env.PAYMENT_TEST_TERMINAL_KEY}'` + ) + .replace( + 'process.env.PAYMENT_TEST_EMAIL', + `'${process.env.PAYMENT_TEST_EMAIL}'` + ) + .replace( + 'process.env.PAYMENT_TEST_PHONE', + `'${process.env.PAYMENT_TEST_PHONE}'` + ) + .replace( + 'process.env.PAYMENT_EACQ_AND_TEST_URL', + `'${process.env.PAYMENT_EACQ_AND_TEST_URL}'` + ) + .replace( + 'process.env.PAYMENT_EACQ_TERMINAL_PASSWORD', + `'${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}'` + ), }, }, }); @@ -757,17 +751,22 @@ const f = async () => { const confirm = ${confirm}; `; - const tinkoffNotificationHandler = async (req, res, next, {deep, require,gql}) => { + const tinkoffNotificationHandler = async ( + req, + res, + next, + { deep, require, gql } + ) => { /* Dependencies placeholder */ - if(req.Status == "AUTORIZED") { - await confirm({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: req.PaymentId, - Amount: req.Amount, - Token: req.Token, - Receipt: req.Receipt, - }) - } else if(req.Status == "CONFIRMED") { + if (req.Status == 'AUTORIZED') { + await confirm({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: req.PaymentId, + Amount: req.Amount, + Token: req.Token, + Receipt: req.Receipt, + }); + } else if (req.Status == 'CONFIRMED') { await deep.insert({ type_id: PPayed, to_id: req.OrderId, @@ -778,9 +777,9 @@ const f = async () => { from_id: deep.linkId, }, ], - } + }, }); - } else if (req.Status == "CANCELED") { + } else if (req.Status == 'CANCELED') { await deep.insert({ type_id: PError, to_id: req.OrderId, @@ -792,51 +791,98 @@ const f = async () => { string: { data: { value: getError(req.ErrorCode) } }, }, ], - } + }, }); } res.send('ok'); - }; - - await deep.insert({ - type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { data: { value: port } }, - in: { data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - from: { data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), - in: { data: { - type_id: await deep.id('@deep-foundation/core', 'RouterStringUse'), - string: { data: { value: route } }, - from: { data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), - out: { data: { - type_id: await deep.id('@deep-foundation/core', 'HandleRoute'), - to: { data: { - type_id: await deep.id('@deep-foundation/core', 'Handler'), - from_id: await deep.id('@deep-foundation/core', 'dockerSupportsJs'), - in: { data: { - type_id: await deep.id('@deep-foundation/core', 'Contain'), - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { data: { value: 'tinkoffNotificationHandler' } }, - } }, - to: { data: { - type_id: await deep.id('@deep-foundation/core', 'SyncTextFile'), - string: { data: { - value: tinkoffNotificationHandler.toString() - .replace("/* Dependencies placeholder */", tinkoffNotificationhandlerDependencies), - } }, - } }, - } }, - } }, - } }, - } }, - } }, - } }, - }, { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - }) + }; + + await deep.insert( + { + type_id: await deep.id('@deep-foundation/core', 'Port'), + number: { data: { value: port } }, + in: { + data: { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'RouterStringUse' + ), + string: { data: { value: route } }, + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + out: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'HandleRoute' + ), + to: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'Handler' + ), + from_id: await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ), + in: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'Contain' + ), + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + to: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'SyncTextFile' + ), + string: { + data: { + value: tinkoffNotificationHandler + .toString() + .replace( + '/* Dependencies placeholder */', + tinkoffNotificationhandlerDependencies + ), + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + } + ); { // Tests @@ -859,45 +905,24 @@ const f = async () => { from_id: deep.linkId, }, ], - } + }, }); console.log({ Product }); // Types - const PPayment = await deep.id( - packageName, - 'Payment' - ); - const PObject = await deep.id( - packageName, - 'Object' - ); - const PSum = await deep.id( - packageName, - 'Sum' - ); - const PPay = await deep.id( - packageName, - 'Pay' - ); - const PUrl = await deep.id( - packageName, - 'Url' - ); - const PPayed = await deep.id( - packageName, - 'Payed' - ); - const PError = await deep.id( - packageName, - 'Error' - ); + const PPayment = await deep.id(packageName, 'Payment'); + const PObject = await deep.id(packageName, 'Object'); + const PSum = await deep.id(packageName, 'Sum'); + const PPay = await deep.id(packageName, 'Pay'); + const PUrl = await deep.id(packageName, 'Url'); + const PPayed = await deep.id(packageName, 'Payed'); + const PError = await deep.id(packageName, 'Error'); const paymentTreeId = await deep.id(packageName, 'paymentTree'); - console.log({paymentTreeId}) + console.log({ paymentTreeId }); // Init @@ -913,7 +938,7 @@ const f = async () => { from_id: deep.linkId, }, ], - } + }, }); const { @@ -929,7 +954,7 @@ const f = async () => { from_id: deep.linkId, }, ], - } + }, }); console.log({ sum: sumId }); @@ -945,7 +970,7 @@ const f = async () => { from_id: deep.linkId, }, ], - } + }, }); console.log({ product: productId }); @@ -963,7 +988,7 @@ const f = async () => { from_id: deep.linkId, }, ], - } + }, }); console.log({ object: objectId }); @@ -981,7 +1006,7 @@ const f = async () => { from_id: deep.linkId, }, ], - } + }, }); console.log({ pay: payId }); @@ -990,17 +1015,16 @@ const f = async () => { const payDownMp = await deep.select({ down: { - link_id: { _eq: payId }, - tree_id: { _eq: paymentTreeId }, + link_id: { _eq: payId }, + tree_id: { _eq: paymentTreeId }, }, - }); + }); if (payDownMp.error) { throw payDownMp.error; } else { console.log('payDownMp.data', payDownMp.data); } - }; await testInit(); @@ -1009,8 +1033,10 @@ const f = async () => { const testConfirm = async () => { await testInit(); - const {data: [{value: url}]} = await deep.select({ - type_id: PUrl + const { + data: [{ value: url }], + } = await deep.select({ + type_id: PUrl, }); const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); @@ -1021,6 +1047,7 @@ const f = async () => { page, url, }); + }; await testConfirm(); } From 340d0d72beab7fef3111e5f8b2bc49548fad7348 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 11:08:01 +0600 Subject: [PATCH 022/683] Throw if payment is not confirmed after confirm --- payments-eacq.cjs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 53e07c2c..f6dc3f06 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1047,6 +1047,18 @@ const f = async () => { page, url, }); + + sleep(5000); + + const { + data, + } = await deep.select({ + type_id: PPayed, + }); + + if(data.length === 0){ + throw new Error('Payment is not confirmed'); + } }; await testConfirm(); From c8468f435806e1ef4ec95f3d9f2f31688c2a3633 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 12:55:05 +0600 Subject: [PATCH 023/683] Add dependencies --- payments-eacq.cjs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f6dc3f06..a5552e24 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -582,6 +582,8 @@ const f = async () => { const generateToken = ${generateToken}; const init = ${init}; const sendInit = ${sendInit}; + const paymentTreeId = ${paymentTreeId}; + const PError = ${PError}; `; const payInsertHandler = async ({ deep, require, data: { newLink } }) => { @@ -589,7 +591,6 @@ const f = async () => { const crypto = require('crypto'); const axios = require('axios'); const payLink = newLink; - const paymentTreeId = await deep.id(packageName, 'paymentTree'); const { data: [{ id: paymentId }, { value: sum }], } = await await deep.select({ From c6736f19426f60f138e2e47acd8b23e9ecc4ac82 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 12:55:23 +0600 Subject: [PATCH 024/683] Change notification handler port --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index a5552e24..6add3649 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -743,7 +743,7 @@ const f = async () => { console.log({ payInsertHandlerId }); - const port = 443; + const port = 5237; const route = '/tinkoff/payment-eacq'; const tinkoffNotificationhandlerDependencies = ` From 9b295d6c033a4bfac04751354ab7c913b8357b99 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 12:55:47 +0600 Subject: [PATCH 025/683] Temporarily comment notification handler --- payments-eacq.cjs | 172 +++++++++++++++++++++++----------------------- 1 file changed, 86 insertions(+), 86 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 6add3649..79ddb867 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -798,92 +798,92 @@ const f = async () => { res.send('ok'); }; - await deep.insert( - { - type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { data: { value: port } }, - in: { - data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), - in: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'RouterStringUse' - ), - string: { data: { value: route } }, - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), - out: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'HandleRoute' - ), - to: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'Handler' - ), - from_id: await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ), - in: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'Contain' - ), - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - to: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'SyncTextFile' - ), - string: { - data: { - value: tinkoffNotificationHandler - .toString() - .replace( - '/* Dependencies placeholder */', - tinkoffNotificationhandlerDependencies - ), - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - } - ); + // await deep.insert( + // { + // type_id: await deep.id('@deep-foundation/core', 'Port'), + // number: { data: { value: port } }, + // in: { + // data: { + // type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + // from: { + // data: { + // type_id: await deep.id('@deep-foundation/core', 'Router'), + // in: { + // data: { + // type_id: await deep.id( + // '@deep-foundation/core', + // 'RouterStringUse' + // ), + // string: { data: { value: route } }, + // from: { + // data: { + // type_id: await deep.id('@deep-foundation/core', 'Route'), + // out: { + // data: { + // type_id: await deep.id( + // '@deep-foundation/core', + // 'HandleRoute' + // ), + // to: { + // data: { + // type_id: await deep.id( + // '@deep-foundation/core', + // 'Handler' + // ), + // from_id: await deep.id( + // '@deep-foundation/core', + // 'dockerSupportsJs' + // ), + // in: { + // data: { + // type_id: await deep.id( + // '@deep-foundation/core', + // 'Contain' + // ), + // // from_id: deep.linkId, + // from_id: await deep.id('deep', 'admin'), + // string: { + // data: { + // value: 'tinkoffNotificationHandler', + // }, + // }, + // }, + // }, + // to: { + // data: { + // type_id: await deep.id( + // '@deep-foundation/core', + // 'SyncTextFile' + // ), + // string: { + // data: { + // value: tinkoffNotificationHandler + // .toString() + // .replace( + // '/* Dependencies placeholder */', + // tinkoffNotificationhandlerDependencies + // ), + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // { + // name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + // } + // ); { // Tests From 84195e926c85a75e160c55f85b4b4e33c4c9a26a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 12:55:59 +0600 Subject: [PATCH 026/683] Organize --- payments-eacq.cjs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 79ddb867..b63c1344 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -890,6 +890,20 @@ const f = async () => { // Setup + // Types + + const PPayment = await deep.id(packageName, 'Payment'); + const PObject = await deep.id(packageName, 'Object'); + const PSum = await deep.id(packageName, 'Sum'); + const PPay = await deep.id(packageName, 'Pay'); + const PUrl = await deep.id(packageName, 'Url'); + const PPayed = await deep.id(packageName, 'Payed'); + const PError = await deep.id(packageName, 'Error'); + + const paymentTreeId = await deep.id(packageName, 'paymentTree'); + + console.log({ paymentTreeId }); + const Type = await deep.id('@deep-foundation/core', 'Type'); const Any = await deep.id('@deep-foundation/core', 'Any'); From b45464d26163a6ca06da6f178ee1aba0271793ee Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 12:56:12 +0600 Subject: [PATCH 027/683] Organize --- payments-eacq.cjs | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index b63c1344..d7b640db 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -925,19 +925,23 @@ const f = async () => { console.log({ Product }); - // Types + // Instances - const PPayment = await deep.id(packageName, 'Payment'); - const PObject = await deep.id(packageName, 'Object'); - const PSum = await deep.id(packageName, 'Sum'); - const PPay = await deep.id(packageName, 'Pay'); - const PUrl = await deep.id(packageName, 'Url'); - const PPayed = await deep.id(packageName, 'Payed'); - const PError = await deep.id(packageName, 'Error'); - - const paymentTreeId = await deep.id(packageName, 'paymentTree'); + const { + data: [{ id: productId }], + } = await deep.insert({ + type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); - console.log({ paymentTreeId }); + console.log({ product: productId }); // Init From a152aa4acc87bc8d1839ac96a843021843576f90 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 12:56:25 +0600 Subject: [PATCH 028/683] Organize --- payments-eacq.cjs | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index d7b640db..a982daf8 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -978,22 +978,6 @@ const f = async () => { console.log({ sum: sumId }); - const { - data: [{ id: productId }], - } = await deep.insert({ - type_id: Product, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ product: productId }); - const { data: [{ id: objectId }], } = await deep.insert({ From 76e5542fc5208b384350c2c629a6316d9105c1a1 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 12:56:49 +0600 Subject: [PATCH 029/683] Temporarily comment testConfirm --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index a982daf8..41b6b29f 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1064,7 +1064,7 @@ const f = async () => { } }; - await testConfirm(); + // await testConfirm(); } }; From 08d744d9efddc09f0ae3fd4f4ca916577de5d8d1 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 13:26:31 +0600 Subject: [PATCH 030/683] Add contain dependency --- payments-eacq.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 41b6b29f..21d2d144 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -582,6 +582,7 @@ const f = async () => { const generateToken = ${generateToken}; const init = ${init}; const sendInit = ${sendInit}; + const Contain = ${Contain}; const paymentTreeId = ${paymentTreeId}; const PError = ${PError}; `; From 3a1f1e7140d348ca2b53fe1579b871a72533493e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 13:27:46 +0600 Subject: [PATCH 031/683] Move requires in dependencies --- payments-eacq.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 21d2d144..c5ae434d 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -585,12 +585,12 @@ const f = async () => { const Contain = ${Contain}; const paymentTreeId = ${paymentTreeId}; const PError = ${PError}; + const crypto = require('crypto'); + const axios = require('axios'); `; const payInsertHandler = async ({ deep, require, data: { newLink } }) => { 'DEPENDENCIES'; - const crypto = require('crypto'); - const axios = require('axios'); const payLink = newLink; const { data: [{ id: paymentId }, { value: sum }], From 2c763a0b8777b647bb6c4288ce70f78bebd28068 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 20:39:10 +0600 Subject: [PATCH 032/683] Do not use `debug` --- payments-eacq.cjs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index c5ae434d..cdf9c089 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -213,14 +213,10 @@ const f = async () => { request: options, response: response.data, }; - debug(d); + options?.log && options.log(d); - return { - error, - request: options, - response: response.data, - }; + return d; } catch (error) { return { error, From 314f9ae5c4c46de12ca6d6ec593e9449447e0d95 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 20:39:34 +0600 Subject: [PATCH 033/683] Use dependencies placeholder comment --- payments-eacq.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index cdf9c089..0b850f27 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -586,7 +586,7 @@ const f = async () => { `; const payInsertHandler = async ({ deep, require, data: { newLink } }) => { - 'DEPENDENCIES'; + /* Dependencies placeholder */ const payLink = newLink; const { data: [{ id: paymentId }, { value: sum }], @@ -712,7 +712,7 @@ const f = async () => { data: { value: payInsertHandler .toString() - .replace("'DEPENDENCIES'", insertHandlerDependencies) + .replace("/* Dependencies placeholder */", insertHandlerDependencies) .replace('packageName', `'${packageName}'`) .replace( 'process.env.PAYMENT_TEST_TERMINAL_KEY', From b50d7e4482309ab591c6ae7812e7c2b95119fcee Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 20:39:44 +0600 Subject: [PATCH 034/683] Use number value for sum --- payments-eacq.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 0b850f27..0ed7ad53 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -963,6 +963,7 @@ const f = async () => { type_id: PSum, from_id: deep.linkId, to_id: paymentId, + number: {data: {value: 150}}, in: { data: [ { From b5cb69e7011e6274482a2d3c756969df2c4352b5 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 20:40:03 +0600 Subject: [PATCH 035/683] Temporarily comment handler part --- payments-eacq.cjs | 82 ++++++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 40 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 0ed7ad53..61c27126 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -627,46 +627,48 @@ const f = async () => { PayType: 'T', }); - if (initResult.error != undefined) { - console.log('initResult.error:', initResult.error); - const { - data: [{ id: error }], - } = await deep.insert({ - type_id: PError, - to_id: payLink.id, - string: { data: { value: initResult.error } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ error }); - } else { - console.log('Payment URL:', initResult.response.PaymentURL); - const { - data: [{ id: url }], - } = await deep.insert({ - type_id: PUrl, - to_id: payLink.id, - string: { data: { value: initResult.response.PaymentURL } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ url }); - } - - return initResult; + console.log({initResult}) + + // if (initResult.error != undefined) { + // console.log('initResult.error:', initResult.error); + // const { + // data: [{ id: error }], + // } = await deep.insert({ + // type_id: PError, + // to_id: payLink.id, + // string: { data: { value: initResult.error } }, + // in: { + // data: [ + // { + // type_id: Contain, + // from_id: deep.linkId, + // }, + // ], + // }, + // }); + // console.log({ error }); + // } else { + // console.log('Payment URL:', initResult.response.PaymentURL); + // const { + // data: [{ id: url }], + // } = await deep.insert({ + // type_id: PUrl, + // to_id: payLink.id, + // string: { data: { value: initResult.response.PaymentURL } }, + // in: { + // data: [ + // { + // type_id: Contain, + // from_id: deep.linkId, + // }, + // ], + // }, + // }); + // console.log({ url }); + // } + + // return initResult; + return {data: "dataString"}; }; const { From 701cf7fd88c692fe2146f1f667e97766d7f39296 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 9 Aug 2022 20:40:15 +0600 Subject: [PATCH 036/683] Update options --- payments-eacq.cjs | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 61c27126..5984e34d 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -596,27 +596,34 @@ const f = async () => { tree_id: { _eq: paymentTreeId }, }, }); - console.log('paymentId', paymentId); - console.log('sum', sum); + console.log({paymentId}); + console.log({sum}); const options = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: payLink.id, Amount: 5500, + Description: 'Test shopping', + CustomerKey: deep.linkId, + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, Receipt: { - Items: [ - { - Name: 'Test item', - Price: sum, - Quantity: 1, - Amount: 5500, - PaymentMethod: 'prepayment', - PaymentObject: 'service', - Tax: 'none', - }, - ], + Items: [{ + Name: 'Test item', + Price: sum, + Quantity: 1, + Amount: 5500, + PaymentMethod: 'prepayment', + PaymentObject: 'service', + Tax: 'none', + }], Email: process.env.PAYMENT_TEST_EMAIL, Phone: process.env.PAYMENT_TEST_PHONE, Taxation: 'usn_income', - }, + } }; const initResult = await sendInit({ From 9b615c00889ed46a985fb81f6db4ca10dc500c91 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 10 Aug 2022 00:06:58 +0600 Subject: [PATCH 037/683] Write handler as strig --- payments-eacq.cjs | 268 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 242 insertions(+), 26 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 5984e34d..2a823803 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -189,9 +189,9 @@ const f = async () => { }; const getUrl = (method) => - `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; + `"${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}"`; const getMarketUrl = (method) => - `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; + `"${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}"`; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); @@ -719,30 +719,246 @@ const f = async () => { }, string: { data: { - value: payInsertHandler - .toString() - .replace("/* Dependencies placeholder */", insertHandlerDependencies) - .replace('packageName', `'${packageName}'`) - .replace( - 'process.env.PAYMENT_TEST_TERMINAL_KEY', - `'${process.env.PAYMENT_TEST_TERMINAL_KEY}'` - ) - .replace( - 'process.env.PAYMENT_TEST_EMAIL', - `'${process.env.PAYMENT_TEST_EMAIL}'` - ) - .replace( - 'process.env.PAYMENT_TEST_PHONE', - `'${process.env.PAYMENT_TEST_PHONE}'` - ) - .replace( - 'process.env.PAYMENT_EACQ_AND_TEST_URL', - `'${process.env.PAYMENT_EACQ_AND_TEST_URL}'` - ) - .replace( - 'process.env.PAYMENT_EACQ_TERMINAL_PASSWORD', - `'${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}'` - ), + value: /*javascript*/ ` + async ({ deep, require, data: { newLink } }) => { + const crypto = require('crypto'); + const axios = require('axios'); + + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + const getUrl = (method) => + "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; + const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => acc.toString() + item.toString(), ''); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + return hash; + }; + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + ...restData, + Password: "${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}", + }; + return _generateToken(dataWithPassword); + }; + const init = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Init'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + + options?.log && options.log(d); + + return d; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + const sendInit = async (noTokenData) => { + const options = { + ...noTokenData, + Token: generateToken(noTokenData), + }; + + return init(options); + }; + const payLink = newLink; + const { + data: [{ id: paymentId }, { value: sum }], + } = await await deep.select({ + down: { + link_id: { _eq: payLink.id }, + tree_id: { _eq: ${paymentTreeId} }, + }, + }); + console.log({paymentId}); + console.log({sum}); + const options = { + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + OrderId: payLink.id, + Amount: 5500, + Description: 'Test shopping', + CustomerKey: deep.linkId, + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: "${process.env.PAYMENT_TEST_EMAIL}", + Phone: "${process.env.PAYMENT_TEST_PHONE}", + }, + Receipt: { + Items: [{ + Name: 'Test item', + Price: sum, + Quantity: 1, + Amount: 5500, + PaymentMethod: 'prepayment', + PaymentObject: 'service', + Tax: 'none', + }], + Email: "${process.env.PAYMENT_TEST_EMAIL}", + Phone: "${process.env.PAYMENT_TEST_PHONE}", + Taxation: 'usn_income', + } + }; + + const initResult = await sendInit({ + ...options, + OrderId: paymentId, + CustomerKey: deep.linkId, + NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_URL}", + PayType: 'T', + }); + + console.log({initResult}) + + // if (initResult.error != undefined) { + // console.log('initResult.error:', initResult.error); + // const { + // data: [{ id: error }], + // } = await deep.insert({ + // type_id: PError, + // to_id: payLink.id, + // string: { data: { value: initResult.error } }, + // in: { + // data: [ + // { + // type_id: Contain, + // from_id: deep.linkId, + // }, + // ], + // }, + // }); + // console.log({ error }); + // } else { + // console.log('Payment URL:', initResult.response.PaymentURL); + // const { + // data: [{ id: url }], + // } = await deep.insert({ + // type_id: PUrl, + // to_id: payLink.id, + // string: { data: { value: initResult.response.PaymentURL } }, + // in: { + // data: [ + // { + // type_id: Contain, + // from_id: deep.linkId, + // }, + // ], + // }, + // }); + // console.log({ url }); + // } + + // return initResult; + return {data: "dataString"}; + }; + ` + + // payInsertHandler + // .toString() + // .replace("/* Dependencies placeholder */", insertHandlerDependencies) + // .replace('packageName', `'${packageName}'`) + // .replace( + // 'process.env.PAYMENT_TEST_TERMINAL_KEY', + // `'"${process.env.PAYMENT_TEST_TERMINAL_KEY}"'` + // ) + // .replace( + // 'process.env.PAYMENT_TEST_EMAIL', + // `'"${process.env.PAYMENT_TEST_EMAIL}"'` + // ) + // .replace( + // 'process.env.PAYMENT_TEST_PHONE', + // `'"${process.env.PAYMENT_TEST_PHONE}"'` + // ) + // .replace( + // 'process.env.PAYMENT_EACQ_AND_TEST_URL', + // `'"${process.env.PAYMENT_EACQ_AND_TEST_URL}"'` + // ) + // .replace( + // 'process.env.PAYMENT_EACQ_TERMINAL_PASSWORD', + // `'"${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}"'` + // ) + // .replace( + // 'process.env.PAYMENT_EACQ_TERMINAL_PASSWORD' + // `'"${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}"'` + // ) + // , }, }, }); From 96058ee820f6cb12081afb5c989cd84dacb76a99 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 10 Aug 2022 00:26:49 +0600 Subject: [PATCH 038/683] Remove javascript comment --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 2a823803..f024304e 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -719,7 +719,7 @@ const f = async () => { }, string: { data: { - value: /*javascript*/ ` + value: ` async ({ deep, require, data: { newLink } }) => { const crypto = require('crypto'); const axios = require('axios'); From 56ac97965cc2cdc55bd60b9fa93ad626b2be0020 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 10 Aug 2022 00:43:08 +0600 Subject: [PATCH 039/683] Get value property from value property to get sum --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f024304e..59590f15 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -840,7 +840,7 @@ const f = async () => { }; const payLink = newLink; const { - data: [{ id: paymentId }, { value: sum }], + data: [{ id: paymentId }, { value: {value: sum} }], } = await await deep.select({ down: { link_id: { _eq: payLink.id }, From 7f1060239796a3b0921e6d248c4fd7271f174619 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 11 Aug 2022 11:46:42 +0600 Subject: [PATCH 040/683] Write route hanler as a string --- payments-eacq.cjs | 352 ++++++++++++++++++++++++++++------------------ 1 file changed, 214 insertions(+), 138 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 59590f15..18c234c0 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -965,147 +965,223 @@ const f = async () => { console.log({ payInsertHandlerId }); - const port = 5237; - const route = '/tinkoff/payment-eacq'; - - const tinkoffNotificationhandlerDependencies = ` - const errorsConverter = ${JSON.stringify(errorsConverter)}; - const getError = ${getError}; - const confirm = ${confirm}; - `; - - const tinkoffNotificationHandler = async ( - req, - res, - next, - { deep, require, gql } - ) => { - /* Dependencies placeholder */ - if (req.Status == 'AUTORIZED') { - await confirm({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: req.PaymentId, - Amount: req.Amount, - Token: req.Token, - Receipt: req.Receipt, - }); - } else if (req.Status == 'CONFIRMED') { - await deep.insert({ - type_id: PPayed, - to_id: req.OrderId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - } else if (req.Status == 'CANCELED') { - await deep.insert({ - type_id: PError, - to_id: req.OrderId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - string: { data: { value: getError(req.ErrorCode) } }, + await deep.insert( + { + type_id: await deep.id('@deep-foundation/core', 'Port'), + number: { data: { value: process.env.PAYMENT_EACQ_AND_TEST_PORT } }, + in: { + data: { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'RouterStringUse' + ), + string: { data: { value: process.env.PAYMENT_EACQ_AND_TEST_ROUTE } }, + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + out: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'HandleRoute' + ), + to: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'Handler' + ), + from_id: await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ), + in: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'Contain' + ), + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + to: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'SyncTextFile' + ), + string: { + data: { + value: ` + async ( + req, + res, + next, + { deep, require, gql } + ) => { + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + const getUrl = (method) => + "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + if (req.Status == 'AUTORIZED') { + await confirm({ + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + PaymentId: req.PaymentId, + Amount: req.Amount, + Token: req.Token, + Receipt: req.Receipt, + }); + } else if (req.Status == 'CONFIRMED') { + await deep.insert({ + type_id: ${PPayed}, + to_id: req.OrderId, + in: { + data: [ + { + type_id: ${Contain}, + from_id: deep.linkId, + }, + ], + }, + }); + } else if (req.Status == 'CANCELED') { + await deep.insert({ + type_id: ${PError}, + to_id: req.OrderId, + in: { + data: [ + { + type_id: ${Contain}, + from_id: deep.linkId, + string: { data: { value: getError(req.ErrorCode) } }, + }, + ], + }, + }); + } + res.send('ok'); + }; + ` + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, }, - ], + }, }, - }); + }, + }, + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', } - res.send('ok'); - }; - - // await deep.insert( - // { - // type_id: await deep.id('@deep-foundation/core', 'Port'), - // number: { data: { value: port } }, - // in: { - // data: { - // type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - // from: { - // data: { - // type_id: await deep.id('@deep-foundation/core', 'Router'), - // in: { - // data: { - // type_id: await deep.id( - // '@deep-foundation/core', - // 'RouterStringUse' - // ), - // string: { data: { value: route } }, - // from: { - // data: { - // type_id: await deep.id('@deep-foundation/core', 'Route'), - // out: { - // data: { - // type_id: await deep.id( - // '@deep-foundation/core', - // 'HandleRoute' - // ), - // to: { - // data: { - // type_id: await deep.id( - // '@deep-foundation/core', - // 'Handler' - // ), - // from_id: await deep.id( - // '@deep-foundation/core', - // 'dockerSupportsJs' - // ), - // in: { - // data: { - // type_id: await deep.id( - // '@deep-foundation/core', - // 'Contain' - // ), - // // from_id: deep.linkId, - // from_id: await deep.id('deep', 'admin'), - // string: { - // data: { - // value: 'tinkoffNotificationHandler', - // }, - // }, - // }, - // }, - // to: { - // data: { - // type_id: await deep.id( - // '@deep-foundation/core', - // 'SyncTextFile' - // ), - // string: { - // data: { - // value: tinkoffNotificationHandler - // .toString() - // .replace( - // '/* Dependencies placeholder */', - // tinkoffNotificationhandlerDependencies - // ), - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // { - // name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - // } - // ); + ); { // Tests From ba1958e9390542eb73f3c9d0837c8cd10e5a4ea2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 11 Aug 2022 13:25:51 +0600 Subject: [PATCH 041/683] Use find to get links from mp --- payments-eacq.cjs | 110 +++++----------------------------------------- 1 file changed, 10 insertions(+), 100 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 18c234c0..a51b44ac 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -585,99 +585,6 @@ const f = async () => { const axios = require('axios'); `; - const payInsertHandler = async ({ deep, require, data: { newLink } }) => { - /* Dependencies placeholder */ - const payLink = newLink; - const { - data: [{ id: paymentId }, { value: sum }], - } = await await deep.select({ - down: { - link_id: { _eq: payLink.id }, - tree_id: { _eq: paymentTreeId }, - }, - }); - console.log({paymentId}); - console.log({sum}); - const options = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: payLink.id, - Amount: 5500, - Description: 'Test shopping', - CustomerKey: deep.linkId, - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - Receipt: { - Items: [{ - Name: 'Test item', - Price: sum, - Quantity: 1, - Amount: 5500, - PaymentMethod: 'prepayment', - PaymentObject: 'service', - Tax: 'none', - }], - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - Taxation: 'usn_income', - } - }; - - const initResult = await sendInit({ - ...options, - OrderId: paymentId, - CustomerKey: deep.linkId, - NotificationURL: process.env.PAYMENT_EACQ_AND_TEST_URL, - PayType: 'T', - }); - - console.log({initResult}) - - // if (initResult.error != undefined) { - // console.log('initResult.error:', initResult.error); - // const { - // data: [{ id: error }], - // } = await deep.insert({ - // type_id: PError, - // to_id: payLink.id, - // string: { data: { value: initResult.error } }, - // in: { - // data: [ - // { - // type_id: Contain, - // from_id: deep.linkId, - // }, - // ], - // }, - // }); - // console.log({ error }); - // } else { - // console.log('Payment URL:', initResult.response.PaymentURL); - // const { - // data: [{ id: url }], - // } = await deep.insert({ - // type_id: PUrl, - // to_id: payLink.id, - // string: { data: { value: initResult.response.PaymentURL } }, - // in: { - // data: [ - // { - // type_id: Contain, - // from_id: deep.linkId, - // }, - // ], - // }, - // }); - // console.log({ url }); - // } - - // return initResult; - return {data: "dataString"}; - }; - const { data: [{ id: payInsertHandlerId }], } = await deep.insert({ @@ -841,12 +748,16 @@ const f = async () => { const payLink = newLink; const { data: [{ id: paymentId }, { value: {value: sum} }], - } = await await deep.select({ + } mpDownPay = await await deep.select({ down: { link_id: { _eq: payLink.id }, tree_id: { _eq: ${paymentTreeId} }, }, }); + + const paymentId = mpDownPay.find(link => link.type_id == ${PPayment}).id; + const sum = mpDownPay.find(link => link.type_id == ${PSum}).value.value; + console.log({paymentId}); console.log({sum}); const options = { @@ -1315,18 +1226,17 @@ const f = async () => { sleep(5000); - const payDownMp = await deep.select({ + const mpDownPay = await deep.select({ down: { link_id: { _eq: payId }, tree_id: { _eq: paymentTreeId }, }, }); - if (payDownMp.error) { - throw payDownMp.error; - } else { - console.log('payDownMp.data', payDownMp.data); - } + const hasUrl = mpDownPay.find(link => link.type_id == PUrl); + if(!hasUrl) { + throw new Error("Url not found."); + } }; await testInit(); From 72091cd6070d62e4b19b6b4c8418825298f62750 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 11 Aug 2022 13:30:12 +0600 Subject: [PATCH 042/683] Use find to get links from mp --- payments-eacq.cjs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index a51b44ac..68efd0e5 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -746,17 +746,15 @@ const f = async () => { return init(options); }; const payLink = newLink; - const { - data: [{ id: paymentId }, { value: {value: sum} }], - } mpDownPay = await await deep.select({ + const mpDownPay = await await deep.select({ down: { link_id: { _eq: payLink.id }, tree_id: { _eq: ${paymentTreeId} }, }, }); - const paymentId = mpDownPay.find(link => link.type_id == ${PPayment}).id; - const sum = mpDownPay.find(link => link.type_id == ${PSum}).value.value; + const paymentId = mpDownPay.data.find(link => link.type_id == ${PPayment}).id; + const sum = mpDownPay.data.find(link => link.type_id == ${PSum}).value.value; console.log({paymentId}); console.log({sum}); From c7ff0fd4f3639b4b4c4368423f05eec51721804f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 11 Aug 2022 14:52:53 +0600 Subject: [PATCH 043/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 68efd0e5..801cde3f 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1231,7 +1231,7 @@ const f = async () => { }, }); - const hasUrl = mpDownPay.find(link => link.type_id == PUrl); + const hasUrl = mpDownPay.data.find(link => link.type_id == PUrl); if(!hasUrl) { throw new Error("Url not found."); } From 3a579c198654aea489f8dc5749948326d4ea511c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 12:06:23 +0600 Subject: [PATCH 044/683] Update env var names --- payments-eacq.cjs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 801cde3f..d8659c3c 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -790,7 +790,7 @@ const f = async () => { ...options, OrderId: paymentId, CustomerKey: deep.linkId, - NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_URL}", + NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", PayType: 'T', }); @@ -877,7 +877,7 @@ const f = async () => { await deep.insert( { type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { data: { value: process.env.PAYMENT_EACQ_AND_TEST_PORT } }, + number: { data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT } }, in: { data: { type_id: await deep.id('@deep-foundation/core', 'RouterListening'), @@ -890,7 +890,7 @@ const f = async () => { '@deep-foundation/core', 'RouterStringUse' ), - string: { data: { value: process.env.PAYMENT_EACQ_AND_TEST_ROUTE } }, + string: { data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE } }, from: { data: { type_id: await deep.id('@deep-foundation/core', 'Route'), @@ -1015,8 +1015,6 @@ const f = async () => { request: options, response: response.data, }; - debug(d); - options?.log && options.log(d); return { error, From 4ad39cd9482b8ce4382ce8b31e49ced7a3ced063 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 12:22:32 +0600 Subject: [PATCH 045/683] Use PRICE constant --- payments-eacq.cjs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index d8659c3c..bbd6c8ac 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -761,7 +761,7 @@ const f = async () => { const options = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", OrderId: payLink.id, - Amount: 5500, + Amount: ${PRICE}, Description: 'Test shopping', CustomerKey: deep.linkId, Language: 'ru', @@ -775,7 +775,7 @@ const f = async () => { Name: 'Test item', Price: sum, Quantity: 1, - Amount: 5500, + Amount: ${PRICE}, PaymentMethod: 'prepayment', PaymentObject: 'service', Tax: 'none', @@ -1130,7 +1130,7 @@ const f = async () => { console.log({ Product }); - // Instances + // Deep link instances const { data: [{ id: productId }], @@ -1148,6 +1148,10 @@ const f = async () => { console.log({ product: productId }); + // Constants + + const PRICE = 5500; + // Init const testInit = async () => { @@ -1269,7 +1273,12 @@ const f = async () => { } }; - // await testConfirm(); + await testConfirm(); + } + + + const testCancelAfterPayBeforeConfirmFullPrice = async () => { + } }; From f9d2cb68d0f1adeaf172de024eb439e1103dbc1a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 12:44:24 +0600 Subject: [PATCH 046/683] Add cancel tests --- payments-eacq.cjs | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index bbd6c8ac..5bede9d9 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1276,10 +1276,35 @@ const f = async () => { await testConfirm(); } + // Cancel + + const testCancel = async () => { + const testCancelAfterPay = async () => { + const testCancelBeforeConfirmFullPrice = async () => { + + } + const testCancelBeforeConfirmCustomPriceX2 = async () => { + + } + const testCancelAfterConfirmFullPrice = async () => { + + } + const testCancelAfterConfirmCustomPriceX2 = async () => { + + } + } + const testCancelBeforePay = async () => { + + } + } + const testCancelAfterPayBeforeConfirmFullPrice = async () => { - + await testConfirm(); + } + + const testCancelAfterPayAfterConfirmCustom }; f(); From 1ec9a3f6c3a6a7b251852946f0918057f4960d33 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 13:15:52 +0600 Subject: [PATCH 047/683] Add getCardList --- payments-eacq.cjs | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 5bede9d9..13236b1f 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -193,6 +193,43 @@ const f = async () => { const getMarketUrl = (method) => `"${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}"`; + const getCardList = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCardList'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode || '0'); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + + const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const init = async (options) => { From 819a781b5d2581a3cd81a77b2757492b650f6cb2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 13:16:00 +0600 Subject: [PATCH 048/683] Add getState --- payments-eacq.cjs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 13236b1f..51efc6ed 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -193,6 +193,38 @@ const f = async () => { const getMarketUrl = (method) => `"${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}"`; + const getState = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetState'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + const getCardList = async (options) => { try { const response = await axios({ From 83d90c7b1484e7b71acc856d63263f0dfd805a2c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 13:16:20 +0600 Subject: [PATCH 049/683] Add and use testFinishAuthorize --- payments-eacq.cjs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 51efc6ed..08b41798 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1310,9 +1310,7 @@ const f = async () => { await testInit(); - // Confirm - - const testConfirm = async () => { + const testFinishAuthorize = async () => { await testInit(); const { data: [{ value: url }], @@ -1328,6 +1326,11 @@ const f = async () => { page, url, }); + } + + const testConfirm = async () => { + + testFinishAuthorize(); sleep(5000); From 106f72fe3932b9c111da1592c9f6da50b24728ab Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 13:16:35 +0600 Subject: [PATCH 050/683] Add tests --- payments-eacq.cjs | 45 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 08b41798..fcffd3b2 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1370,13 +1370,52 @@ const f = async () => { } } + const testGetState = async () => { + await testFinishAuthorize(); - const testCancelAfterPayBeforeConfirmFullPrice = async () => { - await testConfirm(); + const paymentId = await deep.select({type_id: PPayment}); + + const noTokenGetStateData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + }; + + const newGetStateData = { + ...noTokenGetStateData, + PaymentId: paymentId, + }; + + + const options = { + ...newGetStateData, + Token: generateToken(newGetStateData), + }; + + + const result = await getState(options); + expect(result.error).to.equal(undefined); } - const testCancelAfterPayAfterConfirmCustom + await testGetState(); + + const testGetCardList = async () => { + await testFinishAuthorize(); + + const noTokenGetCardListData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: customerKey, + }; + + const options = { + ...noTokenGetStateData, + Token: generateToken(noTokenGetStateData), + }; + + const result = await getCardList(options); + + expect(result.error).to.equal(undefined); + } + }; f(); From b742b7b40af75586d7ac74c69d3a070d8bbd7cfe Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 13:18:57 +0600 Subject: [PATCH 051/683] Move tests to callTests --- payments-eacq.cjs | 138 +++++++++++++++++++++------------------------- 1 file changed, 64 insertions(+), 74 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index fcffd3b2..68b02449 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1159,13 +1159,7 @@ const f = async () => { } ); - { - // Tests - - // Setup - - // Types - + const callTests = async () => { const PPayment = await deep.id(packageName, 'Payment'); const PObject = await deep.id(packageName, 'Object'); const PSum = await deep.id(packageName, 'Sum'); @@ -1199,8 +1193,6 @@ const f = async () => { console.log({ Product }); - // Deep link instances - const { data: [{ id: productId }], } = await deep.insert({ @@ -1217,12 +1209,8 @@ const f = async () => { console.log({ product: productId }); - // Constants - const PRICE = 5500; - // Init - const testInit = async () => { const { data: [{ id: paymentId }], @@ -1346,76 +1334,78 @@ const f = async () => { }; await testConfirm(); - } - // Cancel + const testCancel = async () => { + const testCancelAfterPay = async () => { + const testCancelBeforeConfirmFullPrice = async () => { - const testCancel = async () => { - const testCancelAfterPay = async () => { - const testCancelBeforeConfirmFullPrice = async () => { - - } - const testCancelBeforeConfirmCustomPriceX2 = async () => { - - } - const testCancelAfterConfirmFullPrice = async () => { - + } + const testCancelBeforeConfirmCustomPriceX2 = async () => { + + } + const testCancelAfterConfirmFullPrice = async () => { + + } + const testCancelAfterConfirmCustomPriceX2 = async () => { + + } } - const testCancelAfterConfirmCustomPriceX2 = async () => { - + const testCancelBeforePay = async () => { + } } - const testCancelBeforePay = async () => { - + + const testGetState = async () => { + await testFinishAuthorize(); + + const paymentId = await deep.select({type_id: PPayment}); + + const noTokenGetStateData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + }; + + const newGetStateData = { + ...noTokenGetStateData, + PaymentId: paymentId, + }; + + + const options = { + ...newGetStateData, + Token: generateToken(newGetStateData), + }; + + + const result = await getState(options); + + expect(result.error).to.equal(undefined); } + + await testGetState(); + + const testGetCardList = async () => { + await testFinishAuthorize(); + + const noTokenGetCardListData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: customerKey, + }; + + const options = { + ...noTokenGetStateData, + Token: generateToken(noTokenGetStateData), + }; + + const result = await getCardList(options); + + expect(result.error).to.equal(undefined); + } + + await testGetCardList(); } - const testGetState = async () => { - await testFinishAuthorize(); - - const paymentId = await deep.select({type_id: PPayment}); - - const noTokenGetStateData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - }; - - const newGetStateData = { - ...noTokenGetStateData, - PaymentId: paymentId, - }; - - - const options = { - ...newGetStateData, - Token: generateToken(newGetStateData), - }; - - - const result = await getState(options); - - expect(result.error).to.equal(undefined); - } - - await testGetState(); + await callTests(); - const testGetCardList = async () => { - await testFinishAuthorize(); - - const noTokenGetCardListData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: customerKey, - }; - - const options = { - ...noTokenGetStateData, - Token: generateToken(noTokenGetStateData), - }; - - const result = await getCardList(options); - - expect(result.error).to.equal(undefined); - } - }; f(); From a228d5808d2adb7211931b8f31debd8aeebf7c1d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 13:19:05 +0600 Subject: [PATCH 052/683] Format --- payments-eacq.cjs | 231 ++++++++++++++++++++++------------------------ 1 file changed, 110 insertions(+), 121 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 68b02449..ae16c60d 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -193,74 +193,72 @@ const f = async () => { const getMarketUrl = (method) => `"${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}"`; - const getState = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetState'), - data: options, - }); - - const error = getError(response.data.ErrorCode); - - const d = { - error, - request: options, - response: response.data, - }; - debug(d); - options?.log && options.log(d); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const getState = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetState'), + data: options, + }); - const getCardList = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCardList'), - headers: { - 'Content-Type': 'application/json', - }, - data: options, - }); - - const error = getError(response.data.ErrorCode || '0'); - - const d = { - error, - request: options, - response: response.data, - }; - debug(d); - options?.log && options.log(d); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getCardList = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCardList'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode || '0'); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); @@ -906,7 +904,7 @@ const f = async () => { // return initResult; return {data: "dataString"}; }; - ` + `, // payInsertHandler // .toString() @@ -936,7 +934,7 @@ const f = async () => { // 'process.env.PAYMENT_EACQ_TERMINAL_PASSWORD' // `'"${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}"'` // ) - // , + // , }, }, }); @@ -946,7 +944,9 @@ const f = async () => { await deep.insert( { type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT } }, + number: { + data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, + }, in: { data: { type_id: await deep.id('@deep-foundation/core', 'RouterListening'), @@ -959,7 +959,12 @@ const f = async () => { '@deep-foundation/core', 'RouterStringUse' ), - string: { data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE } }, + string: { + data: { + value: + process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, + }, + }, from: { data: { type_id: await deep.id('@deep-foundation/core', 'Route'), @@ -1136,7 +1141,7 @@ const f = async () => { } res.send('ok'); }; - ` + `, }, }, }, @@ -1232,7 +1237,7 @@ const f = async () => { type_id: PSum, from_id: deep.linkId, to_id: paymentId, - number: {data: {value: 150}}, + number: { data: { value: 150 } }, in: { data: [ { @@ -1290,10 +1295,10 @@ const f = async () => { }, }); - const hasUrl = mpDownPay.data.find(link => link.type_id == PUrl); - if(!hasUrl) { - throw new Error("Url not found."); - } + const hasUrl = mpDownPay.data.find((link) => link.type_id == PUrl); + if (!hasUrl) { + throw new Error('Url not found.'); + } }; await testInit(); @@ -1314,21 +1319,18 @@ const f = async () => { page, url, }); - } + }; const testConfirm = async () => { - testFinishAuthorize(); sleep(5000); - const { - data, - } = await deep.select({ + const { data } = await deep.select({ type_id: PPayed, }); - if(data.length === 0){ + if (data.length === 0) { throw new Error('Payment is not confirmed'); } }; @@ -1337,75 +1339,62 @@ const f = async () => { const testCancel = async () => { const testCancelAfterPay = async () => { - const testCancelBeforeConfirmFullPrice = async () => { - - } - const testCancelBeforeConfirmCustomPriceX2 = async () => { - - } - const testCancelAfterConfirmFullPrice = async () => { - - } - const testCancelAfterConfirmCustomPriceX2 = async () => { - - } - } - const testCancelBeforePay = async () => { - - } - } - + const testCancelBeforeConfirmFullPrice = async () => {}; + const testCancelBeforeConfirmCustomPriceX2 = async () => {}; + const testCancelAfterConfirmFullPrice = async () => {}; + const testCancelAfterConfirmCustomPriceX2 = async () => {}; + }; + const testCancelBeforePay = async () => {}; + }; + const testGetState = async () => { await testFinishAuthorize(); - - const paymentId = await deep.select({type_id: PPayment}); - + + const paymentId = await deep.select({ type_id: PPayment }); + const noTokenGetStateData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, }; - + const newGetStateData = { ...noTokenGetStateData, PaymentId: paymentId, }; - - + const options = { ...newGetStateData, Token: generateToken(newGetStateData), }; - - + const result = await getState(options); - + expect(result.error).to.equal(undefined); - } - + }; + await testGetState(); - + const testGetCardList = async () => { await testFinishAuthorize(); - + const noTokenGetCardListData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: customerKey, }; - + const options = { ...noTokenGetStateData, Token: generateToken(noTokenGetStateData), }; - + const result = await getCardList(options); - + expect(result.error).to.equal(undefined); - } - + }; + await testGetCardList(); - } + }; await callTests(); - }; f(); From aed6e332ab0d7ec4d3afc7695d16a9d7c5b5199c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 13:19:39 +0600 Subject: [PATCH 053/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index ae16c60d..42e4fd96 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1382,7 +1382,7 @@ const f = async () => { }; const options = { - ...noTokenGetStateData, + ...noTokenGetCardListData, Token: generateToken(noTokenGetStateData), }; From 443d40688388f0025e88559a1119d8d7231a34e3 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 15:12:33 +0600 Subject: [PATCH 054/683] Move const price to upper level --- payments-eacq.cjs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 42e4fd96..f2bd5cd1 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -12,6 +12,8 @@ const { const packageName = '@deep-foundation/payments-eacq'; +const PRICE = 5500; + const payInBrowser = async ({ page, browser, url }) => { await page.goto(url, { waitUntil: 'networkidle2' }); await sleep(3000); @@ -1165,6 +1167,7 @@ const f = async () => { ); const callTests = async () => { + const PPayment = await deep.id(packageName, 'Payment'); const PObject = await deep.id(packageName, 'Object'); const PSum = await deep.id(packageName, 'Sum'); @@ -1214,7 +1217,7 @@ const f = async () => { console.log({ product: productId }); - const PRICE = 5500; + const testInit = async () => { const { From 23fd2c7e8b8969e8fc43b3f09f95862043828019 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 15:32:42 +0600 Subject: [PATCH 055/683] Update payInsertHandler --- payments-eacq.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f2bd5cd1..b37dea32 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -870,7 +870,7 @@ const f = async () => { // const { // data: [{ id: error }], // } = await deep.insert({ - // type_id: PError, + // type_id: ${PError}, // to_id: payLink.id, // string: { data: { value: initResult.error } }, // in: { @@ -888,13 +888,13 @@ const f = async () => { // const { // data: [{ id: url }], // } = await deep.insert({ - // type_id: PUrl, + // type_id: ${PUrl}, // to_id: payLink.id, // string: { data: { value: initResult.response.PaymentURL } }, // in: { // data: [ // { - // type_id: Contain, + // type_id: ${Contain}, // from_id: deep.linkId, // }, // ], From a6ab93873b37ecc86c93aabea06496128225e9db Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 15:51:37 +0600 Subject: [PATCH 056/683] Uncomment insertPayHandler logic --- payments-eacq.cjs | 74 +++++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index b37dea32..a956bf6d 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -865,43 +865,43 @@ const f = async () => { console.log({initResult}) - // if (initResult.error != undefined) { - // console.log('initResult.error:', initResult.error); - // const { - // data: [{ id: error }], - // } = await deep.insert({ - // type_id: ${PError}, - // to_id: payLink.id, - // string: { data: { value: initResult.error } }, - // in: { - // data: [ - // { - // type_id: Contain, - // from_id: deep.linkId, - // }, - // ], - // }, - // }); - // console.log({ error }); - // } else { - // console.log('Payment URL:', initResult.response.PaymentURL); - // const { - // data: [{ id: url }], - // } = await deep.insert({ - // type_id: ${PUrl}, - // to_id: payLink.id, - // string: { data: { value: initResult.response.PaymentURL } }, - // in: { - // data: [ - // { - // type_id: ${Contain}, - // from_id: deep.linkId, - // }, - // ], - // }, - // }); - // console.log({ url }); - // } + if (initResult.error != undefined) { + console.log('initResult.error:', initResult.error); + const { + data: [{ id: error }], + } = await deep.insert({ + type_id: ${PError}, + to_id: payLink.id, + string: { data: { value: initResult.error } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ error }); + } else { + console.log('Payment URL:', initResult.response.PaymentURL); + const { + data: [{ id: url }], + } = await deep.insert({ + type_id: ${PUrl}, + to_id: payLink.id, + string: { data: { value: initResult.response.PaymentURL } }, + in: { + data: [ + { + type_id: ${Contain}, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ url }); + } // return initResult; return {data: "dataString"}; From 33ba599f70b486036e1382ca93fb31b0a02841da Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 17:32:23 +0600 Subject: [PATCH 057/683] Use (tinkoff|sum)provider --- payments-eacq.cjs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index a956bf6d..d6e50652 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -602,6 +602,7 @@ const f = async () => { ], }, }); + const { data: [{ id: PSumProvider }], @@ -1121,7 +1122,7 @@ const f = async () => { data: [ { type_id: ${Contain}, - from_id: deep.linkId, + from_id: ${tinkoffProviderId}, }, ], }, @@ -1134,7 +1135,7 @@ const f = async () => { data: [ { type_id: ${Contain}, - from_id: deep.linkId, + from_id: ${tinkoffProviderId}, string: { data: { value: getError(req.ErrorCode) } }, }, ], @@ -1183,6 +1184,14 @@ const f = async () => { const Type = await deep.id('@deep-foundation/core', 'Type'); const Any = await deep.id('@deep-foundation/core', 'Any'); + const {data: [{id: tinkoffProviderId}]} = await deep.insert({ + type_id: PTinkoffProvider, + }); + + const {data: [{id: sumProviderId}]} = await deep.insert({ + type_id: PTinkoffProvider, + }); + const { data: [{ id: Product }], } = await deep.insert({ @@ -1238,7 +1247,7 @@ const f = async () => { data: [{ id: sumId }], } = await deep.insert({ type_id: PSum, - from_id: deep.linkId, + from_id: sumProviderId, to_id: paymentId, number: { data: { value: 150 } }, in: { From a142a600a447b011c1fec279322efde9b2051d06 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 17:45:38 +0600 Subject: [PATCH 058/683] Move (tinkoff|sum)providers upper --- payments-eacq.cjs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index d6e50652..cd50604b 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -638,7 +638,14 @@ const f = async () => { console.log({ PTinkoffProvider: PTinkoffProvider }); - // Handlers + + const {data: [{id: tinkoffProviderId}]} = await deep.insert({ + type_id: PTinkoffProvider, + }); + + const {data: [{id: sumProviderId}]} = await deep.insert({ + type_id: PTinkoffProvider, + }); const insertHandlerDependencies = ` const errorsConverter = ${JSON.stringify(errorsConverter)}; @@ -1184,14 +1191,6 @@ const f = async () => { const Type = await deep.id('@deep-foundation/core', 'Type'); const Any = await deep.id('@deep-foundation/core', 'Any'); - const {data: [{id: tinkoffProviderId}]} = await deep.insert({ - type_id: PTinkoffProvider, - }); - - const {data: [{id: sumProviderId}]} = await deep.insert({ - type_id: PTinkoffProvider, - }); - const { data: [{ id: Product }], } = await deep.insert({ From e2b8852f3a2db5240ebee094f5ae606f9b0d0a52 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 17:55:35 +0600 Subject: [PATCH 059/683] Add from_id to url --- payments-eacq.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index cd50604b..78549219 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -897,6 +897,7 @@ const f = async () => { data: [{ id: url }], } = await deep.insert({ type_id: ${PUrl}, + from_id: ${tinkoffProviderId}, to_id: payLink.id, string: { data: { value: initResult.response.PaymentURL } }, in: { From 96cdadf8c215e24d41e136b87fbf4c165d092079 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 21:28:06 +0600 Subject: [PATCH 060/683] Wait longer --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 78549219..a794eb7a 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1298,7 +1298,7 @@ const f = async () => { console.log({ pay: payId }); - sleep(5000); + sleep(15000); const mpDownPay = await deep.select({ down: { From a410d6e182f8500ea74c1addf7006c7a13becc90 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 21:45:29 +0600 Subject: [PATCH 061/683] Add console logs --- payments-eacq.cjs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index a794eb7a..682ada77 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1229,6 +1229,7 @@ const f = async () => { const testInit = async () => { + console.log("testInit"); const { data: [{ id: paymentId }], } = await deep.insert({ @@ -1307,6 +1308,8 @@ const f = async () => { }, }); + console.log({ mpDownPay }); + const hasUrl = mpDownPay.data.find((link) => link.type_id == PUrl); if (!hasUrl) { throw new Error('Url not found.'); @@ -1316,6 +1319,7 @@ const f = async () => { await testInit(); const testFinishAuthorize = async () => { + console.log("testFinishAuthorize"); await testInit(); const { data: [{ value: url }], @@ -1334,6 +1338,7 @@ const f = async () => { }; const testConfirm = async () => { + console.log("testConfirm"); testFinishAuthorize(); sleep(5000); @@ -1360,6 +1365,7 @@ const f = async () => { }; const testGetState = async () => { + console.log("testGetState"); await testFinishAuthorize(); const paymentId = await deep.select({ type_id: PPayment }); @@ -1386,6 +1392,7 @@ const f = async () => { await testGetState(); const testGetCardList = async () => { + console.log("testGetCardList"); await testFinishAuthorize(); const noTokenGetCardListData = { From 3da7112e4f017d4211b31000f24b021bfd2850c1 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 21:54:30 +0600 Subject: [PATCH 062/683] Add contain to providers --- payments-eacq.cjs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 682ada77..1b2e753e 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -641,10 +641,26 @@ const f = async () => { const {data: [{id: tinkoffProviderId}]} = await deep.insert({ type_id: PTinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); const {data: [{id: sumProviderId}]} = await deep.insert({ type_id: PTinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); const insertHandlerDependencies = ` From 48edda3206cb3bf5af70ef19b5500b9393abd027 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 22:08:11 +0600 Subject: [PATCH 063/683] Fix typo --- payments-eacq.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 1b2e753e..2c094876 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -910,7 +910,7 @@ const f = async () => { } else { console.log('Payment URL:', initResult.response.PaymentURL); const { - data: [{ id: url }], + data: [{ id: urlId }], } = await deep.insert({ type_id: ${PUrl}, from_id: ${tinkoffProviderId}, @@ -925,7 +925,7 @@ const f = async () => { ], }, }); - console.log({ url }); + console.log({ urlId }); } // return initResult; From 716be5d86bc2e511f14e861d4796c065bc5c5ad3 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 12 Aug 2022 22:10:47 +0600 Subject: [PATCH 064/683] Use external deep.linkId in handler --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 2c094876..47dcd1dd 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -920,7 +920,7 @@ const f = async () => { data: [ { type_id: ${Contain}, - from_id: deep.linkId, + from_id: ${deep.linkId}, }, ], }, From 425addef7ba9d0841eae4f94a1bc6080b8137a07 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 13:42:04 +0600 Subject: [PATCH 065/683] Temporarily test only init --- payments-eacq.cjs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 47dcd1dd..892246b8 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1426,7 +1426,10 @@ const f = async () => { expect(result.error).to.equal(undefined); }; - await testGetCardList(); + await testInit(); + // await testConfirm(); + // await testGetState(); + // await testGetCardList(); }; await callTests(); From 3e07229b5dc7e3759a5f1f35bebd2ad388a90a86 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 13:42:21 +0600 Subject: [PATCH 066/683] Move tests calls to end --- payments-eacq.cjs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 892246b8..ae32a4a0 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1332,8 +1332,6 @@ const f = async () => { } }; - await testInit(); - const testFinishAuthorize = async () => { console.log("testFinishAuthorize"); await testInit(); @@ -1368,8 +1366,6 @@ const f = async () => { } }; - await testConfirm(); - const testCancel = async () => { const testCancelAfterPay = async () => { const testCancelBeforeConfirmFullPrice = async () => {}; @@ -1405,8 +1401,6 @@ const f = async () => { expect(result.error).to.equal(undefined); }; - await testGetState(); - const testGetCardList = async () => { console.log("testGetCardList"); await testFinishAuthorize(); From 59db55fd261c18728c80568c60d2acfb55a2fd88 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 13:42:38 +0600 Subject: [PATCH 067/683] Debug url finding --- payments-eacq.cjs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index ae32a4a0..29ebed85 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1315,18 +1315,16 @@ const f = async () => { console.log({ pay: payId }); - sleep(15000); + sleep(20000); - const mpDownPay = await deep.select({ - down: { - link_id: { _eq: payId }, - tree_id: { _eq: paymentTreeId }, - }, + const urlQuery = await deep.select({ + type_id: PUrl, + to_id: payId }); - console.log({ mpDownPay }); + console.log({ urlQuery }); - const hasUrl = mpDownPay.data.find((link) => link.type_id == PUrl); + const hasUrl = urlQuery.data.length > 0; if (!hasUrl) { throw new Error('Url not found.'); } From 841e777945ed9b73e7b82c2441e1b35786900000 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 13:42:47 +0600 Subject: [PATCH 068/683] Remove unused code --- payments-eacq.cjs | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 29ebed85..d6b26739 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -933,35 +933,6 @@ const f = async () => { }; `, - // payInsertHandler - // .toString() - // .replace("/* Dependencies placeholder */", insertHandlerDependencies) - // .replace('packageName', `'${packageName}'`) - // .replace( - // 'process.env.PAYMENT_TEST_TERMINAL_KEY', - // `'"${process.env.PAYMENT_TEST_TERMINAL_KEY}"'` - // ) - // .replace( - // 'process.env.PAYMENT_TEST_EMAIL', - // `'"${process.env.PAYMENT_TEST_EMAIL}"'` - // ) - // .replace( - // 'process.env.PAYMENT_TEST_PHONE', - // `'"${process.env.PAYMENT_TEST_PHONE}"'` - // ) - // .replace( - // 'process.env.PAYMENT_EACQ_AND_TEST_URL', - // `'"${process.env.PAYMENT_EACQ_AND_TEST_URL}"'` - // ) - // .replace( - // 'process.env.PAYMENT_EACQ_TERMINAL_PASSWORD', - // `'"${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}"'` - // ) - // .replace( - // 'process.env.PAYMENT_EACQ_TERMINAL_PASSWORD' - // `'"${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}"'` - // ) - // , }, }, }); From 1a6df360b73b8c9199da3443f5984e03cc1c520e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 13:43:59 +0600 Subject: [PATCH 069/683] Get payId in parameters and use it --- payments-eacq.cjs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index d6b26739..067c5943 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -720,7 +720,7 @@ const f = async () => { string: { data: { value: ` - async ({ deep, require, data: { newLink } }) => { + async ({ deep, require, data: { newLink: {id: payId} } }) => { const crypto = require('crypto'); const axios = require('axios'); @@ -838,10 +838,10 @@ const f = async () => { return init(options); }; - const payLink = newLink; + const mpDownPay = await await deep.select({ down: { - link_id: { _eq: payLink.id }, + link_id: { _eq: payId }, tree_id: { _eq: ${paymentTreeId} }, }, }); @@ -853,7 +853,7 @@ const f = async () => { console.log({sum}); const options = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - OrderId: payLink.id, + OrderId: payId, Amount: ${PRICE}, Description: 'Test shopping', CustomerKey: deep.linkId, @@ -895,7 +895,7 @@ const f = async () => { data: [{ id: error }], } = await deep.insert({ type_id: ${PError}, - to_id: payLink.id, + to_id: payId, string: { data: { value: initResult.error } }, in: { data: [ @@ -914,7 +914,7 @@ const f = async () => { } = await deep.insert({ type_id: ${PUrl}, from_id: ${tinkoffProviderId}, - to_id: payLink.id, + to_id: payId, string: { data: { value: initResult.response.PaymentURL } }, in: { data: [ From 80d4d66d0d8cd701c16350f30224934f7ba1990b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 13:44:17 +0600 Subject: [PATCH 070/683] Use external deep linkId in handler --- payments-eacq.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 067c5943..2d96f89c 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -856,7 +856,7 @@ const f = async () => { OrderId: payId, Amount: ${PRICE}, Description: 'Test shopping', - CustomerKey: deep.linkId, + CustomerKey: ${deep.linkId}, Language: 'ru', Recurrent: 'Y', DATA: { @@ -901,7 +901,7 @@ const f = async () => { data: [ { type_id: Contain, - from_id: deep.linkId, + from_id: ${deep.linkId}, }, ], }, From 13ba4323322a2649e7a1f65a0c70f4fdb6fa9f2a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 13:44:33 +0600 Subject: [PATCH 071/683] Temporarily use mock data --- payments-eacq.cjs | 42 +++++++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 2d96f89c..de4b67bd 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -879,13 +879,41 @@ const f = async () => { } }; - const initResult = await sendInit({ - ...options, - OrderId: paymentId, - CustomerKey: deep.linkId, - NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", - PayType: 'T', - }); + // const initResult = await sendInit({ + // ...options, + // OrderId: paymentId, + // CustomerKey: ${deep.linkId}, + // NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", + // PayType: 'T', + // }); + + const initResult = { + error: undefined, + request: { + TerminalKey: '1543322610200DEMO', + OrderId: 668, + Amount: 5500, + Description: 'Test shopping', + CustomerKey: 616, + Language: 'ru', + Recurrent: 'Y', + DATA: [Object], + Receipt: [Object], + NotificationURL: 'https://3006-freephoenix-deepfoundat-3nlkp9ah0s6.ws-eu60.gitpod.io/gql', + PayType: 'T', + Token: '279b80d32a51420599e3eadbabaab285d48ec91e7e09a9db7d04a22a5cff46b7' + }, + response: { + Success: true, + ErrorCode: '0', + TerminalKey: '1543322610200DEMO', + Status: 'NEW', + PaymentId: '1639057947', + OrderId: '668', + Amount: 5500, + PaymentURL: 'https://securepayments.tinkoff.ru/z2GYUoF9' + } + }; console.log({initResult}) From ef2563362634e0b4f8012ff82d827e5e6bd36f43 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 13:44:44 +0600 Subject: [PATCH 072/683] Use sum provider for sum --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index de4b67bd..7c74dfb0 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -652,7 +652,7 @@ const f = async () => { }); const {data: [{id: sumProviderId}]} = await deep.insert({ - type_id: PTinkoffProvider, + type_id: PSumProvider, in: { data: [ { From c7ab1049b0d2d0fbf02c01fe5fd305b392096f57 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 16:29:13 +0600 Subject: [PATCH 073/683] Do not use mock data --- payments-eacq.cjs | 42 +++++++----------------------------------- 1 file changed, 7 insertions(+), 35 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 7c74dfb0..d63c3e90 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -879,41 +879,13 @@ const f = async () => { } }; - // const initResult = await sendInit({ - // ...options, - // OrderId: paymentId, - // CustomerKey: ${deep.linkId}, - // NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", - // PayType: 'T', - // }); - - const initResult = { - error: undefined, - request: { - TerminalKey: '1543322610200DEMO', - OrderId: 668, - Amount: 5500, - Description: 'Test shopping', - CustomerKey: 616, - Language: 'ru', - Recurrent: 'Y', - DATA: [Object], - Receipt: [Object], - NotificationURL: 'https://3006-freephoenix-deepfoundat-3nlkp9ah0s6.ws-eu60.gitpod.io/gql', - PayType: 'T', - Token: '279b80d32a51420599e3eadbabaab285d48ec91e7e09a9db7d04a22a5cff46b7' - }, - response: { - Success: true, - ErrorCode: '0', - TerminalKey: '1543322610200DEMO', - Status: 'NEW', - PaymentId: '1639057947', - OrderId: '668', - Amount: 5500, - PaymentURL: 'https://securepayments.tinkoff.ru/z2GYUoF9' - } - }; + const initResult = await sendInit({ + ...options, + OrderId: paymentId, + CustomerKey: ${deep.linkId}, + NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", + PayType: 'T', + }); console.log({initResult}) From 79b2cbcc71a09ec2e91b85af08ac56ddfa3d2c11 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 16:29:24 +0600 Subject: [PATCH 074/683] Await sleep --- payments-eacq.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index d63c3e90..bd3d61f8 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1286,7 +1286,7 @@ const f = async () => { console.log({ pay: payId }); - sleep(20000); + await sleep(5000); const urlQuery = await deep.select({ type_id: PUrl, @@ -1324,7 +1324,7 @@ const f = async () => { console.log("testConfirm"); testFinishAuthorize(); - sleep(5000); + await sleep(2000); const { data } = await deep.select({ type_id: PPayed, From 822a93d87876382b184fb57d0a8db0f44bdb613b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 16:29:47 +0600 Subject: [PATCH 075/683] Get payment id by using payId in testGetState --- payments-eacq.cjs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index bd3d61f8..85590d90 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1349,7 +1349,13 @@ const f = async () => { console.log("testGetState"); await testFinishAuthorize(); - const paymentId = await deep.select({ type_id: PPayment }); + const payId = await deep.select({ type_id: PPay }); + const {data: [{id: paymentId}]} = await deep.select({ + up: { + tree_id: paymentTreeId, + link_id: payId + } + }); const noTokenGetStateData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, From 058d0f04c469724b61c9c265ed580cc52a6b3b97 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 16:29:57 +0600 Subject: [PATCH 076/683] Uncomment tests --- payments-eacq.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 85590d90..2e70d95e 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1396,9 +1396,9 @@ const f = async () => { }; await testInit(); - // await testConfirm(); - // await testGetState(); - // await testGetCardList(); + await testConfirm(); + await testGetState(); + await testGetCardList(); }; await callTests(); From 6896e2caf3dc0a0e1e9441dce5c6f4096e13046c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 16:30:11 +0600 Subject: [PATCH 077/683] Get value property of value property to get url --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 2e70d95e..858beaf2 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1305,7 +1305,7 @@ const f = async () => { console.log("testFinishAuthorize"); await testInit(); const { - data: [{ value: url }], + data: [{ value: {value: url} }], } = await deep.select({ type_id: PUrl, }); From a1fc4c4c0692a706dafeb12cbf30611380bb3c99 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 17:04:34 +0600 Subject: [PATCH 078/683] Add console log --- payments-eacq.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 858beaf2..04371a59 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -9,6 +9,7 @@ const { minilinks, Link, } = require('@deep-foundation/deeplinks/imports/minilinks'); +const puppeteer = require('puppeteer'); const packageName = '@deep-foundation/payments-eacq'; @@ -1012,6 +1013,7 @@ const f = async () => { next, { deep, require, gql } ) => { + console.log({req}); const errorsConverter = { 7: 'Покупатель не найден', 53: 'Обратитесь к продавцу', From 87b6034b63845c781b89af0ccee6e9a9aa3e568b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 17:07:33 +0600 Subject: [PATCH 079/683] Add puppeteer --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index fb30d659..5b6b0013 100644 --- a/package.json +++ b/package.json @@ -81,6 +81,7 @@ "minimist": "^1.2.5", "npm": "^7.5.4", "prompt": "^1.2.0", + "puppeteer": "^16.1.0", "rimraf": "^3.0.2", "simple-git": "^2.45.0", "ts-node": "^9.1.1", From 472c896ca5797007a96f2dc3547dc9ba3b3f04c2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 17:25:47 +0600 Subject: [PATCH 080/683] Add await --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 04371a59..98dc9757 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1324,7 +1324,7 @@ const f = async () => { const testConfirm = async () => { console.log("testConfirm"); - testFinishAuthorize(); + await testFinishAuthorize(); await sleep(2000); From a86990034a1dbcd8b77a375dd235a095dae5f137 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 17:26:20 +0600 Subject: [PATCH 081/683] Move sleep upper --- payments-eacq.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 98dc9757..2242d779 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -15,6 +15,8 @@ const packageName = '@deep-foundation/payments-eacq'; const PRICE = 5500; +const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); + const payInBrowser = async ({ page, browser, url }) => { await page.goto(url, { waitUntil: 'networkidle2' }); await sleep(3000); @@ -263,8 +265,6 @@ const f = async () => { } }; - const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); - const init = async (options) => { try { const response = await axios({ From 15c9f98c29de245d08385b2aae72ec3d0abe9d0c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 17:35:34 +0600 Subject: [PATCH 082/683] page.waitFor -> page.waitForSelector --- payments-eacq.cjs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 2242d779..5b6ddfb8 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -15,7 +15,7 @@ const packageName = '@deep-foundation/payments-eacq'; const PRICE = 5500; -const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); + const payInBrowser = async ({ page, browser, url }) => { await page.goto(url, { waitUntil: 'networkidle2' }); @@ -34,7 +34,7 @@ const payInBrowser = async ({ page, browser, url }) => { ); }); if (cvc1) { - await page.waitFor('input[automation-id="tui-input-card-grouped__card"]'); + await page.waitForSelector('input[automation-id="tui-input-card-grouped__card"]'); await sleep(300); await page.type( 'input[automation-id="tui-input-card-grouped__card"]', @@ -57,7 +57,7 @@ const payInBrowser = async ({ page, browser, url }) => { await sleep(300); await page.click('button[automation-id="pay-card__submit"]'); // submit button } else { - await page.waitFor('input[automation-id="tui-input-card-grouped__card"]'); + await page.waitForSelector('input[automation-id="tui-input-card-grouped__card"]'); await sleep(300); await page.type( 'input[automation-id="tui-input-card-grouped__card"]', @@ -80,7 +80,7 @@ const payInBrowser = async ({ page, browser, url }) => { await sleep(300); await page.click('button[automation-id="pay-wallet__submit"]'); // submit button await sleep(300); - await page.waitFor('input[name="password"]'); + await page.waitForSelector('input[name="password"]'); const code = prompt('enter code '); console.log('code', code); await page.type('input[name="password"]', code); @@ -94,7 +94,7 @@ const payInBrowser = async ({ page, browser, url }) => { await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code await page.click('button[type=submit]'); // submit button - await page.waitFor('input[name="password"]'); + await page.waitForSelector('input[name="password"]'); const code = prompt('enter code '); console.log('code', code); await page.type('input[name="password"]', code); From 87aa5f0082c41706d0dc46ddada4a9dc6265913b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 17:43:06 +0600 Subject: [PATCH 083/683] Add const sleep --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 5b6ddfb8..6305aacd 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -15,7 +15,7 @@ const packageName = '@deep-foundation/payments-eacq'; const PRICE = 5500; - +const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const payInBrowser = async ({ page, browser, url }) => { await page.goto(url, { waitUntil: 'networkidle2' }); From 60d2f92ae2b6627860bdfe5e4c2760f7bf22da1d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 18:03:43 +0600 Subject: [PATCH 084/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 6305aacd..29d66d1c 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -901,7 +901,7 @@ const f = async () => { in: { data: [ { - type_id: Contain, + type_id: ${Contain}, from_id: ${deep.linkId}, }, ], From 4c1ea9e49f84f144ea2a4cc9c6cb87520702d043 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 13 Aug 2022 18:08:05 +0600 Subject: [PATCH 085/683] Sleep more --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 29d66d1c..45397c11 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1288,7 +1288,7 @@ const f = async () => { console.log({ pay: payId }); - await sleep(5000); + await sleep(9000); const urlQuery = await deep.select({ type_id: PUrl, From ff86823f190f27ee5d400b8007d661871e589cbf Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 14 Aug 2022 16:27:33 +0600 Subject: [PATCH 086/683] Remove customer before tests --- payments-eacq.cjs | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 45397c11..4110fe2a 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1164,6 +1164,52 @@ const f = async () => { } ); + const removeCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('RemoveCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + debug({ + error, + request: options, + response: response.data, + }); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const removeCustomerNoTokenData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; + + const removeCustomerResponse = await removeCustomer({ + ...removeCustomerNoTokenData, + Token: generateToken(noTokenData), + }); + + console.log({removeCustomerResponse}); + + const callTests = async () => { const PPayment = await deep.id(packageName, 'Payment'); From 7bbbf8c6ff1a361de3a60c9fb1279d30195bf90f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 14 Aug 2022 16:43:44 +0600 Subject: [PATCH 087/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 4110fe2a..0f2213f8 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1204,7 +1204,7 @@ const f = async () => { const removeCustomerResponse = await removeCustomer({ ...removeCustomerNoTokenData, - Token: generateToken(noTokenData), + Token: generateToken(removeCustomerNoTokenData), }); console.log({removeCustomerResponse}); From 3c9590e2ec53e03e2b0b57d2cc4fcbd3d5ae6085 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 14 Aug 2022 16:48:37 +0600 Subject: [PATCH 088/683] Require crypto and axios --- payments-eacq.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 0f2213f8..e8d47354 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -10,6 +10,8 @@ const { Link, } = require('@deep-foundation/deeplinks/imports/minilinks'); const puppeteer = require('puppeteer'); +const crypto = require('crypto'); +const axios = require('axios'); const packageName = '@deep-foundation/payments-eacq'; From f079ecb2cc2fd2a08a5eed0b647e0f9252518580 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 14 Aug 2022 16:58:24 +0600 Subject: [PATCH 089/683] Throw exception if cannot remove customer --- payments-eacq.cjs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index e8d47354..feada6fa 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1210,6 +1210,10 @@ const f = async () => { }); console.log({removeCustomerResponse}); + + if(!removeCustomerResponse.response) { + throw new Error("Cannot remove customer"); + } const callTests = async () => { From b75915c1243827afbb8c729e492595abfbe9c50c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 14 Aug 2022 17:35:42 +0600 Subject: [PATCH 090/683] Do not double init args --- payments-eacq.cjs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index feada6fa..8cec2171 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -856,10 +856,12 @@ const f = async () => { console.log({sum}); const options = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - OrderId: payId, + OrderId: paymentId, + CustomerKey: ${deep.linkId}, + NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", + PayType: 'T', Amount: ${PRICE}, Description: 'Test shopping', - CustomerKey: ${deep.linkId}, Language: 'ru', Recurrent: 'Y', DATA: { @@ -883,11 +885,7 @@ const f = async () => { }; const initResult = await sendInit({ - ...options, - OrderId: paymentId, - CustomerKey: ${deep.linkId}, - NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", - PayType: 'T', + ...options }); console.log({initResult}) From 0b1c986f23be1f3076d08ab461b9bba909f48d9b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 14 Aug 2022 18:00:41 +0600 Subject: [PATCH 091/683] Temporarily cancel all payments after tests and cancel already initialized tests in payInsertHandler --- payments-eacq.cjs | 98 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 79 insertions(+), 19 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 8cec2171..2bdbc566 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -833,6 +833,7 @@ const f = async () => { }; } }; + const sendInit = async (noTokenData) => { const options = { ...noTokenData, @@ -887,6 +888,57 @@ const f = async () => { const initResult = await sendInit({ ...options }); + + // TODO Remove later + if(initResult.response.ErrorCode == '8'){ + const cancel = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Cancel'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + const newCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: paymentId, + }; + + const options = { + ...newCancelData, + Token: generateToken(newCancelData), + }; + + const cancelResponse = await cancel(options); + + console.log({cancelResponse}); + const initResult = await sendInit({ + ...options + }); + } console.log({initResult}) @@ -1164,24 +1216,23 @@ const f = async () => { } ); - const removeCustomer = async (options) => { + const cancel = async (options) => { try { const response = await axios({ method: 'post', - url: getUrl('RemoveCustomer'), - headers: { - 'Content-Type': 'application/json', - }, + url: getUrl('Cancel'), data: options, }); const error = getError(response.data.ErrorCode); - debug({ + const d = { error, request: options, response: response.data, - }); + }; + debug(d); + options?.log && options.log(d); return { error, @@ -1196,23 +1247,32 @@ const f = async () => { }; } }; + - const removeCustomerNoTokenData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const removeCustomerResponse = await removeCustomer({ - ...removeCustomerNoTokenData, - Token: generateToken(removeCustomerNoTokenData), - }); + const cancelAllPayments = async () => { + const {data: paymentLinks} = await deep.select({ + type_id: PPayment, + }); - console.log({removeCustomerResponse}); + for(const {id: paymentId} of paymentLinks) { + const newCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: paymentId, + }; + + const options = { + ...newCancelData, + Token: generateToken(newCancelData), + }; - if(!removeCustomerResponse.response) { - throw new Error("Cannot remove customer"); + const cancelResponse = await cancel(options); + + console.log({cancelResponse}); + } } + + const callTests = async () => { From e80165a9dbf949f01693e55dfb61a0b465c5c7fa Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 15 Aug 2022 09:33:50 +0600 Subject: [PATCH 092/683] Cancel all payments after tests --- payments-eacq.cjs | 52 +++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 2bdbc566..c6fdfc9d 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1246,33 +1246,7 @@ const f = async () => { response: null, }; } - }; - - - const cancelAllPayments = async () => { - const {data: paymentLinks} = await deep.select({ - type_id: PPayment, - }); - - for(const {id: paymentId} of paymentLinks) { - const newCancelData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: paymentId, - }; - - const options = { - ...newCancelData, - Token: generateToken(newCancelData), - }; - - const cancelResponse = await cancel(options); - - console.log({cancelResponse}); - } - } - - - + }; const callTests = async () => { @@ -1514,6 +1488,30 @@ const f = async () => { }; await callTests(); + + const cancelAllPayments = async () => { + const {data: paymentLinks} = await deep.select({ + type_id: PPayment, + }); + + for(const {id: paymentId} of paymentLinks) { + const newCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: paymentId, + }; + + const options = { + ...newCancelData, + Token: generateToken(newCancelData), + }; + + const cancelResponse = await cancel(options); + + console.log({cancelResponse}); + } + }; + + await cancelAllPayments(); }; f(); From 620658d28d3c65d89a88d4c1f7d4c12c21757259 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 15 Aug 2022 09:36:05 +0600 Subject: [PATCH 093/683] Cancel all payments in finally --- payments-eacq.cjs | 54 +++++++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index c6fdfc9d..f89a8a80 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1487,31 +1487,35 @@ const f = async () => { await testGetCardList(); }; - await callTests(); - - const cancelAllPayments = async () => { - const {data: paymentLinks} = await deep.select({ - type_id: PPayment, - }); - - for(const {id: paymentId} of paymentLinks) { - const newCancelData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: paymentId, - }; - - const options = { - ...newCancelData, - Token: generateToken(newCancelData), - }; - - const cancelResponse = await cancel(options); - - console.log({cancelResponse}); - } - }; - - await cancelAllPayments(); + try { + await callTests(); + } catch (error) { + throw + } finally { + const cancelAllPayments = async () => { + const {data: paymentLinks} = await deep.select({ + type_id: PPayment, + }); + + for(const {id: paymentId} of paymentLinks) { + const newCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: paymentId, + }; + + const options = { + ...newCancelData, + Token: generateToken(newCancelData), + }; + + const cancelResponse = await cancel(options); + + console.log({cancelResponse}); + } + }; + + await cancelAllPayments(); + } }; f(); From df1355341bd4882d97c703a30fbd7339a1497076 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 15 Aug 2022 09:43:32 +0600 Subject: [PATCH 094/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f89a8a80..441fe12b 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1490,7 +1490,7 @@ const f = async () => { try { await callTests(); } catch (error) { - throw + throw error; } finally { const cancelAllPayments = async () => { const {data: paymentLinks} = await deep.select({ From c38776b82c65244f7430b5ef8ceaa89308e89b32 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 15 Aug 2022 09:51:48 +0600 Subject: [PATCH 095/683] Add amount to cancel --- payments-eacq.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 441fe12b..58854f3a 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1501,6 +1501,7 @@ const f = async () => { const newCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: paymentId, + Amount: 5500, }; const options = { From 296a5dc4fd36df1ce66c88e30e6cba1552cdf30e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 15 Aug 2022 10:01:10 +0600 Subject: [PATCH 096/683] Pass envs to handler --- payments-eacq.cjs | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 58854f3a..b4becf9a 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -922,9 +922,25 @@ const f = async () => { }; } }; + const newCancelData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", PaymentId: paymentId, + Amount: 5500, + Receipt: { + Items: [{ + Name: 'Test item', + Price: sum, + Quantity: 1, + Amount: PRICE, + PaymentMethod: 'prepayment', + PaymentObject: 'service', + Tax: 'none', + }], + Email: "${process.env.PAYMENT_TEST_EMAIL}", + Phone: "${process.env.PAYMENT_TEST_PHONE}", + Taxation: 'usn_income', + } }; const options = { @@ -1502,6 +1518,20 @@ const f = async () => { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: paymentId, Amount: 5500, + Receipt: { + Items: [{ + Name: 'Test item', + Price: sum, + Quantity: 1, + Amount: PRICE, + PaymentMethod: 'prepayment', + PaymentObject: 'service', + Tax: 'none', + }], + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + Taxation: 'usn_income', + } }; const options = { From 8e55ef0cfc7add03976dd503a629c65b3599484f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 15 Aug 2022 10:08:54 +0600 Subject: [PATCH 097/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index b4becf9a..174ba827 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1521,7 +1521,7 @@ const f = async () => { Receipt: { Items: [{ Name: 'Test item', - Price: sum, + Price: PRICE, Quantity: 1, Amount: PRICE, PaymentMethod: 'prepayment', From 8aabc43db75d4ac438c437150b9b8dd93e413308 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 15 Aug 2022 10:17:10 +0600 Subject: [PATCH 098/683] Change amount --- payments-eacq.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 174ba827..9023b23f 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -932,7 +932,7 @@ const f = async () => { Name: 'Test item', Price: sum, Quantity: 1, - Amount: PRICE, + Amount: 1, PaymentMethod: 'prepayment', PaymentObject: 'service', Tax: 'none', @@ -1523,7 +1523,7 @@ const f = async () => { Name: 'Test item', Price: PRICE, Quantity: 1, - Amount: PRICE, + Amount: 1, PaymentMethod: 'prepayment', PaymentObject: 'service', Tax: 'none', From 6e97a53f97cb942a0f3df7071904df86036394ba Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 15 Aug 2022 10:24:38 +0600 Subject: [PATCH 099/683] Remove debug function calls --- payments-eacq.cjs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 9023b23f..e3c6bcb6 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -215,7 +215,6 @@ const f = async () => { request: options, response: response.data, }; - debug(d); options?.log && options.log(d); return { @@ -250,7 +249,6 @@ const f = async () => { request: options, response: response.data, }; - debug(d); options?.log && options.log(d); return { @@ -322,7 +320,6 @@ const f = async () => { request: options, response: response.data, }; - debug(d); options?.log && options.log(d); return { @@ -906,7 +903,6 @@ const f = async () => { request: options, response: response.data, }; - debug(d); options?.log && options.log(d); return { @@ -1247,7 +1243,6 @@ const f = async () => { request: options, response: response.data, }; - debug(d); options?.log && options.log(d); return { From 65e8b3ea7fbe234d6d4627c63447b70be84f227e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 15 Aug 2022 10:26:36 +0600 Subject: [PATCH 100/683] Add from_id to errors --- payments-eacq.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index e3c6bcb6..f4b4ac79 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -960,6 +960,7 @@ const f = async () => { data: [{ id: error }], } = await deep.insert({ type_id: ${PError}, + from_id: ${tinkoffProviderId}, to_id: payId, string: { data: { value: initResult.error } }, in: { @@ -1191,6 +1192,7 @@ const f = async () => { } else if (req.Status == 'CANCELED') { await deep.insert({ type_id: ${PError}, + from_id: ${tinkoffProviderId}, to_id: req.OrderId, in: { data: [ From 783590f608213683d0c2769a4669c9ed610bc9ba Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 15 Aug 2022 10:33:01 +0600 Subject: [PATCH 101/683] Remove cancel args, leave only the required --- payments-eacq.cjs | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f4b4ac79..b5a96e64 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -922,20 +922,6 @@ const f = async () => { const newCancelData = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", PaymentId: paymentId, - Amount: 5500, - Receipt: { - Items: [{ - Name: 'Test item', - Price: sum, - Quantity: 1, - Amount: 1, - PaymentMethod: 'prepayment', - PaymentObject: 'service', - Tax: 'none', - }], - Email: "${process.env.PAYMENT_TEST_EMAIL}", - Phone: "${process.env.PAYMENT_TEST_PHONE}", - Taxation: 'usn_income', } }; @@ -1514,22 +1500,8 @@ const f = async () => { const newCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: paymentId, - Amount: 5500, - Receipt: { - Items: [{ - Name: 'Test item', - Price: PRICE, - Quantity: 1, - Amount: 1, - PaymentMethod: 'prepayment', - PaymentObject: 'service', - Tax: 'none', - }], - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - Taxation: 'usn_income', } - }; + const options = { ...newCancelData, From 7ad9c115aaf87477d773bbb5767a4f055d359fb2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 15 Aug 2022 10:39:56 +0600 Subject: [PATCH 102/683] Do not redeclare options --- payments-eacq.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index b5a96e64..1329d757 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -925,16 +925,16 @@ const f = async () => { } }; - const options = { + const cancelOptions = { ...newCancelData, Token: generateToken(newCancelData), }; - const cancelResponse = await cancel(options); + const cancelResponse = await cancel(cancelOptions); console.log({cancelResponse}); const initResult = await sendInit({ - ...options + ...cancelOptions }); } From a13297905f75eb13e77747922a8a919c7ff48f5b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 15 Aug 2022 10:47:11 +0600 Subject: [PATCH 103/683] Do not redeclare initResult --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 1329d757..e39f231c 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -933,7 +933,7 @@ const f = async () => { const cancelResponse = await cancel(cancelOptions); console.log({cancelResponse}); - const initResult = await sendInit({ + initResult = await sendInit({ ...cancelOptions }); } From 511b5e15624825bc35a9bdf49b7588b027deb0a0 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 15 Aug 2022 10:55:26 +0600 Subject: [PATCH 104/683] Remove await double --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index e39f231c..c757023e 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -840,7 +840,7 @@ const f = async () => { return init(options); }; - const mpDownPay = await await deep.select({ + const mpDownPay = await deep.select({ down: { link_id: { _eq: payId }, tree_id: { _eq: ${paymentTreeId} }, From 89d093ed0ff83fb3dd3e3ba24c6e7d2afecfee8a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 15 Aug 2022 10:59:26 +0600 Subject: [PATCH 105/683] Format --- payments-eacq.cjs | 80 +++++++++++++++++++++++++---------------------- 1 file changed, 43 insertions(+), 37 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index c757023e..e785257d 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -36,7 +36,9 @@ const payInBrowser = async ({ page, browser, url }) => { ); }); if (cvc1) { - await page.waitForSelector('input[automation-id="tui-input-card-grouped__card"]'); + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); await sleep(300); await page.type( 'input[automation-id="tui-input-card-grouped__card"]', @@ -59,7 +61,9 @@ const payInBrowser = async ({ page, browser, url }) => { await sleep(300); await page.click('button[automation-id="pay-card__submit"]'); // submit button } else { - await page.waitForSelector('input[automation-id="tui-input-card-grouped__card"]'); + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); await sleep(300); await page.type( 'input[automation-id="tui-input-card-grouped__card"]', @@ -602,7 +606,6 @@ const f = async () => { ], }, }); - const { data: [{ id: PSumProvider }], @@ -638,8 +641,9 @@ const f = async () => { console.log({ PTinkoffProvider: PTinkoffProvider }); - - const {data: [{id: tinkoffProviderId}]} = await deep.insert({ + const { + data: [{ id: tinkoffProviderId }], + } = await deep.insert({ type_id: PTinkoffProvider, in: { data: [ @@ -651,7 +655,9 @@ const f = async () => { }, }); - const {data: [{id: sumProviderId}]} = await deep.insert({ + const { + data: [{ id: sumProviderId }], + } = await deep.insert({ type_id: PSumProvider, in: { data: [ @@ -719,11 +725,10 @@ const f = async () => { }, string: { data: { - value: ` + value: /*javascript*/ ` async ({ deep, require, data: { newLink: {id: payId} } }) => { const crypto = require('crypto'); const axios = require('axios'); - const errorsConverter = { 7: 'Покупатель не найден', 53: 'Обратитесь к продавцу', @@ -984,7 +989,6 @@ const f = async () => { return {data: "dataString"}; }; `, - }, }, }); @@ -1223,16 +1227,16 @@ const f = async () => { url: getUrl('Cancel'), data: options, }); - + const error = getError(response.data.ErrorCode); - + const d = { error, request: options, response: response.data, }; options?.log && options.log(d); - + return { error, request: options, @@ -1245,10 +1249,9 @@ const f = async () => { response: null, }; } - }; + }; const callTests = async () => { - const PPayment = await deep.id(packageName, 'Payment'); const PObject = await deep.id(packageName, 'Object'); const PSum = await deep.id(packageName, 'Sum'); @@ -1298,10 +1301,8 @@ const f = async () => { console.log({ product: productId }); - - const testInit = async () => { - console.log("testInit"); + console.log('testInit'); const { data: [{ id: paymentId }], } = await deep.insert({ @@ -1375,7 +1376,7 @@ const f = async () => { const urlQuery = await deep.select({ type_id: PUrl, - to_id: payId + to_id: payId, }); console.log({ urlQuery }); @@ -1387,10 +1388,14 @@ const f = async () => { }; const testFinishAuthorize = async () => { - console.log("testFinishAuthorize"); + console.log('testFinishAuthorize'); await testInit(); const { - data: [{ value: {value: url} }], + data: [ + { + value: { value: url }, + }, + ], } = await deep.select({ type_id: PUrl, }); @@ -1406,7 +1411,7 @@ const f = async () => { }; const testConfirm = async () => { - console.log("testConfirm"); + console.log('testConfirm'); await testFinishAuthorize(); await sleep(2000); @@ -1431,16 +1436,18 @@ const f = async () => { }; const testGetState = async () => { - console.log("testGetState"); + console.log('testGetState'); await testFinishAuthorize(); const payId = await deep.select({ type_id: PPay }); - const {data: [{id: paymentId}]} = await deep.select({ + const { + data: [{ id: paymentId }], + } = await deep.select({ up: { tree_id: paymentTreeId, - link_id: payId - } - }); + link_id: payId, + }, + }); const noTokenGetStateData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1462,7 +1469,7 @@ const f = async () => { }; const testGetCardList = async () => { - console.log("testGetCardList"); + console.log('testGetCardList'); await testFinishAuthorize(); const noTokenGetCardListData = { @@ -1492,28 +1499,27 @@ const f = async () => { throw error; } finally { const cancelAllPayments = async () => { - const {data: paymentLinks} = await deep.select({ + const { data: paymentLinks } = await deep.select({ type_id: PPayment, }); - - for(const {id: paymentId} of paymentLinks) { + + for (const { id: paymentId } of paymentLinks) { const newCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: paymentId, - } - - + }; + const options = { ...newCancelData, Token: generateToken(newCancelData), }; - + const cancelResponse = await cancel(options); - - console.log({cancelResponse}); + + console.log({ cancelResponse }); } }; - + await cancelAllPayments(); } }; From 5f5a116611aae5d5553b31bc1eae89b14161ffdb Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 16 Aug 2022 11:41:54 +0600 Subject: [PATCH 106/683] Update package-lock.json --- package-lock.json | 310 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 310 insertions(+) diff --git a/package-lock.json b/package-lock.json index 41352ace..2ec96cca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -886,6 +886,15 @@ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" }, + "@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "optional": true, + "requires": { + "@types/node": "*" + } + }, "@types/zen-observable": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz", @@ -938,6 +947,14 @@ "negotiator": "0.6.3" } }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, "aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -2172,6 +2189,37 @@ "file-uri-to-path": "1.0.0" } }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "body-parser": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", @@ -2286,6 +2334,11 @@ "ieee754": "^1.2.1" } }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" + }, "buffer-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", @@ -2415,6 +2468,11 @@ "readdirp": "~3.6.0" } }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, "ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -2787,6 +2845,14 @@ "cross-spawn": "^7.0.1" } }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "requires": { + "node-fetch": "2.6.7" + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -3004,6 +3070,11 @@ "repeating": "^2.0.0" } }, + "devtools-protocol": { + "version": "0.0.1019158", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", + "integrity": "sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==" + }, "dicer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", @@ -3528,6 +3599,36 @@ } } }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -3584,6 +3685,14 @@ "reusify": "^1.0.4" } }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "requires": { + "pend": "~1.2.0" + } + }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -3632,6 +3741,15 @@ } } }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, "findup-sync": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", @@ -3863,6 +3981,11 @@ "resolved": "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-2.0.4.tgz", "integrity": "sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA==" }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "fs-mkdirp-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", @@ -4821,6 +4944,15 @@ "sshpk": "^1.7.0" } }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, "human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -5599,6 +5731,14 @@ } } }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -6025,6 +6165,11 @@ "minimist": "^1.2.6" } }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, "moesif-nodejs": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/moesif-nodejs/-/moesif-nodejs-3.2.2.tgz", @@ -8382,6 +8527,14 @@ "p-try": "^2.0.0" } }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, "p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -8472,6 +8625,11 @@ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -8515,6 +8673,11 @@ "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -8543,6 +8706,14 @@ "pinkie": "^2.0.0" } }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, "platform": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", @@ -8617,6 +8788,11 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, "prompt": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.2.0.tgz", @@ -8648,6 +8824,11 @@ "ipaddr.js": "1.9.1" } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -8687,6 +8868,40 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "puppeteer": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-16.1.0.tgz", + "integrity": "sha512-lhykJLbH2bbBaP3NfYI2Vj0T4ctrdfVdEVf8glZITPnLfqrJ0nfUzAYuIz5YcA79k5lmFKANIhEXex+jQChU3g==", + "requires": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1019158", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "pkg-dir": "4.2.0", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.8.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ws": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==" + } + } + }, "qs": { "version": "6.10.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", @@ -9697,6 +9912,21 @@ } } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -9753,6 +9983,57 @@ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==" }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + }, + "dependencies": { + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -9997,6 +10278,26 @@ } } }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } + } + }, "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -10522,6 +10823,15 @@ "decamelize": "^1.2.0" } }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", From 160d3b9b77d122a228c1bbda6de8160dbdb87ed2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 16 Aug 2022 12:57:06 +0600 Subject: [PATCH 107/683] Add console.logs --- payments-eacq.cjs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index e785257d..2c6cf1cf 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -639,7 +639,7 @@ const f = async () => { }, }); - console.log({ PTinkoffProvider: PTinkoffProvider }); + console.log({ PTinkoffProvider }); const { data: [{ id: tinkoffProviderId }], @@ -655,6 +655,8 @@ const f = async () => { }, }); + console.log({ tinkoffProviderId }); + const { data: [{ id: sumProviderId }], } = await deep.insert({ @@ -669,6 +671,8 @@ const f = async () => { }, }); + console.log({ sumProviderId }); + const insertHandlerDependencies = ` const errorsConverter = ${JSON.stringify(errorsConverter)}; const getError = ${getError}; @@ -725,7 +729,7 @@ const f = async () => { }, string: { data: { - value: /*javascript*/ ` + value: ` async ({ deep, require, data: { newLink: {id: payId} } }) => { const crypto = require('crypto'); const axios = require('axios'); @@ -1040,10 +1044,7 @@ const f = async () => { ), in: { data: { - type_id: await deep.id( - '@deep-foundation/core', - 'Contain' - ), + type_id: Contain, // from_id: deep.linkId, from_id: await deep.id('deep', 'admin'), string: { @@ -1055,10 +1056,7 @@ const f = async () => { }, to: { data: { - type_id: await deep.id( - '@deep-foundation/core', - 'SyncTextFile' - ), + type_id: SyncTextFile, string: { data: { value: ` @@ -1316,6 +1314,7 @@ const f = async () => { ], }, }); + console.log({ paymentId }); const { data: [{ id: sumId }], From 54e3e6b9451e1b52a2af242bb35abb711717a5b5 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 16 Aug 2022 13:02:27 +0600 Subject: [PATCH 108/683] Temp comment router handler --- payments-eacq.cjs | 430 +++++++++++++++++++++++----------------------- 1 file changed, 215 insertions(+), 215 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 2c6cf1cf..0bea5efe 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -999,224 +999,224 @@ const f = async () => { console.log({ payInsertHandlerId }); - await deep.insert( - { - type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { - data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, - }, - in: { - data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), - in: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'RouterStringUse' - ), - string: { - data: { - value: - process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, - }, - }, - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), - out: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'HandleRoute' - ), - to: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'Handler' - ), - from_id: await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ), - in: { - data: { - type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - to: { - data: { - type_id: SyncTextFile, - string: { - data: { - value: ` - async ( - req, - res, - next, - { deep, require, gql } - ) => { - console.log({req}); - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - const getUrl = (method) => - "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: options, - }); + // await deep.insert( + // { + // type_id: await deep.id('@deep-foundation/core', 'Port'), + // number: { + // data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, + // }, + // in: { + // data: { + // type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + // from: { + // data: { + // type_id: await deep.id('@deep-foundation/core', 'Router'), + // in: { + // data: { + // type_id: await deep.id( + // '@deep-foundation/core', + // 'RouterStringUse' + // ), + // string: { + // data: { + // value: + // process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, + // }, + // }, + // from: { + // data: { + // type_id: await deep.id('@deep-foundation/core', 'Route'), + // out: { + // data: { + // type_id: await deep.id( + // '@deep-foundation/core', + // 'HandleRoute' + // ), + // to: { + // data: { + // type_id: await deep.id( + // '@deep-foundation/core', + // 'Handler' + // ), + // from_id: await deep.id( + // '@deep-foundation/core', + // 'dockerSupportsJs' + // ), + // in: { + // data: { + // type_id: Contain, + // // from_id: deep.linkId, + // from_id: await deep.id('deep', 'admin'), + // string: { + // data: { + // value: 'tinkoffNotificationHandler', + // }, + // }, + // }, + // }, + // to: { + // data: { + // type_id: SyncTextFile, + // string: { + // data: { + // value: ` + // async ( + // req, + // res, + // next, + // { deep, require, gql } + // ) => { + // console.log({req}); + // const errorsConverter = { + // 7: 'Покупатель не найден', + // 53: 'Обратитесь к продавцу', + // 99: 'Платеж отклонен', + // 100: 'Повторите попытку позже', + // 101: 'Не пройдена идентификация 3DS', + // 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + // 103: 'Повторите попытку позже', + // 119: 'Превышено кол-во запросов на авторизацию', + // 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + // 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + // 1003: 'Неверный merchant ID', + // 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + // 1005: 'Платеж отклонен банком, выпустившим карту', + // 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + // 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + // 1008: 'Платеж отклонен, необходима идентификация', + // 1012: 'Такие операции запрещены для этой карты', + // 1013: 'Повторите попытку позже', + // 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + // 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + // 1019: 'Платеж отклонен — попробуйте снова', + // 1030: 'Повторите попытку позже', + // 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + // 1034: 'Попробуйте повторить попытку позже', + // 1038: 'Превышено количество попыток ввода ПИН-кода', + // 1039: 'Платеж отклонен — счет не найден', + // 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + // 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + // 1051: 'Недостаточно средств на карте', + // 1053: 'Платеж отклонен — счет не найден', + // 1054: 'Истек срок действия карты', + // 1055: 'Неверный ПИН', + // 1057: 'Такие операции запрещены для этой карты', + // 1058: 'Такие операции запрещены для этой карты', + // 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + // 1061: 'Превышен дневной лимит платежей по карте', + // 1062: 'Платежи по карте ограничены', + // 1063: 'Операции по карте ограничены', + // 1064: 'Проверьте сумму', + // 1065: 'Превышен дневной лимит транзакций', + // 1075: 'Превышено число попыток ввода ПИН-кода', + // 1076: 'Платеж отклонен — попробуйте снова', + // 1077: 'Коды не совпадают — попробуйте снова', + // 1080: 'Неверный срок действия', + // 1082: 'Неверный CVV', + // 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + // 1088: 'Ошибка шифрования. Попробуйте снова', + // 1089: 'Попробуйте повторить попытку позже', + // 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + // 1092: 'Платеж отклонен — попробуйте снова', + // 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + // 1094: 'Системная ошибка', + // 1096: 'Повторите попытку позже', + // 9999: 'Внутренняя ошибка системы', + // }; + // const getError = (errorCode) => + // errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + // const getUrl = (method) => + // "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; + // const confirm = async (options) => { + // try { + // const response = await axios({ + // method: 'post', + // url: getUrl('Confirm'), + // data: options, + // }); - const error = getError(response.data.ErrorCode); + // const error = getError(response.data.ErrorCode); - const d = { - error, - request: options, - response: response.data, - }; + // const d = { + // error, + // request: options, + // response: response.data, + // }; - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - if (req.Status == 'AUTORIZED') { - await confirm({ - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentId: req.PaymentId, - Amount: req.Amount, - Token: req.Token, - Receipt: req.Receipt, - }); - } else if (req.Status == 'CONFIRMED') { - await deep.insert({ - type_id: ${PPayed}, - to_id: req.OrderId, - in: { - data: [ - { - type_id: ${Contain}, - from_id: ${tinkoffProviderId}, - }, - ], - }, - }); - } else if (req.Status == 'CANCELED') { - await deep.insert({ - type_id: ${PError}, - from_id: ${tinkoffProviderId}, - to_id: req.OrderId, - in: { - data: [ - { - type_id: ${Contain}, - from_id: ${tinkoffProviderId}, - string: { data: { value: getError(req.ErrorCode) } }, - }, - ], - }, - }); - } - res.send('ok'); - }; - `, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - } - ); + // return { + // error, + // request: options, + // response: response.data, + // }; + // } catch (error) { + // return { + // error, + // request: options, + // response: null, + // }; + // } + // }; + // if (req.Status == 'AUTORIZED') { + // await confirm({ + // TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + // PaymentId: req.PaymentId, + // Amount: req.Amount, + // Token: req.Token, + // Receipt: req.Receipt, + // }); + // } else if (req.Status == 'CONFIRMED') { + // await deep.insert({ + // type_id: ${PPayed}, + // to_id: req.OrderId, + // in: { + // data: [ + // { + // type_id: ${Contain}, + // from_id: ${tinkoffProviderId}, + // }, + // ], + // }, + // }); + // } else if (req.Status == 'CANCELED') { + // await deep.insert({ + // type_id: ${PError}, + // from_id: ${tinkoffProviderId}, + // to_id: req.OrderId, + // in: { + // data: [ + // { + // type_id: ${Contain}, + // from_id: ${tinkoffProviderId}, + // string: { data: { value: getError(req.ErrorCode) } }, + // }, + // ], + // }, + // }); + // } + // res.send('ok'); + // }; + // `, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // { + // name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + // } + // ); const cancel = async (options) => { try { From 28a8de29f014e599c0e357bc884937a225ad954a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 16 Aug 2022 13:48:20 +0600 Subject: [PATCH 109/683] Fix typo --- payments-eacq.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 0bea5efe..c1a885f0 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -200,9 +200,9 @@ const f = async () => { }; const getUrl = (method) => - `"${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}"`; + `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; const getMarketUrl = (method) => - `"${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}"`; + `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; const getState = async (options) => { try { From 9d43b055f469ea0c712ad342bf1ac5122b3b60ba Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 16 Aug 2022 13:53:34 +0600 Subject: [PATCH 110/683] Console log cancel options --- payments-eacq.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index c1a885f0..ff96d177 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1513,6 +1513,8 @@ const f = async () => { Token: generateToken(newCancelData), }; + console.log({options}); + const cancelResponse = await cancel(options); console.log({ cancelResponse }); From 8c18b1b8148d1de0b37533ac1ae71eae417c067c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 16 Aug 2022 13:54:27 +0600 Subject: [PATCH 111/683] Add console logs --- payments-eacq.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index ff96d177..4a19c269 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1498,6 +1498,7 @@ const f = async () => { throw error; } finally { const cancelAllPayments = async () => { + console.log("cancelAllPayments"); const { data: paymentLinks } = await deep.select({ type_id: PPayment, }); From 9d39757ea9d5fe9b0992ec6ae194bf58464b1ece Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 16 Aug 2022 14:01:58 +0600 Subject: [PATCH 112/683] Add console.logs --- payments-eacq.cjs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 4a19c269..babfb4f5 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -856,9 +856,14 @@ const f = async () => { }, }); + console.log({mpDownPay}); + const paymentId = mpDownPay.data.find(link => link.type_id == ${PPayment}).id; const sum = mpDownPay.data.find(link => link.type_id == ${PSum}).value.value; + console.log({paymentId}); + console.log({sum}); + console.log({paymentId}); console.log({sum}); const options = { @@ -890,6 +895,8 @@ const f = async () => { Taxation: 'usn_income', } }; + + console.log({options}); const initResult = await sendInit({ ...options @@ -938,13 +945,15 @@ const f = async () => { ...newCancelData, Token: generateToken(newCancelData), }; + + console.log({cancelOptions}); const cancelResponse = await cancel(cancelOptions); console.log({cancelResponse}); - initResult = await sendInit({ - ...cancelOptions - }); + initResult = await sendInit({ + ...cancelOptions + }); } console.log({initResult}) From f6512f1668aaac35c651cd04c43f759ff41de01a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 16 Aug 2022 14:18:02 +0600 Subject: [PATCH 113/683] Update payInsertHandler --- payments-eacq.cjs | 146 ++++++++++++++++++++++++---------------------- 1 file changed, 77 insertions(+), 69 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index babfb4f5..1dc93d24 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -730,7 +730,13 @@ const f = async () => { string: { data: { value: ` - async ({ deep, require, data: { newLink: {id: payId} } }) => { + async ({ + deep, + require, + data: { + newLink: { id: payId }, + }, + }) => { const crypto = require('crypto'); const axios = require('axios'); const errorsConverter = { @@ -790,9 +796,9 @@ const f = async () => { 9999: 'Внутренняя ошибка системы', }; const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; const getUrl = (method) => - "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; + 'process.env.PAYMENT_EACQ_AND_TEST_URL' + '/' + method; const _generateToken = (dataWithPassword) => { const dataString = Object.keys(dataWithPassword) .sort((a, b) => a.localeCompare(b)) @@ -805,10 +811,10 @@ const f = async () => { const { Receipt, DATA, Shops, ...restData } = data; const dataWithPassword = { ...restData, - Password: "${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}", + Password: 'process.env.PAYMENT_EACQ_TERMINAL_PASSWORD', }; return _generateToken(dataWithPassword); - }; + }; const init = async (options) => { try { const response = await axios({ @@ -839,7 +845,7 @@ const f = async () => { }; } }; - + const sendInit = async (noTokenData) => { const options = { ...noTokenData, @@ -848,62 +854,64 @@ const f = async () => { return init(options); }; - + const mpDownPay = await deep.select({ down: { link_id: { _eq: payId }, - tree_id: { _eq: ${paymentTreeId} }, + tree_id: { _eq: paymentTreeId }, }, }); - - console.log({mpDownPay}); - - const paymentId = mpDownPay.data.find(link => link.type_id == ${PPayment}).id; - const sum = mpDownPay.data.find(link => link.type_id == ${PSum}).value.value; - - console.log({paymentId}); - console.log({sum}); - - console.log({paymentId}); - console.log({sum}); + + console.log({ mpDownPay }); + + const paymentId = mpDownPay.data.find((link) => link.type_id == PPayment).id; + const sum = mpDownPay.data.find((link) => link.type_id == PSum).value.value; + + console.log({ paymentId }); + console.log({ sum }); + + console.log({ paymentId }); + console.log({ sum }); const options = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + TerminalKey: 'process.env.PAYMENT_TEST_TERMINAL_KEY', OrderId: paymentId, - CustomerKey: ${deep.linkId}, - NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", + CustomerKey: deep.linkId, + NotificationURL: 'process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL', PayType: 'T', - Amount: ${PRICE}, + Amount: PRICE, Description: 'Test shopping', Language: 'ru', Recurrent: 'Y', DATA: { - Email: "${process.env.PAYMENT_TEST_EMAIL}", - Phone: "${process.env.PAYMENT_TEST_PHONE}", + Email: 'process.env.PAYMENT_TEST_EMAIL', + Phone: 'process.env.PAYMENT_TEST_PHONE', }, Receipt: { - Items: [{ - Name: 'Test item', - Price: sum, - Quantity: 1, - Amount: ${PRICE}, - PaymentMethod: 'prepayment', - PaymentObject: 'service', - Tax: 'none', - }], - Email: "${process.env.PAYMENT_TEST_EMAIL}", - Phone: "${process.env.PAYMENT_TEST_PHONE}", + Items: [ + { + Name: 'Test item', + Price: sum, + Quantity: 1, + Amount: PRICE, + PaymentMethod: 'prepayment', + PaymentObject: 'service', + Tax: 'none', + }, + ], + Email: 'process.env.PAYMENT_TEST_EMAIL', + Phone: 'process.env.PAYMENT_TEST_PHONE', Taxation: 'usn_income', - } + }, }; - - console.log({options}); - + + console.log({ options }); + const initResult = await sendInit({ - ...options + ...options, }); - + // TODO Remove later - if(initResult.response.ErrorCode == '8'){ + if (initResult.response.ErrorCode == '8') { const cancel = async (options) => { try { const response = await axios({ @@ -911,16 +919,16 @@ const f = async () => { url: getUrl('Cancel'), data: options, }); - + const error = getError(response.data.ErrorCode); - + const d = { error, request: options, response: response.data, }; options?.log && options.log(d); - + return { error, request: options, @@ -934,44 +942,43 @@ const f = async () => { }; } }; - + const newCancelData = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + TerminalKey: 'process.env.PAYMENT_TEST_TERMINAL_KEY', PaymentId: paymentId, - } }; - + const cancelOptions = { ...newCancelData, Token: generateToken(newCancelData), }; - - console.log({cancelOptions}); - + + console.log({ cancelOptions }); + const cancelResponse = await cancel(cancelOptions); - - console.log({cancelResponse}); + + console.log({ cancelResponse }); initResult = await sendInit({ - ...cancelOptions + ...cancelOptions, }); } - - console.log({initResult}) - + + console.log({ initResult }); + if (initResult.error != undefined) { console.log('initResult.error:', initResult.error); const { data: [{ id: error }], } = await deep.insert({ - type_id: ${PError}, - from_id: ${tinkoffProviderId}, + type_id: PError, + from_id: tinkoffProviderId, to_id: payId, string: { data: { value: initResult.error } }, in: { data: [ { - type_id: ${Contain}, - from_id: ${deep.linkId}, + type_id: Contain, + from_id: deep.linkId, }, ], }, @@ -982,25 +989,26 @@ const f = async () => { const { data: [{ id: urlId }], } = await deep.insert({ - type_id: ${PUrl}, - from_id: ${tinkoffProviderId}, + type_id: PUrl, + from_id: tinkoffProviderId, to_id: payId, string: { data: { value: initResult.response.PaymentURL } }, in: { data: [ { - type_id: ${Contain}, - from_id: ${deep.linkId}, + type_id: Contain, + from_id: deep.linkId, }, ], }, }); console.log({ urlId }); } - + // return initResult; - return {data: "dataString"}; + return { data: 'dataString' }; }; + `, }, }, From 1b0ea6fdcb6902a65bda64233469e95394493ef7 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 16 Aug 2022 14:18:22 +0600 Subject: [PATCH 114/683] Uncomment route handler --- payments-eacq.cjs | 430 +++++++++++++++++++++++----------------------- 1 file changed, 215 insertions(+), 215 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 1dc93d24..a1a24acc 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1016,224 +1016,224 @@ const f = async () => { console.log({ payInsertHandlerId }); - // await deep.insert( - // { - // type_id: await deep.id('@deep-foundation/core', 'Port'), - // number: { - // data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, - // }, - // in: { - // data: { - // type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - // from: { - // data: { - // type_id: await deep.id('@deep-foundation/core', 'Router'), - // in: { - // data: { - // type_id: await deep.id( - // '@deep-foundation/core', - // 'RouterStringUse' - // ), - // string: { - // data: { - // value: - // process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, - // }, - // }, - // from: { - // data: { - // type_id: await deep.id('@deep-foundation/core', 'Route'), - // out: { - // data: { - // type_id: await deep.id( - // '@deep-foundation/core', - // 'HandleRoute' - // ), - // to: { - // data: { - // type_id: await deep.id( - // '@deep-foundation/core', - // 'Handler' - // ), - // from_id: await deep.id( - // '@deep-foundation/core', - // 'dockerSupportsJs' - // ), - // in: { - // data: { - // type_id: Contain, - // // from_id: deep.linkId, - // from_id: await deep.id('deep', 'admin'), - // string: { - // data: { - // value: 'tinkoffNotificationHandler', - // }, - // }, - // }, - // }, - // to: { - // data: { - // type_id: SyncTextFile, - // string: { - // data: { - // value: ` - // async ( - // req, - // res, - // next, - // { deep, require, gql } - // ) => { - // console.log({req}); - // const errorsConverter = { - // 7: 'Покупатель не найден', - // 53: 'Обратитесь к продавцу', - // 99: 'Платеж отклонен', - // 100: 'Повторите попытку позже', - // 101: 'Не пройдена идентификация 3DS', - // 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - // 103: 'Повторите попытку позже', - // 119: 'Превышено кол-во запросов на авторизацию', - // 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - // 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - // 1003: 'Неверный merchant ID', - // 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - // 1005: 'Платеж отклонен банком, выпустившим карту', - // 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - // 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - // 1008: 'Платеж отклонен, необходима идентификация', - // 1012: 'Такие операции запрещены для этой карты', - // 1013: 'Повторите попытку позже', - // 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - // 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - // 1019: 'Платеж отклонен — попробуйте снова', - // 1030: 'Повторите попытку позже', - // 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - // 1034: 'Попробуйте повторить попытку позже', - // 1038: 'Превышено количество попыток ввода ПИН-кода', - // 1039: 'Платеж отклонен — счет не найден', - // 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - // 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - // 1051: 'Недостаточно средств на карте', - // 1053: 'Платеж отклонен — счет не найден', - // 1054: 'Истек срок действия карты', - // 1055: 'Неверный ПИН', - // 1057: 'Такие операции запрещены для этой карты', - // 1058: 'Такие операции запрещены для этой карты', - // 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - // 1061: 'Превышен дневной лимит платежей по карте', - // 1062: 'Платежи по карте ограничены', - // 1063: 'Операции по карте ограничены', - // 1064: 'Проверьте сумму', - // 1065: 'Превышен дневной лимит транзакций', - // 1075: 'Превышено число попыток ввода ПИН-кода', - // 1076: 'Платеж отклонен — попробуйте снова', - // 1077: 'Коды не совпадают — попробуйте снова', - // 1080: 'Неверный срок действия', - // 1082: 'Неверный CVV', - // 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - // 1088: 'Ошибка шифрования. Попробуйте снова', - // 1089: 'Попробуйте повторить попытку позже', - // 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - // 1092: 'Платеж отклонен — попробуйте снова', - // 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - // 1094: 'Системная ошибка', - // 1096: 'Повторите попытку позже', - // 9999: 'Внутренняя ошибка системы', - // }; - // const getError = (errorCode) => - // errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - // const getUrl = (method) => - // "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; - // const confirm = async (options) => { - // try { - // const response = await axios({ - // method: 'post', - // url: getUrl('Confirm'), - // data: options, - // }); + await deep.insert( + { + type_id: await deep.id('@deep-foundation/core', 'Port'), + number: { + data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, + }, + in: { + data: { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'RouterStringUse' + ), + string: { + data: { + value: + process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, + }, + }, + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + out: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'HandleRoute' + ), + to: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'Handler' + ), + from_id: await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ), + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + to: { + data: { + type_id: SyncTextFile, + string: { + data: { + value: ` + async ( + req, + res, + next, + { deep, require, gql } + ) => { + console.log({req}); + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + const getUrl = (method) => + "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: options, + }); - // const error = getError(response.data.ErrorCode); + const error = getError(response.data.ErrorCode); - // const d = { - // error, - // request: options, - // response: response.data, - // }; + const d = { + error, + request: options, + response: response.data, + }; - // return { - // error, - // request: options, - // response: response.data, - // }; - // } catch (error) { - // return { - // error, - // request: options, - // response: null, - // }; - // } - // }; - // if (req.Status == 'AUTORIZED') { - // await confirm({ - // TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - // PaymentId: req.PaymentId, - // Amount: req.Amount, - // Token: req.Token, - // Receipt: req.Receipt, - // }); - // } else if (req.Status == 'CONFIRMED') { - // await deep.insert({ - // type_id: ${PPayed}, - // to_id: req.OrderId, - // in: { - // data: [ - // { - // type_id: ${Contain}, - // from_id: ${tinkoffProviderId}, - // }, - // ], - // }, - // }); - // } else if (req.Status == 'CANCELED') { - // await deep.insert({ - // type_id: ${PError}, - // from_id: ${tinkoffProviderId}, - // to_id: req.OrderId, - // in: { - // data: [ - // { - // type_id: ${Contain}, - // from_id: ${tinkoffProviderId}, - // string: { data: { value: getError(req.ErrorCode) } }, - // }, - // ], - // }, - // }); - // } - // res.send('ok'); - // }; - // `, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // { - // name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - // } - // ); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + if (req.Status == 'AUTORIZED') { + await confirm({ + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + PaymentId: req.PaymentId, + Amount: req.Amount, + Token: req.Token, + Receipt: req.Receipt, + }); + } else if (req.Status == 'CONFIRMED') { + await deep.insert({ + type_id: ${PPayed}, + to_id: req.OrderId, + in: { + data: [ + { + type_id: ${Contain}, + from_id: ${tinkoffProviderId}, + }, + ], + }, + }); + } else if (req.Status == 'CANCELED') { + await deep.insert({ + type_id: ${PError}, + from_id: ${tinkoffProviderId}, + to_id: req.OrderId, + in: { + data: [ + { + type_id: ${Contain}, + from_id: ${tinkoffProviderId}, + string: { data: { value: getError(req.ErrorCode) } }, + }, + ], + }, + }); + } + res.send('ok'); + }; + `, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + } + ); const cancel = async (options) => { try { From afe8ad62bd4ea2a71440334d1d45a2b9155f2ed3 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 16 Aug 2022 14:34:04 +0600 Subject: [PATCH 115/683] Add js comment and fix route handler --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index a1a24acc..368b3004 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -729,7 +729,7 @@ const f = async () => { }, string: { data: { - value: ` + value: /*javascript*/ ` async ({ deep, require, From ec6a38f7a3bd84536f227454ca1ecbb9d1ef1ed1 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 16 Aug 2022 14:39:17 +0600 Subject: [PATCH 116/683] Temp comment route handler --- payments-eacq.cjs | 430 +++++++++++++++++++++++----------------------- 1 file changed, 215 insertions(+), 215 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 368b3004..dd328196 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1016,224 +1016,224 @@ const f = async () => { console.log({ payInsertHandlerId }); - await deep.insert( - { - type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { - data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, - }, - in: { - data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), - in: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'RouterStringUse' - ), - string: { - data: { - value: - process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, - }, - }, - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), - out: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'HandleRoute' - ), - to: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'Handler' - ), - from_id: await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ), - in: { - data: { - type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - to: { - data: { - type_id: SyncTextFile, - string: { - data: { - value: ` - async ( - req, - res, - next, - { deep, require, gql } - ) => { - console.log({req}); - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - const getUrl = (method) => - "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: options, - }); + // await deep.insert( + // { + // type_id: await deep.id('@deep-foundation/core', 'Port'), + // number: { + // data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, + // }, + // in: { + // data: { + // type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + // from: { + // data: { + // type_id: await deep.id('@deep-foundation/core', 'Router'), + // in: { + // data: { + // type_id: await deep.id( + // '@deep-foundation/core', + // 'RouterStringUse' + // ), + // string: { + // data: { + // value: + // process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, + // }, + // }, + // from: { + // data: { + // type_id: await deep.id('@deep-foundation/core', 'Route'), + // out: { + // data: { + // type_id: await deep.id( + // '@deep-foundation/core', + // 'HandleRoute' + // ), + // to: { + // data: { + // type_id: await deep.id( + // '@deep-foundation/core', + // 'Handler' + // ), + // from_id: await deep.id( + // '@deep-foundation/core', + // 'dockerSupportsJs' + // ), + // in: { + // data: { + // type_id: Contain, + // // from_id: deep.linkId, + // from_id: await deep.id('deep', 'admin'), + // string: { + // data: { + // value: 'tinkoffNotificationHandler', + // }, + // }, + // }, + // }, + // to: { + // data: { + // type_id: SyncTextFile, + // string: { + // data: { + // value: ` + // async ( + // req, + // res, + // next, + // { deep, require, gql } + // ) => { + // console.log({req}); + // const errorsConverter = { + // 7: 'Покупатель не найден', + // 53: 'Обратитесь к продавцу', + // 99: 'Платеж отклонен', + // 100: 'Повторите попытку позже', + // 101: 'Не пройдена идентификация 3DS', + // 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + // 103: 'Повторите попытку позже', + // 119: 'Превышено кол-во запросов на авторизацию', + // 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + // 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + // 1003: 'Неверный merchant ID', + // 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + // 1005: 'Платеж отклонен банком, выпустившим карту', + // 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + // 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + // 1008: 'Платеж отклонен, необходима идентификация', + // 1012: 'Такие операции запрещены для этой карты', + // 1013: 'Повторите попытку позже', + // 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + // 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + // 1019: 'Платеж отклонен — попробуйте снова', + // 1030: 'Повторите попытку позже', + // 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + // 1034: 'Попробуйте повторить попытку позже', + // 1038: 'Превышено количество попыток ввода ПИН-кода', + // 1039: 'Платеж отклонен — счет не найден', + // 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + // 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + // 1051: 'Недостаточно средств на карте', + // 1053: 'Платеж отклонен — счет не найден', + // 1054: 'Истек срок действия карты', + // 1055: 'Неверный ПИН', + // 1057: 'Такие операции запрещены для этой карты', + // 1058: 'Такие операции запрещены для этой карты', + // 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + // 1061: 'Превышен дневной лимит платежей по карте', + // 1062: 'Платежи по карте ограничены', + // 1063: 'Операции по карте ограничены', + // 1064: 'Проверьте сумму', + // 1065: 'Превышен дневной лимит транзакций', + // 1075: 'Превышено число попыток ввода ПИН-кода', + // 1076: 'Платеж отклонен — попробуйте снова', + // 1077: 'Коды не совпадают — попробуйте снова', + // 1080: 'Неверный срок действия', + // 1082: 'Неверный CVV', + // 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + // 1088: 'Ошибка шифрования. Попробуйте снова', + // 1089: 'Попробуйте повторить попытку позже', + // 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + // 1092: 'Платеж отклонен — попробуйте снова', + // 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + // 1094: 'Системная ошибка', + // 1096: 'Повторите попытку позже', + // 9999: 'Внутренняя ошибка системы', + // }; + // const getError = (errorCode) => + // errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + // const getUrl = (method) => + // "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; + // const confirm = async (options) => { + // try { + // const response = await axios({ + // method: 'post', + // url: getUrl('Confirm'), + // data: options, + // }); - const error = getError(response.data.ErrorCode); + // const error = getError(response.data.ErrorCode); - const d = { - error, - request: options, - response: response.data, - }; + // const d = { + // error, + // request: options, + // response: response.data, + // }; - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - if (req.Status == 'AUTORIZED') { - await confirm({ - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentId: req.PaymentId, - Amount: req.Amount, - Token: req.Token, - Receipt: req.Receipt, - }); - } else if (req.Status == 'CONFIRMED') { - await deep.insert({ - type_id: ${PPayed}, - to_id: req.OrderId, - in: { - data: [ - { - type_id: ${Contain}, - from_id: ${tinkoffProviderId}, - }, - ], - }, - }); - } else if (req.Status == 'CANCELED') { - await deep.insert({ - type_id: ${PError}, - from_id: ${tinkoffProviderId}, - to_id: req.OrderId, - in: { - data: [ - { - type_id: ${Contain}, - from_id: ${tinkoffProviderId}, - string: { data: { value: getError(req.ErrorCode) } }, - }, - ], - }, - }); - } - res.send('ok'); - }; - `, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - } - ); + // return { + // error, + // request: options, + // response: response.data, + // }; + // } catch (error) { + // return { + // error, + // request: options, + // response: null, + // }; + // } + // }; + // if (req.Status == 'AUTORIZED') { + // await confirm({ + // TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + // PaymentId: req.PaymentId, + // Amount: req.Amount, + // Token: req.Token, + // Receipt: req.Receipt, + // }); + // } else if (req.Status == 'CONFIRMED') { + // await deep.insert({ + // type_id: ${PPayed}, + // to_id: req.OrderId, + // in: { + // data: [ + // { + // type_id: ${Contain}, + // from_id: ${tinkoffProviderId}, + // }, + // ], + // }, + // }); + // } else if (req.Status == 'CANCELED') { + // await deep.insert({ + // type_id: ${PError}, + // from_id: ${tinkoffProviderId}, + // to_id: req.OrderId, + // in: { + // data: [ + // { + // type_id: ${Contain}, + // from_id: ${tinkoffProviderId}, + // string: { data: { value: getError(req.ErrorCode) } }, + // }, + // ], + // }, + // }); + // } + // res.send('ok'); + // }; + // `, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // }, + // { + // name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + // } + // ); const cancel = async (options) => { try { From e751d463a27ea1b944a1997114fa046d0ddc151f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 16 Aug 2022 14:42:08 +0600 Subject: [PATCH 117/683] Insert paymentTreeId to template string --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index dd328196..123c1afc 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -858,7 +858,7 @@ const f = async () => { const mpDownPay = await deep.select({ down: { link_id: { _eq: payId }, - tree_id: { _eq: paymentTreeId }, + tree_id: { _eq: ${paymentTreeId} }, }, }); From 7e92c2b0b83efe07eee36861f6173528ac94bc9a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 16 Aug 2022 14:48:39 +0600 Subject: [PATCH 118/683] Fix pay insert handler --- payments-eacq.cjs | 160 ++++++++++++++++++++++------------------------ 1 file changed, 78 insertions(+), 82 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 123c1afc..0e6896af 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -730,13 +730,7 @@ const f = async () => { string: { data: { value: /*javascript*/ ` - async ({ - deep, - require, - data: { - newLink: { id: payId }, - }, - }) => { + async ({ deep, require, data: { newLink: {id: payId} } }) => { const crypto = require('crypto'); const axios = require('axios'); const errorsConverter = { @@ -796,9 +790,9 @@ const f = async () => { 9999: 'Внутренняя ошибка системы', }; const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; const getUrl = (method) => - 'process.env.PAYMENT_EACQ_AND_TEST_URL' + '/' + method; + "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; const _generateToken = (dataWithPassword) => { const dataString = Object.keys(dataWithPassword) .sort((a, b) => a.localeCompare(b)) @@ -811,10 +805,10 @@ const f = async () => { const { Receipt, DATA, Shops, ...restData } = data; const dataWithPassword = { ...restData, - Password: 'process.env.PAYMENT_EACQ_TERMINAL_PASSWORD', + Password: "${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}", }; return _generateToken(dataWithPassword); - }; + }; const init = async (options) => { try { const response = await axios({ @@ -845,7 +839,7 @@ const f = async () => { }; } }; - + const sendInit = async (noTokenData) => { const options = { ...noTokenData, @@ -854,64 +848,64 @@ const f = async () => { return init(options); }; - + const mpDownPay = await deep.select({ down: { link_id: { _eq: payId }, tree_id: { _eq: ${paymentTreeId} }, }, }); - - console.log({ mpDownPay }); - - const paymentId = mpDownPay.data.find((link) => link.type_id == PPayment).id; - const sum = mpDownPay.data.find((link) => link.type_id == PSum).value.value; - - console.log({ paymentId }); - console.log({ sum }); - - console.log({ paymentId }); - console.log({ sum }); + + console.log({mpDownPay}); + + const paymentId = mpDownPay.data.find(link => link.type_id == ${PPayment}).id; + const sum = mpDownPay.data.find(link => link.type_id == ${PSum}).value.value; + + console.log({paymentId}); + console.log({sum}); + + console.log({paymentId}); + console.log({sum}); const options = { - TerminalKey: 'process.env.PAYMENT_TEST_TERMINAL_KEY', + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", OrderId: paymentId, - CustomerKey: deep.linkId, - NotificationURL: 'process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL', + CustomerKey: ${deep.linkId}, + NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", PayType: 'T', - Amount: PRICE, + Amount: ${PRICE}, Description: 'Test shopping', Language: 'ru', Recurrent: 'Y', DATA: { - Email: 'process.env.PAYMENT_TEST_EMAIL', - Phone: 'process.env.PAYMENT_TEST_PHONE', + Email: "${process.env.PAYMENT_TEST_EMAIL}", + Phone: "${process.env.PAYMENT_TEST_PHONE}", }, Receipt: { - Items: [ - { - Name: 'Test item', - Price: sum, - Quantity: 1, - Amount: PRICE, - PaymentMethod: 'prepayment', - PaymentObject: 'service', - Tax: 'none', - }, - ], - Email: 'process.env.PAYMENT_TEST_EMAIL', - Phone: 'process.env.PAYMENT_TEST_PHONE', + Items: [{ + Name: 'Test item', + Price: sum, + Quantity: 1, + Amount: ${PRICE}, + PaymentMethod: 'prepayment', + PaymentObject: 'service', + Tax: 'none', + }], + Email: "${process.env.PAYMENT_TEST_EMAIL}", + Phone: "${process.env.PAYMENT_TEST_PHONE}", Taxation: 'usn_income', - }, + } }; - - console.log({ options }); - + + console.log({options}); + const initResult = await sendInit({ - ...options, + ...options }); - + + console.log({initResult}); + // TODO Remove later - if (initResult.response.ErrorCode == '8') { + if(initResult.response.ErrorCode == '8'){ const cancel = async (options) => { try { const response = await axios({ @@ -919,16 +913,16 @@ const f = async () => { url: getUrl('Cancel'), data: options, }); - + const error = getError(response.data.ErrorCode); - + const d = { error, request: options, response: response.data, }; options?.log && options.log(d); - + return { error, request: options, @@ -942,43 +936,46 @@ const f = async () => { }; } }; - + const newCancelData = { - TerminalKey: 'process.env.PAYMENT_TEST_TERMINAL_KEY', + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", PaymentId: paymentId, - }; - + }; + + const cancelOptions = { ...newCancelData, Token: generateToken(newCancelData), }; - - console.log({ cancelOptions }); - + + console.log({cancelOptions}); + const cancelResponse = await cancel(cancelOptions); - - console.log({ cancelResponse }); + + console.log({cancelResponse}); + + console.log({cancelResponse}); initResult = await sendInit({ - ...cancelOptions, + ...cancelOptions }); } - - console.log({ initResult }); - + + console.log({initResult}) + if (initResult.error != undefined) { console.log('initResult.error:', initResult.error); const { data: [{ id: error }], } = await deep.insert({ - type_id: PError, - from_id: tinkoffProviderId, + type_id: ${PError}, + from_id: ${tinkoffProviderId}, to_id: payId, string: { data: { value: initResult.error } }, in: { data: [ { - type_id: Contain, - from_id: deep.linkId, + type_id: ${Contain}, + from_id: ${deep.linkId}, }, ], }, @@ -989,26 +986,25 @@ const f = async () => { const { data: [{ id: urlId }], } = await deep.insert({ - type_id: PUrl, - from_id: tinkoffProviderId, + type_id: ${PUrl}, + from_id: ${tinkoffProviderId}, to_id: payId, string: { data: { value: initResult.response.PaymentURL } }, in: { data: [ { - type_id: Contain, - from_id: deep.linkId, + type_id: ${Contain}, + from_id: ${deep.linkId}, }, ], }, }); console.log({ urlId }); } - + // return initResult; - return { data: 'dataString' }; + return {data: "dataString"}; }; - `, }, }, @@ -1151,15 +1147,15 @@ const f = async () => { // url: getUrl('Confirm'), // data: options, // }); - + // const error = getError(response.data.ErrorCode); - + // const d = { // error, // request: options, // response: response.data, // }; - + // return { // error, // request: options, @@ -1515,7 +1511,7 @@ const f = async () => { throw error; } finally { const cancelAllPayments = async () => { - console.log("cancelAllPayments"); + console.log('cancelAllPayments'); const { data: paymentLinks } = await deep.select({ type_id: PPayment, }); @@ -1531,7 +1527,7 @@ const f = async () => { Token: generateToken(newCancelData), }; - console.log({options}); + console.log({ options }); const cancelResponse = await cancel(options); From 0499c576a993a8c17e483c841df3e1ff8ecbd64e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 16 Aug 2022 15:09:13 +0600 Subject: [PATCH 119/683] Uncomment route handler --- payments-eacq.cjs | 436 +++++++++++++++++++++++----------------------- 1 file changed, 218 insertions(+), 218 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 0e6896af..0197a0b2 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1012,224 +1012,224 @@ const f = async () => { console.log({ payInsertHandlerId }); - // await deep.insert( - // { - // type_id: await deep.id('@deep-foundation/core', 'Port'), - // number: { - // data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, - // }, - // in: { - // data: { - // type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - // from: { - // data: { - // type_id: await deep.id('@deep-foundation/core', 'Router'), - // in: { - // data: { - // type_id: await deep.id( - // '@deep-foundation/core', - // 'RouterStringUse' - // ), - // string: { - // data: { - // value: - // process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, - // }, - // }, - // from: { - // data: { - // type_id: await deep.id('@deep-foundation/core', 'Route'), - // out: { - // data: { - // type_id: await deep.id( - // '@deep-foundation/core', - // 'HandleRoute' - // ), - // to: { - // data: { - // type_id: await deep.id( - // '@deep-foundation/core', - // 'Handler' - // ), - // from_id: await deep.id( - // '@deep-foundation/core', - // 'dockerSupportsJs' - // ), - // in: { - // data: { - // type_id: Contain, - // // from_id: deep.linkId, - // from_id: await deep.id('deep', 'admin'), - // string: { - // data: { - // value: 'tinkoffNotificationHandler', - // }, - // }, - // }, - // }, - // to: { - // data: { - // type_id: SyncTextFile, - // string: { - // data: { - // value: ` - // async ( - // req, - // res, - // next, - // { deep, require, gql } - // ) => { - // console.log({req}); - // const errorsConverter = { - // 7: 'Покупатель не найден', - // 53: 'Обратитесь к продавцу', - // 99: 'Платеж отклонен', - // 100: 'Повторите попытку позже', - // 101: 'Не пройдена идентификация 3DS', - // 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - // 103: 'Повторите попытку позже', - // 119: 'Превышено кол-во запросов на авторизацию', - // 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - // 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - // 1003: 'Неверный merchant ID', - // 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - // 1005: 'Платеж отклонен банком, выпустившим карту', - // 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - // 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - // 1008: 'Платеж отклонен, необходима идентификация', - // 1012: 'Такие операции запрещены для этой карты', - // 1013: 'Повторите попытку позже', - // 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - // 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - // 1019: 'Платеж отклонен — попробуйте снова', - // 1030: 'Повторите попытку позже', - // 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - // 1034: 'Попробуйте повторить попытку позже', - // 1038: 'Превышено количество попыток ввода ПИН-кода', - // 1039: 'Платеж отклонен — счет не найден', - // 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - // 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - // 1051: 'Недостаточно средств на карте', - // 1053: 'Платеж отклонен — счет не найден', - // 1054: 'Истек срок действия карты', - // 1055: 'Неверный ПИН', - // 1057: 'Такие операции запрещены для этой карты', - // 1058: 'Такие операции запрещены для этой карты', - // 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - // 1061: 'Превышен дневной лимит платежей по карте', - // 1062: 'Платежи по карте ограничены', - // 1063: 'Операции по карте ограничены', - // 1064: 'Проверьте сумму', - // 1065: 'Превышен дневной лимит транзакций', - // 1075: 'Превышено число попыток ввода ПИН-кода', - // 1076: 'Платеж отклонен — попробуйте снова', - // 1077: 'Коды не совпадают — попробуйте снова', - // 1080: 'Неверный срок действия', - // 1082: 'Неверный CVV', - // 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - // 1088: 'Ошибка шифрования. Попробуйте снова', - // 1089: 'Попробуйте повторить попытку позже', - // 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - // 1092: 'Платеж отклонен — попробуйте снова', - // 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - // 1094: 'Системная ошибка', - // 1096: 'Повторите попытку позже', - // 9999: 'Внутренняя ошибка системы', - // }; - // const getError = (errorCode) => - // errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - // const getUrl = (method) => - // "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; - // const confirm = async (options) => { - // try { - // const response = await axios({ - // method: 'post', - // url: getUrl('Confirm'), - // data: options, - // }); - - // const error = getError(response.data.ErrorCode); - - // const d = { - // error, - // request: options, - // response: response.data, - // }; - - // return { - // error, - // request: options, - // response: response.data, - // }; - // } catch (error) { - // return { - // error, - // request: options, - // response: null, - // }; - // } - // }; - // if (req.Status == 'AUTORIZED') { - // await confirm({ - // TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - // PaymentId: req.PaymentId, - // Amount: req.Amount, - // Token: req.Token, - // Receipt: req.Receipt, - // }); - // } else if (req.Status == 'CONFIRMED') { - // await deep.insert({ - // type_id: ${PPayed}, - // to_id: req.OrderId, - // in: { - // data: [ - // { - // type_id: ${Contain}, - // from_id: ${tinkoffProviderId}, - // }, - // ], - // }, - // }); - // } else if (req.Status == 'CANCELED') { - // await deep.insert({ - // type_id: ${PError}, - // from_id: ${tinkoffProviderId}, - // to_id: req.OrderId, - // in: { - // data: [ - // { - // type_id: ${Contain}, - // from_id: ${tinkoffProviderId}, - // string: { data: { value: getError(req.ErrorCode) } }, - // }, - // ], - // }, - // }); - // } - // res.send('ok'); - // }; - // `, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // }, - // { - // name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - // } - // ); + await deep.insert( + { + type_id: await deep.id('@deep-foundation/core', 'Port'), + number: { + data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, + }, + in: { + data: { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'RouterStringUse' + ), + string: { + data: { + value: + process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, + }, + }, + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + out: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'HandleRoute' + ), + to: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'Handler' + ), + from_id: await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ), + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + to: { + data: { + type_id: SyncTextFile, + string: { + data: { + value: ` + async ( + req, + res, + next, + { deep, require, gql } + ) => { + console.log({req}); + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + const getUrl = (method) => + "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + if (req.Status == 'AUTORIZED') { + await confirm({ + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + PaymentId: req.PaymentId, + Amount: req.Amount, + Token: req.Token, + Receipt: req.Receipt, + }); + } else if (req.Status == 'CONFIRMED') { + await deep.insert({ + type_id: ${PPayed}, + to_id: req.OrderId, + in: { + data: [ + { + type_id: ${Contain}, + from_id: ${tinkoffProviderId}, + }, + ], + }, + }); + } else if (req.Status == 'CANCELED') { + await deep.insert({ + type_id: ${PError}, + from_id: ${tinkoffProviderId}, + to_id: req.OrderId, + in: { + data: [ + { + type_id: ${Contain}, + from_id: ${tinkoffProviderId}, + string: { data: { value: getError(req.ErrorCode) } }, + }, + ], + }, + }); + } + res.send('ok'); + }; + `, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + } + ); const cancel = async (options) => { try { From fb8b80dc4fef4101b000fae25771224021442ad6 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 17 Aug 2022 15:07:59 +0600 Subject: [PATCH 120/683] Update intendation --- payments-eacq.cjs | 3028 ++++++++++++++++++++++----------------------- 1 file changed, 1514 insertions(+), 1514 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 0197a0b2..15c4528d 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -6,8 +6,8 @@ require('dotenv').config(); const { generateApolloClient } = require('@deep-foundation/hasura/client'); const { DeepClient } = require('@deep-foundation/deeplinks/imports/client'); const { - minilinks, - Link, + minilinks, + Link, } = require('@deep-foundation/deeplinks/imports/minilinks'); const puppeteer = require('puppeteer'); const crypto = require('crypto'); @@ -20,1523 +20,1523 @@ const PRICE = 5500; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const payInBrowser = async ({ page, browser, url }) => { - await page.goto(url, { waitUntil: 'networkidle2' }); - await sleep(3000); - const oldForm = await page.evaluate(() => { - return !!document.querySelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - }); - if (oldForm) { - console.log('OLD FORM!!!!!!!'); - // Старая форма используется на тестовом сервере - const cvc1 = await page.evaluate(() => { - return !!document.querySelector( - 'button[automation-id="pay-card__submit"]' - ); - }); - if (cvc1) { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_TEST_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_TEST_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-card__submit"]'); // submit button - } else { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_E2C_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_E2C_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-wallet__submit"]'); // submit button - await sleep(300); - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(1000); - } - // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен - await sleep(1000); - } else { - console.log('NEW FORM!!!!!!!'); - await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number - await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date - await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code - await page.click('button[type=submit]'); // submit button - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(3000); - } - await browser.close(); + await page.goto(url, { waitUntil: 'networkidle2' }); + await sleep(3000); + const oldForm = await page.evaluate(() => { + return !!document.querySelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + }); + if (oldForm) { + console.log('OLD FORM!!!!!!!'); + // Старая форма используется на тестовом сервере + const cvc1 = await page.evaluate(() => { + return !!document.querySelector( + 'button[automation-id="pay-card__submit"]' + ); + }); + if (cvc1) { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_TEST_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_TEST_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-card__submit"]'); // submit button + } else { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_E2C_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_E2C_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-wallet__submit"]'); // submit button + await sleep(300); + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(1000); + } + // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен + await sleep(1000); + } else { + console.log('NEW FORM!!!!!!!'); + await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number + await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date + await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code + await page.click('button[type=submit]'); // submit button + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(3000); + } + await browser.close(); }; const f = async () => { - const apolloClient = generateApolloClient({ - path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE - ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') - ? false - : true, - // admin token in prealpha deep secret key - // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', - }); - - const unloginedDeep = new DeepClient({ apolloClient }); - - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - - const _generateToken = (dataWithPassword) => { - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => `${acc}${item}`, ''); - const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - return hash; - }; - - const generateToken = (data) => { - const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { - ...restData, - Password: process.env.PAYMENT_EACQ_TERMINAL_PASSWORD, - }; - return _generateToken(dataWithPassword); - }; - - const getUrl = (method) => - `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; - const getMarketUrl = (method) => - `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; - - const getState = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetState'), - data: options, - }); - - const error = getError(response.data.ErrorCode); - - const d = { - error, - request: options, - response: response.data, - }; - options?.log && options.log(d); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCardList = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCardList'), - headers: { - 'Content-Type': 'application/json', - }, - data: options, - }); - - const error = getError(response.data.ErrorCode || '0'); - - const d = { - error, - request: options, - response: response.data, - }; - options?.log && options.log(d); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const init = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Init'), - headers: { - 'Content-Type': 'application/json', - }, - data: options, - }); - - const error = getError(response.data.ErrorCode); - - const d = { - error, - request: options, - response: response.data, - }; - - options?.log && options.log(d); - - return d; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const sendInit = async (noTokenData) => { - const options = { - ...noTokenData, - Token: generateToken(noTokenData), - }; - - return init(options); - }; - - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: options, - }); - - const error = getError(response.data.ErrorCode); - - const d = { - error, - request: options, - response: response.data, - }; - options?.log && options.log(d); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const guest = await unloginedDeep.guest(); - const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); - const admin = await guestDeep.login({ - linkId: await guestDeep.id('deep', 'admin'), - }); - const deep = new DeepClient({ deep: guestDeep, ...admin }); - - const User = await deep.id('@deep-foundation/core', 'User'); - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); - const Join = await deep.id('@deep-foundation/core', 'Join'); - const Contain = await deep.id('@deep-foundation/core', 'Contain'); - const Value = await deep.id('@deep-foundation/core', 'Value'); - const String = await deep.id('@deep-foundation/core', 'String'); - const Package = await deep.id('@deep-foundation/core', 'Package'); - - const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); - const dockerSupportsJs = await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ); - const Handler = await deep.id('@deep-foundation/core', 'Handler'); - const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); - const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); - - const Tree = await deep.id('@deep-foundation/core', 'Tree'); - const TreeIncludeNode = await deep.id( - '@deep-foundation/core', - 'TreeIncludeNode' - ); - const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); - const TreeIncludeDown = await deep.id( - '@deep-foundation/core', - 'TreeIncludeDown' - ); - - const Rule = await deep.id('@deep-foundation/core', 'Rule'); - const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); - const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); - const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); - const Selector = await deep.id('@deep-foundation/core', 'Selector'); - const SelectorInclude = await deep.id( - '@deep-foundation/core', - 'SelectorInclude' - ); - const SelectorExclude = await deep.id( - '@deep-foundation/core', - 'SelectorExclude' - ); - const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); - const containTree = await deep.id('@deep-foundation/core', 'containTree'); - const AllowInsertType = await deep.id( - '@deep-foundation/core', - 'AllowInsertType' - ); - const AllowDeleteType = await deep.id( - '@deep-foundation/core', - 'AllowDeleteType' - ); - const SelectorFilter = await deep.id( - '@deep-foundation/core', - 'SelectorFilter' - ); - const Query = await deep.id('@deep-foundation/core', 'Query'); - const usersId = await deep.id('deep', 'users'); - - const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); - const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); - const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); - const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); - const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); - const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); - const BaseError = await deep.id('@deep-foundation/payments', 'Error'); - - const { - data: [{ id: packageId }], - } = await deep.insert({ - type_id: Package, - string: { data: { value: packageName } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - out: { - data: [ - { - type_id: Join, - to_id: await deep.id('deep', 'users', 'packages'), - }, - { - type_id: Join, - to_id: await deep.id('deep', 'admin'), - }, - ], - }, - }); - - console.log({ packageId }); - - const { - data: [{ id: PPayment }], - } = await deep.insert({ - type_id: BasePayment, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Payment' } }, - }, - }, - }); - - console.log({ PPayment: PPayment }); - - const { - data: [{ id: PObject }], - } = await deep.insert({ - type_id: BaseObject, - from_id: PPayment, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Object' } }, - }, - }, - }); - - console.log({ PObject: PObject }); - - const { - data: [{ id: PSum }], - } = await deep.insert({ - type_id: BaseSum, - from_id: Any, - to_id: PPayment, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Sum' } }, - }, - }, - }); - - console.log({ PSum: PSum }); - - const { - data: [{ id: PPay }], - } = await deep.insert({ - type_id: BasePay, - from_id: Any, - to_id: PSum, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Pay' } }, - }, - }, - }); - - console.log({ PPay: PPay }); - - const { - data: [{ id: PUrl }], - } = await deep.insert({ - type_id: BaseUrl, - from_id: Any, - to_id: PPay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Url' } }, - }, - }, - }); - - console.log({ PUrl: PUrl }); - - const { - data: [{ id: PPayed }], - } = await deep.insert({ - type_id: BasePayed, - from_id: Any, - to_id: PUrl, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Payed' } }, - }, - }, - }); - - console.log({ PPayed: PPayed }); - - const { - data: [{ id: PError }], - } = await deep.insert({ - type_id: BaseError, - from_id: Any, - to_id: PPay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Error' } }, - }, - }, - }); - - console.log({ PError: PError }); - - const { - data: [{ id: paymentTreeId }], - } = await deep.insert({ - type_id: Tree, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'paymentTree' } }, - }, - }, - out: { - data: [ - { - type_id: TreeIncludeNode, - to_id: PPayment, - }, - { - type_id: TreeIncludeUp, - to_id: PSum, - }, - { - type_id: TreeIncludeDown, - to_id: PObject, - }, - { - type_id: TreeIncludeUp, - to_id: PError, - }, - { - type_id: TreeIncludeUp, - to_id: PPayed, - }, - { - type_id: TreeIncludeUp, - to_id: PPay, - }, - { - type_id: TreeIncludeUp, - to_id: PUrl, - }, - ], - }, - }); - - const { - data: [{ id: PSumProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'SumProvider' } }, - }, - }, - }); - - console.log({ PSumProvider: PSumProvider }); - - const { - data: [{ id: PTinkoffProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'TinkoffProvider' } }, - }, - }, - }); - - console.log({ PTinkoffProvider }); - - const { - data: [{ id: tinkoffProviderId }], - } = await deep.insert({ - type_id: PTinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ tinkoffProviderId }); - - const { - data: [{ id: sumProviderId }], - } = await deep.insert({ - type_id: PSumProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ sumProviderId }); - - const insertHandlerDependencies = ` - const errorsConverter = ${JSON.stringify(errorsConverter)}; - const getError = ${getError}; - const getUrl = ${getUrl}; - const _generateToken = ${_generateToken}; - const generateToken = ${generateToken}; - const init = ${init}; - const sendInit = ${sendInit}; - const Contain = ${Contain}; - const paymentTreeId = ${paymentTreeId}; - const PError = ${PError}; - const crypto = require('crypto'); - const axios = require('axios'); + const apolloClient = generateApolloClient({ + path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE + ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') + ? false + : true, + // admin token in prealpha deep secret key + // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', + }); + + const unloginedDeep = new DeepClient({ apolloClient }); + + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + + const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + return hash; + }; + + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + ...restData, + Password: process.env.PAYMENT_EACQ_TERMINAL_PASSWORD, + }; + return _generateToken(dataWithPassword); + }; + + const getUrl = (method) => + `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; + const getMarketUrl = (method) => + `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; + + const getState = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetState'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getCardList = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCardList'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode || '0'); + + const d = { + error, + request: options, + response: response.data, + }; + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const init = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Init'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + + options?.log && options.log(d); + + return d; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const sendInit = async (noTokenData) => { + const options = { + ...noTokenData, + Token: generateToken(noTokenData), + }; + + return init(options); + }; + + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const guest = await unloginedDeep.guest(); + const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); + const admin = await guestDeep.login({ + linkId: await guestDeep.id('deep', 'admin'), + }); + const deep = new DeepClient({ deep: guestDeep, ...admin }); + + const User = await deep.id('@deep-foundation/core', 'User'); + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + const Join = await deep.id('@deep-foundation/core', 'Join'); + const Contain = await deep.id('@deep-foundation/core', 'Contain'); + const Value = await deep.id('@deep-foundation/core', 'Value'); + const String = await deep.id('@deep-foundation/core', 'String'); + const Package = await deep.id('@deep-foundation/core', 'Package'); + + const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); + const dockerSupportsJs = await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ); + const Handler = await deep.id('@deep-foundation/core', 'Handler'); + const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); + const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); + + const Tree = await deep.id('@deep-foundation/core', 'Tree'); + const TreeIncludeNode = await deep.id( + '@deep-foundation/core', + 'TreeIncludeNode' + ); + const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); + const TreeIncludeDown = await deep.id( + '@deep-foundation/core', + 'TreeIncludeDown' + ); + + const Rule = await deep.id('@deep-foundation/core', 'Rule'); + const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); + const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); + const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); + const Selector = await deep.id('@deep-foundation/core', 'Selector'); + const SelectorInclude = await deep.id( + '@deep-foundation/core', + 'SelectorInclude' + ); + const SelectorExclude = await deep.id( + '@deep-foundation/core', + 'SelectorExclude' + ); + const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); + const containTree = await deep.id('@deep-foundation/core', 'containTree'); + const AllowInsertType = await deep.id( + '@deep-foundation/core', + 'AllowInsertType' + ); + const AllowDeleteType = await deep.id( + '@deep-foundation/core', + 'AllowDeleteType' + ); + const SelectorFilter = await deep.id( + '@deep-foundation/core', + 'SelectorFilter' + ); + const Query = await deep.id('@deep-foundation/core', 'Query'); + const usersId = await deep.id('deep', 'users'); + + const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); + const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); + const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); + const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); + const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); + const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); + const BaseError = await deep.id('@deep-foundation/payments', 'Error'); + + const { + data: [{ id: packageId }], + } = await deep.insert({ + type_id: Package, + string: { data: { value: packageName } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + out: { + data: [ + { + type_id: Join, + to_id: await deep.id('deep', 'users', 'packages'), + }, + { + type_id: Join, + to_id: await deep.id('deep', 'admin'), + }, + ], + }, + }); + + console.log({ packageId }); + + const { + data: [{ id: PPayment }], + } = await deep.insert({ + type_id: BasePayment, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Payment' } }, + }, + }, + }); + + console.log({ PPayment: PPayment }); + + const { + data: [{ id: PObject }], + } = await deep.insert({ + type_id: BaseObject, + from_id: PPayment, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Object' } }, + }, + }, + }); + + console.log({ PObject: PObject }); + + const { + data: [{ id: PSum }], + } = await deep.insert({ + type_id: BaseSum, + from_id: Any, + to_id: PPayment, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Sum' } }, + }, + }, + }); + + console.log({ PSum: PSum }); + + const { + data: [{ id: PPay }], + } = await deep.insert({ + type_id: BasePay, + from_id: Any, + to_id: PSum, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Pay' } }, + }, + }, + }); + + console.log({ PPay: PPay }); + + const { + data: [{ id: PUrl }], + } = await deep.insert({ + type_id: BaseUrl, + from_id: Any, + to_id: PPay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Url' } }, + }, + }, + }); + + console.log({ PUrl: PUrl }); + + const { + data: [{ id: PPayed }], + } = await deep.insert({ + type_id: BasePayed, + from_id: Any, + to_id: PUrl, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Payed' } }, + }, + }, + }); + + console.log({ PPayed: PPayed }); + + const { + data: [{ id: PError }], + } = await deep.insert({ + type_id: BaseError, + from_id: Any, + to_id: PPay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Error' } }, + }, + }, + }); + + console.log({ PError: PError }); + + const { + data: [{ id: paymentTreeId }], + } = await deep.insert({ + type_id: Tree, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'paymentTree' } }, + }, + }, + out: { + data: [ + { + type_id: TreeIncludeNode, + to_id: PPayment, + }, + { + type_id: TreeIncludeUp, + to_id: PSum, + }, + { + type_id: TreeIncludeDown, + to_id: PObject, + }, + { + type_id: TreeIncludeUp, + to_id: PError, + }, + { + type_id: TreeIncludeUp, + to_id: PPayed, + }, + { + type_id: TreeIncludeUp, + to_id: PPay, + }, + { + type_id: TreeIncludeUp, + to_id: PUrl, + }, + ], + }, + }); + + const { + data: [{ id: PSumProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'SumProvider' } }, + }, + }, + }); + + console.log({ PSumProvider: PSumProvider }); + + const { + data: [{ id: PTinkoffProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'TinkoffProvider' } }, + }, + }, + }); + + console.log({ PTinkoffProvider }); + + const { + data: [{ id: tinkoffProviderId }], + } = await deep.insert({ + type_id: PTinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ tinkoffProviderId }); + + const { + data: [{ id: sumProviderId }], + } = await deep.insert({ + type_id: PSumProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ sumProviderId }); + + const insertHandlerDependencies = ` + const errorsConverter = ${JSON.stringify(errorsConverter)}; + const getError = ${getError}; + const getUrl = ${getUrl}; + const _generateToken = ${_generateToken}; + const generateToken = ${generateToken}; + const init = ${init}; + const sendInit = ${sendInit}; + const Contain = ${Contain}; + const paymentTreeId = ${paymentTreeId}; + const PError = ${PError}; + const crypto = require('crypto'); + const axios = require('axios'); `; - const { - data: [{ id: payInsertHandlerId }], - } = await deep.insert({ - type_id: SyncTextFile, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'joinInsertHandlerFile' } }, - }, - { - from_id: dockerSupportsJs, - type_id: Handler, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'joinInsertHandler' } }, - }, - { - type_id: HandleInsert, - from_id: PPay, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'joinInsertHandle' } }, - }, - ], - }, - }, - ], - }, - }, - ], - }, - string: { - data: { - value: /*javascript*/ ` - async ({ deep, require, data: { newLink: {id: payId} } }) => { - const crypto = require('crypto'); - const axios = require('axios'); - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - const getUrl = (method) => - "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; - const _generateToken = (dataWithPassword) => { - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => acc.toString() + item.toString(), ''); - const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - return hash; - }; - const generateToken = (data) => { - const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { - ...restData, - Password: "${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}", - }; - return _generateToken(dataWithPassword); - }; - const init = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Init'), - headers: { - 'Content-Type': 'application/json', - }, - data: options, - }); - - const error = getError(response.data.ErrorCode); - - const d = { - error, - request: options, - response: response.data, - }; - - options?.log && options.log(d); - - return d; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const sendInit = async (noTokenData) => { - const options = { - ...noTokenData, - Token: generateToken(noTokenData), - }; - - return init(options); - }; - - const mpDownPay = await deep.select({ - down: { - link_id: { _eq: payId }, - tree_id: { _eq: ${paymentTreeId} }, - }, - }); - - console.log({mpDownPay}); - - const paymentId = mpDownPay.data.find(link => link.type_id == ${PPayment}).id; - const sum = mpDownPay.data.find(link => link.type_id == ${PSum}).value.value; - - console.log({paymentId}); - console.log({sum}); - - console.log({paymentId}); - console.log({sum}); - const options = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - OrderId: paymentId, - CustomerKey: ${deep.linkId}, - NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", - PayType: 'T', - Amount: ${PRICE}, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: "${process.env.PAYMENT_TEST_EMAIL}", - Phone: "${process.env.PAYMENT_TEST_PHONE}", - }, - Receipt: { - Items: [{ - Name: 'Test item', - Price: sum, - Quantity: 1, - Amount: ${PRICE}, - PaymentMethod: 'prepayment', - PaymentObject: 'service', - Tax: 'none', - }], - Email: "${process.env.PAYMENT_TEST_EMAIL}", - Phone: "${process.env.PAYMENT_TEST_PHONE}", - Taxation: 'usn_income', - } - }; - - console.log({options}); - - const initResult = await sendInit({ - ...options - }); - - console.log({initResult}); - - // TODO Remove later - if(initResult.response.ErrorCode == '8'){ - const cancel = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Cancel'), - data: options, - }); - - const error = getError(response.data.ErrorCode); - - const d = { - error, - request: options, - response: response.data, - }; - options?.log && options.log(d); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const newCancelData = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentId: paymentId, - }; - - - const cancelOptions = { - ...newCancelData, - Token: generateToken(newCancelData), - }; - - console.log({cancelOptions}); - - const cancelResponse = await cancel(cancelOptions); - - console.log({cancelResponse}); - - console.log({cancelResponse}); - initResult = await sendInit({ - ...cancelOptions - }); - } - - console.log({initResult}) - - if (initResult.error != undefined) { - console.log('initResult.error:', initResult.error); - const { - data: [{ id: error }], - } = await deep.insert({ - type_id: ${PError}, - from_id: ${tinkoffProviderId}, - to_id: payId, - string: { data: { value: initResult.error } }, - in: { - data: [ - { - type_id: ${Contain}, - from_id: ${deep.linkId}, - }, - ], - }, - }); - console.log({ error }); - } else { - console.log('Payment URL:', initResult.response.PaymentURL); - const { - data: [{ id: urlId }], - } = await deep.insert({ - type_id: ${PUrl}, - from_id: ${tinkoffProviderId}, - to_id: payId, - string: { data: { value: initResult.response.PaymentURL } }, - in: { - data: [ - { - type_id: ${Contain}, - from_id: ${deep.linkId}, - }, - ], - }, - }); - console.log({ urlId }); - } - - // return initResult; - return {data: "dataString"}; - }; - `, - }, - }, - }); - - console.log({ payInsertHandlerId }); - - await deep.insert( - { - type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { - data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, - }, - in: { - data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), - in: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'RouterStringUse' - ), - string: { - data: { - value: - process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, - }, - }, - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), - out: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'HandleRoute' - ), - to: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'Handler' - ), - from_id: await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ), - in: { - data: { - type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - to: { - data: { - type_id: SyncTextFile, - string: { - data: { - value: ` - async ( - req, - res, - next, - { deep, require, gql } - ) => { - console.log({req}); - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - const getUrl = (method) => - "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: options, - }); - - const error = getError(response.data.ErrorCode); - - const d = { - error, - request: options, - response: response.data, - }; - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - if (req.Status == 'AUTORIZED') { - await confirm({ - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentId: req.PaymentId, - Amount: req.Amount, - Token: req.Token, - Receipt: req.Receipt, - }); - } else if (req.Status == 'CONFIRMED') { - await deep.insert({ - type_id: ${PPayed}, - to_id: req.OrderId, - in: { - data: [ - { - type_id: ${Contain}, - from_id: ${tinkoffProviderId}, - }, - ], - }, - }); - } else if (req.Status == 'CANCELED') { - await deep.insert({ - type_id: ${PError}, - from_id: ${tinkoffProviderId}, - to_id: req.OrderId, - in: { - data: [ - { - type_id: ${Contain}, - from_id: ${tinkoffProviderId}, - string: { data: { value: getError(req.ErrorCode) } }, - }, - ], - }, - }); - } - res.send('ok'); - }; - `, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - } - ); - - const cancel = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Cancel'), - data: options, - }); - - const error = getError(response.data.ErrorCode); - - const d = { - error, - request: options, - response: response.data, - }; - options?.log && options.log(d); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const callTests = async () => { - const PPayment = await deep.id(packageName, 'Payment'); - const PObject = await deep.id(packageName, 'Object'); - const PSum = await deep.id(packageName, 'Sum'); - const PPay = await deep.id(packageName, 'Pay'); - const PUrl = await deep.id(packageName, 'Url'); - const PPayed = await deep.id(packageName, 'Payed'); - const PError = await deep.id(packageName, 'Error'); - - const paymentTreeId = await deep.id(packageName, 'paymentTree'); - - console.log({ paymentTreeId }); - - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); - - const { - data: [{ id: Product }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ Product }); - - const { - data: [{ id: productId }], - } = await deep.insert({ - type_id: Product, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ product: productId }); - - const testInit = async () => { - console.log('testInit'); - const { - data: [{ id: paymentId }], - } = await deep.insert({ - type_id: PPayment, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ paymentId }); - - const { - data: [{ id: sumId }], - } = await deep.insert({ - type_id: PSum, - from_id: sumProviderId, - to_id: paymentId, - number: { data: { value: 150 } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ sum: sumId }); - - const { - data: [{ id: objectId }], - } = await deep.insert({ - type_id: PObject, - from_id: paymentId, - to_id: productId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ object: objectId }); - - const { - data: [{ id: payId }], - } = await deep.insert({ - type_id: PPay, - from_id: deep.linkId, - to_id: sumId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ pay: payId }); - - await sleep(9000); - - const urlQuery = await deep.select({ - type_id: PUrl, - to_id: payId, - }); - - console.log({ urlQuery }); - - const hasUrl = urlQuery.data.length > 0; - if (!hasUrl) { - throw new Error('Url not found.'); - } - }; - - const testFinishAuthorize = async () => { - console.log('testFinishAuthorize'); - await testInit(); - const { - data: [ - { - value: { value: url }, - }, - ], - } = await deep.select({ - type_id: PUrl, - }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - await payInBrowser({ - browser, - page, - url, - }); - }; - - const testConfirm = async () => { - console.log('testConfirm'); - await testFinishAuthorize(); - - await sleep(2000); - - const { data } = await deep.select({ - type_id: PPayed, - }); - - if (data.length === 0) { - throw new Error('Payment is not confirmed'); - } - }; - - const testCancel = async () => { - const testCancelAfterPay = async () => { - const testCancelBeforeConfirmFullPrice = async () => {}; - const testCancelBeforeConfirmCustomPriceX2 = async () => {}; - const testCancelAfterConfirmFullPrice = async () => {}; - const testCancelAfterConfirmCustomPriceX2 = async () => {}; - }; - const testCancelBeforePay = async () => {}; - }; - - const testGetState = async () => { - console.log('testGetState'); - await testFinishAuthorize(); - - const payId = await deep.select({ type_id: PPay }); - const { - data: [{ id: paymentId }], - } = await deep.select({ - up: { - tree_id: paymentTreeId, - link_id: payId, - }, - }); - - const noTokenGetStateData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - }; - - const newGetStateData = { - ...noTokenGetStateData, - PaymentId: paymentId, - }; - - const options = { - ...newGetStateData, - Token: generateToken(newGetStateData), - }; - - const result = await getState(options); - - expect(result.error).to.equal(undefined); - }; - - const testGetCardList = async () => { - console.log('testGetCardList'); - await testFinishAuthorize(); - - const noTokenGetCardListData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: customerKey, - }; - - const options = { - ...noTokenGetCardListData, - Token: generateToken(noTokenGetStateData), - }; - - const result = await getCardList(options); - - expect(result.error).to.equal(undefined); - }; - - await testInit(); - await testConfirm(); - await testGetState(); - await testGetCardList(); - }; - - try { - await callTests(); - } catch (error) { - throw error; - } finally { - const cancelAllPayments = async () => { - console.log('cancelAllPayments'); - const { data: paymentLinks } = await deep.select({ - type_id: PPayment, - }); - - for (const { id: paymentId } of paymentLinks) { - const newCancelData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: paymentId, - }; - - const options = { - ...newCancelData, - Token: generateToken(newCancelData), - }; - - console.log({ options }); - - const cancelResponse = await cancel(options); - - console.log({ cancelResponse }); - } - }; - - await cancelAllPayments(); - } + const { + data: [{ id: payInsertHandlerId }], + } = await deep.insert({ + type_id: SyncTextFile, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'joinInsertHandlerFile' } }, + }, + { + from_id: dockerSupportsJs, + type_id: Handler, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'joinInsertHandler' } }, + }, + { + type_id: HandleInsert, + from_id: PPay, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'joinInsertHandle' } }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + string: { + data: { + value: /*javascript*/ ` + async ({ deep, require, data: { newLink: {id: payId} } }) => { + const crypto = require('crypto'); + const axios = require('axios'); + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + const getUrl = (method) => + "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; + const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => acc.toString() + item.toString(), ''); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + return hash; + }; + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + ...restData, + Password: "${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}", + }; + return _generateToken(dataWithPassword); + }; + const init = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Init'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + + options?.log && options.log(d); + + return d; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const sendInit = async (noTokenData) => { + const options = { + ...noTokenData, + Token: generateToken(noTokenData), + }; + + return init(options); + }; + + const mpDownPay = await deep.select({ + down: { + link_id: { _eq: payId }, + tree_id: { _eq: ${paymentTreeId} }, + }, + }); + + console.log({mpDownPay}); + + const paymentId = mpDownPay.data.find(link => link.type_id == ${PPayment}).id; + const sum = mpDownPay.data.find(link => link.type_id == ${PSum}).value.value; + + console.log({paymentId}); + console.log({sum}); + + console.log({paymentId}); + console.log({sum}); + const options = { + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + OrderId: paymentId, + CustomerKey: ${deep.linkId}, + NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", + PayType: 'T', + Amount: ${PRICE}, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: "${process.env.PAYMENT_TEST_EMAIL}", + Phone: "${process.env.PAYMENT_TEST_PHONE}", + }, + Receipt: { + Items: [{ + Name: 'Test item', + Price: sum, + Quantity: 1, + Amount: ${PRICE}, + PaymentMethod: 'prepayment', + PaymentObject: 'service', + Tax: 'none', + }], + Email: "${process.env.PAYMENT_TEST_EMAIL}", + Phone: "${process.env.PAYMENT_TEST_PHONE}", + Taxation: 'usn_income', + } + }; + + console.log({options}); + + const initResult = await sendInit({ + ...options + }); + + console.log({initResult}); + + // TODO Remove later + if(initResult.response.ErrorCode == '8'){ + const cancel = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Cancel'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const newCancelData = { + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + PaymentId: paymentId, + }; + + + const cancelOptions = { + ...newCancelData, + Token: generateToken(newCancelData), + }; + + console.log({cancelOptions}); + + const cancelResponse = await cancel(cancelOptions); + + console.log({cancelResponse}); + + console.log({cancelResponse}); + initResult = await sendInit({ + ...cancelOptions + }); + } + + console.log({initResult}) + + if (initResult.error != undefined) { + console.log('initResult.error:', initResult.error); + const { + data: [{ id: error }], + } = await deep.insert({ + type_id: ${PError}, + from_id: ${tinkoffProviderId}, + to_id: payId, + string: { data: { value: initResult.error } }, + in: { + data: [ + { + type_id: ${Contain}, + from_id: ${deep.linkId}, + }, + ], + }, + }); + console.log({ error }); + } else { + console.log('Payment URL:', initResult.response.PaymentURL); + const { + data: [{ id: urlId }], + } = await deep.insert({ + type_id: ${PUrl}, + from_id: ${tinkoffProviderId}, + to_id: payId, + string: { data: { value: initResult.response.PaymentURL } }, + in: { + data: [ + { + type_id: ${Contain}, + from_id: ${deep.linkId}, + }, + ], + }, + }); + console.log({ urlId }); + } + + // return initResult; + return {data: "dataString"}; + }; + `, + }, + }, + }); + + console.log({ payInsertHandlerId }); + + await deep.insert( + { + type_id: await deep.id('@deep-foundation/core', 'Port'), + number: { + data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, + }, + in: { + data: { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'RouterStringUse' + ), + string: { + data: { + value: + process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, + }, + }, + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + out: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'HandleRoute' + ), + to: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'Handler' + ), + from_id: await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ), + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + to: { + data: { + type_id: SyncTextFile, + string: { + data: { + value: ` + async ( + req, + res, + next, + { deep, require, gql } + ) => { + console.log({req}); + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + const getUrl = (method) => + "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + if (req.Status == 'AUTORIZED') { + await confirm({ + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + PaymentId: req.PaymentId, + Amount: req.Amount, + Token: req.Token, + Receipt: req.Receipt, + }); + } else if (req.Status == 'CONFIRMED') { + await deep.insert({ + type_id: ${PPayed}, + to_id: req.OrderId, + in: { + data: [ + { + type_id: ${Contain}, + from_id: ${tinkoffProviderId}, + }, + ], + }, + }); + } else if (req.Status == 'CANCELED') { + await deep.insert({ + type_id: ${PError}, + from_id: ${tinkoffProviderId}, + to_id: req.OrderId, + in: { + data: [ + { + type_id: ${Contain}, + from_id: ${tinkoffProviderId}, + string: { data: { value: getError(req.ErrorCode) } }, + }, + ], + }, + }); + } + res.send('ok'); + }; + `, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + } + ); + + const cancel = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Cancel'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const callTests = async () => { + const PPayment = await deep.id(packageName, 'Payment'); + const PObject = await deep.id(packageName, 'Object'); + const PSum = await deep.id(packageName, 'Sum'); + const PPay = await deep.id(packageName, 'Pay'); + const PUrl = await deep.id(packageName, 'Url'); + const PPayed = await deep.id(packageName, 'Payed'); + const PError = await deep.id(packageName, 'Error'); + + const paymentTreeId = await deep.id(packageName, 'paymentTree'); + + console.log({ paymentTreeId }); + + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ Product }); + + const { + data: [{ id: productId }], + } = await deep.insert({ + type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ product: productId }); + + const testInit = async () => { + console.log('testInit'); + const { + data: [{ id: paymentId }], + } = await deep.insert({ + type_id: PPayment, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ paymentId }); + + const { + data: [{ id: sumId }], + } = await deep.insert({ + type_id: PSum, + from_id: sumProviderId, + to_id: paymentId, + number: { data: { value: 150 } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ sum: sumId }); + + const { + data: [{ id: objectId }], + } = await deep.insert({ + type_id: PObject, + from_id: paymentId, + to_id: productId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ object: objectId }); + + const { + data: [{ id: payId }], + } = await deep.insert({ + type_id: PPay, + from_id: deep.linkId, + to_id: sumId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ pay: payId }); + + await sleep(9000); + + const urlQuery = await deep.select({ + type_id: PUrl, + to_id: payId, + }); + + console.log({ urlQuery }); + + const hasUrl = urlQuery.data.length > 0; + if (!hasUrl) { + throw new Error('Url not found.'); + } + }; + + const testFinishAuthorize = async () => { + console.log('testFinishAuthorize'); + await testInit(); + const { + data: [ + { + value: { value: url }, + }, + ], + } = await deep.select({ + type_id: PUrl, + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + await payInBrowser({ + browser, + page, + url, + }); + }; + + const testConfirm = async () => { + console.log('testConfirm'); + await testFinishAuthorize(); + + await sleep(2000); + + const { data } = await deep.select({ + type_id: PPayed, + }); + + if (data.length === 0) { + throw new Error('Payment is not confirmed'); + } + }; + + const testCancel = async () => { + const testCancelAfterPay = async () => { + const testCancelBeforeConfirmFullPrice = async () => {}; + const testCancelBeforeConfirmCustomPriceX2 = async () => {}; + const testCancelAfterConfirmFullPrice = async () => {}; + const testCancelAfterConfirmCustomPriceX2 = async () => {}; + }; + const testCancelBeforePay = async () => {}; + }; + + const testGetState = async () => { + console.log('testGetState'); + await testFinishAuthorize(); + + const payId = await deep.select({ type_id: PPay }); + const { + data: [{ id: paymentId }], + } = await deep.select({ + up: { + tree_id: paymentTreeId, + link_id: payId, + }, + }); + + const noTokenGetStateData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + }; + + const newGetStateData = { + ...noTokenGetStateData, + PaymentId: paymentId, + }; + + const options = { + ...newGetStateData, + Token: generateToken(newGetStateData), + }; + + const result = await getState(options); + + expect(result.error).to.equal(undefined); + }; + + const testGetCardList = async () => { + console.log('testGetCardList'); + await testFinishAuthorize(); + + const noTokenGetCardListData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: customerKey, + }; + + const options = { + ...noTokenGetCardListData, + Token: generateToken(noTokenGetStateData), + }; + + const result = await getCardList(options); + + expect(result.error).to.equal(undefined); + }; + + await testInit(); + await testConfirm(); + await testGetState(); + await testGetCardList(); + }; + + try { + await callTests(); + } catch (error) { + throw error; + } finally { + const cancelAllPayments = async () => { + console.log('cancelAllPayments'); + const { data: paymentLinks } = await deep.select({ + type_id: PPayment, + }); + + for (const { id: paymentId } of paymentLinks) { + const newCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: paymentId, + }; + + const options = { + ...newCancelData, + Token: generateToken(newCancelData), + }; + + console.log({ options }); + + const cancelResponse = await cancel(options); + + console.log({ cancelResponse }); + } + }; + + await cancelAllPayments(); + } }; f(); From db8e14c688c89c1c04083af7b05f84e1bb95a260 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 10:48:00 +0600 Subject: [PATCH 121/683] Use let instead of var --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 15c4528d..1c97c229 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -898,7 +898,7 @@ const f = async () => { console.log({options}); - const initResult = await sendInit({ + let initResult = await sendInit({ ...options }); From 19b9a83e7a75524fed55bbd7a12e09cf30fb1a72 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 11:10:55 +0600 Subject: [PATCH 122/683] Trying to use checkOrder to get bank payment id --- payments-eacq.cjs | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 1c97c229..a6b78912 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -906,6 +906,51 @@ const f = async () => { // TODO Remove later if(initResult.response.ErrorCode == '8'){ + const checkOrder = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('CheckOrder'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + debug(d); + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const newCheckOrderData = { + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + OrderId: paymentId, + }; + + + const checkOrderOptions = { + ...newCancelData, + Token: generateToken(newCancelData), + }; + + const paymentId = checkOrder(checkOrderOptions); + const cancel = async (options) => { try { const response = await axios({ From 6d0e954fbad6ad48ac135692b3d0af3a31bf91a6 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 11:13:30 +0600 Subject: [PATCH 123/683] Rename paymentId to bankPaymentId --- payments-eacq.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index a6b78912..84541a3a 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -949,7 +949,7 @@ const f = async () => { Token: generateToken(newCancelData), }; - const paymentId = checkOrder(checkOrderOptions); + const bankPaymentId = checkOrder(checkOrderOptions); const cancel = async (options) => { try { @@ -984,7 +984,7 @@ const f = async () => { const newCancelData = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentId: paymentId, + PaymentId: bankPaymentId, }; From 271f3755305b9b3f37671d359e2629badda44adc Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 11:15:00 +0600 Subject: [PATCH 124/683] Fix typo --- payments-eacq.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 84541a3a..93283633 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -945,8 +945,8 @@ const f = async () => { const checkOrderOptions = { - ...newCancelData, - Token: generateToken(newCancelData), + ...newCheckOrderData, + Token: generateToken(newCheckOrderData), }; const bankPaymentId = checkOrder(checkOrderOptions); From 45f6cb6fa5a08ce30fc41407f86be4b4a3e7d26c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 11:20:18 +0600 Subject: [PATCH 125/683] Add await --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 93283633..e455a7fe 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -949,7 +949,7 @@ const f = async () => { Token: generateToken(newCheckOrderData), }; - const bankPaymentId = checkOrder(checkOrderOptions); + const bankPaymentId = await checkOrder(checkOrderOptions); const cancel = async (options) => { try { From 897f1fe089807e7df82f7bea5944d6b47e94ceb4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 11:26:03 +0600 Subject: [PATCH 126/683] Remove debug --- payments-eacq.cjs | 2 -- 1 file changed, 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index e455a7fe..f1f6c960 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -921,8 +921,6 @@ const f = async () => { request: options, response: response.data, }; - debug(d); - options?.log && options.log(d); return { error, From e1825442d2c6c32dad1d4098e7187ee27c0c7f44 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 11:34:32 +0600 Subject: [PATCH 127/683] Add logs --- payments-eacq.cjs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f1f6c960..6fd2c7a9 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -947,7 +947,17 @@ const f = async () => { Token: generateToken(newCheckOrderData), }; - const bankPaymentId = await checkOrder(checkOrderOptions); + console.log({checkOrderOptions}); + + const checkOrderResponse = await checkOrder(checkOrderOptions); + + console.log({checkOrderResponse}); + + if(checkOrderResponse.error != undefined) { + throw new Exception(checkOrderResponse.error); + } + + const bankPaymentId = checkOrderResponse.response. const cancel = async (options) => { try { From 7f7d328c48e214aed8ab8a2e6b7802d4721ef2a1 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 11:37:48 +0600 Subject: [PATCH 128/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 6fd2c7a9..06054f56 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -957,7 +957,7 @@ const f = async () => { throw new Exception(checkOrderResponse.error); } - const bankPaymentId = checkOrderResponse.response. + const cancel = async (options) => { try { From fa5760d5816cf925eeab99f7d82e4aa26972f78c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 11:42:43 +0600 Subject: [PATCH 129/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 06054f56..173519d0 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -954,7 +954,7 @@ const f = async () => { console.log({checkOrderResponse}); if(checkOrderResponse.error != undefined) { - throw new Exception(checkOrderResponse.error); + throw new Error(checkOrderResponse.error); } From a116b6d66d9bfbc57cbc2def2b688546b3b54690 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 13:33:23 +0600 Subject: [PATCH 130/683] Add uniqid --- package-lock.json | 14452 +++++++++++++++++++++++++++++++++++++++++++- package.json | 4 +- 2 files changed, 14345 insertions(+), 111 deletions(-) diff --git a/package-lock.json b/package-lock.json index 85f67f12..ccb96afd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,14232 @@ { "name": "@deep-foundation/dev", "version": "0.0.20", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "@deep-foundation/dev", + "version": "0.0.20", + "license": "ISC", + "dependencies": { + "@deep-foundation/deeplinks": "0.0.93", + "@types/gulp": "^4.0.8", + "concurrently": "^5.3.0", + "cross-env": "^7.0.3", + "del": "^6.0.0", + "gulp": "^4.0.2", + "gulp-run-command": "^0.0.10", + "i": "^0.3.6", + "minimist": "^1.2.5", + "npm": "^7.5.4", + "prompt": "^1.2.0", + "puppeteer": "^16.1.0", + "rimraf": "^3.0.2", + "simple-git": "^2.45.0", + "ts-node": "^9.1.1", + "typescript": "^4.1.5", + "uniqid": "^5.4.0" + }, + "devDependencies": {} + }, + "node_modules/@apollo/client": { + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.6.9.tgz", + "integrity": "sha512-Y1yu8qa2YeaCUBVuw08x8NHenFi0sw2I3KCu7Kw9mDSu86HmmtHJkCAifKVrN2iPgDTW/BbP3EpSV8/EQCcxZA==", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@wry/context": "^0.6.0", + "@wry/equality": "^0.5.0", + "@wry/trie": "^0.3.0", + "graphql-tag": "^2.12.6", + "hoist-non-react-statics": "^3.3.2", + "optimism": "^0.16.1", + "prop-types": "^15.7.2", + "symbol-observable": "^4.0.0", + "ts-invariant": "^0.10.3", + "tslib": "^2.3.0", + "zen-observable-ts": "^1.2.5" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0", + "graphql-ws": "^5.5.5", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" + }, + "peerDependenciesMeta": { + "graphql-ws": { + "optional": true + }, + "react": { + "optional": true + }, + "subscriptions-transport-ws": { + "optional": true + } + } + }, + "node_modules/@apollo/protobufjs": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.2.tgz", + "integrity": "sha512-vF+zxhPiLtkwxONs6YanSt1EpwpGilThpneExUN5K3tCymuxNnVq2yojTvnpRjv2QfsEIt/n7ozPIIzBLwGIDQ==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + }, + "bin": { + "apollo-pbjs": "bin/pbjs", + "apollo-pbts": "bin/pbts" + } + }, + "node_modules/@apollo/protobufjs/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "node_modules/@apollo/react-hooks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@apollo/react-hooks/-/react-hooks-4.0.0.tgz", + "integrity": "sha512-fCu0cbne3gbUl0QbA8X4L33iuuFVQbC5Jo2MIKRK8CyawR6PoxDpFdFA1kc6033ODZuZZ9Eo4RdeJFlFIIYcLA==", + "dependencies": { + "@apollo/client": "latest" + } + }, + "node_modules/@apollo/react-hooks/node_modules/@apollo/client": { + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.6.9.tgz", + "integrity": "sha512-Y1yu8qa2YeaCUBVuw08x8NHenFi0sw2I3KCu7Kw9mDSu86HmmtHJkCAifKVrN2iPgDTW/BbP3EpSV8/EQCcxZA==", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@wry/context": "^0.6.0", + "@wry/equality": "^0.5.0", + "@wry/trie": "^0.3.0", + "graphql-tag": "^2.12.6", + "hoist-non-react-statics": "^3.3.2", + "optimism": "^0.16.1", + "prop-types": "^15.7.2", + "symbol-observable": "^4.0.0", + "ts-invariant": "^0.10.3", + "tslib": "^2.3.0", + "zen-observable-ts": "^1.2.5" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0", + "graphql-ws": "^5.5.5", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" + }, + "peerDependenciesMeta": { + "graphql-ws": { + "optional": true + }, + "react": { + "optional": true + }, + "subscriptions-transport-ws": { + "optional": true + } + } + }, + "node_modules/@apollo/utils.dropunuseddefinitions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz", + "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==", + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.keyvaluecache": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.1.tgz", + "integrity": "sha512-nLgYLomqjVimEzQ4cdvVQkcryi970NDvcRVPfd0OPeXhBfda38WjBq+WhQFk+czSHrmrSp34YHBxpat0EtiowA==", + "dependencies": { + "@apollo/utils.logger": "^1.0.0", + "lru-cache": "^7.10.1" + } + }, + "node_modules/@apollo/utils.keyvaluecache/node_modules/lru-cache": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/@apollo/utils.logger": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.0.tgz", + "integrity": "sha512-dx9XrjyisD2pOa+KsB5RcDbWIAdgC91gJfeyLCgy0ctJMjQe7yZK5kdWaWlaOoCeX0z6YI9iYlg7vMPyMpQF3Q==" + }, + "node_modules/@apollo/utils.printwithreducedwhitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz", + "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==", + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.removealiases": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz", + "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==", + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.sortast": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz", + "integrity": "sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA==", + "dependencies": { + "lodash.sortby": "^4.7.0" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.stripsensitiveliterals": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz", + "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==", + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.usagereporting": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.0.tgz", + "integrity": "sha512-5PL7hJMkTPmdo3oxPtigRrIyPxDk/ddrUryHPDaezL1lSFExpNzsDd2f1j0XJoHOg350GRd3LyD64caLA2PU1w==", + "dependencies": { + "@apollo/utils.dropunuseddefinitions": "^1.1.0", + "@apollo/utils.printwithreducedwhitespace": "^1.1.0", + "@apollo/utils.removealiases": "1.0.0", + "@apollo/utils.sortast": "^1.1.0", + "@apollo/utils.stripsensitiveliterals": "^1.2.0", + "apollo-reporting-protobuf": "^3.3.1" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.usagereporting/node_modules/@apollo/protobufjs": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", + "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + }, + "bin": { + "apollo-pbjs": "bin/pbjs", + "apollo-pbts": "bin/pbts" + } + }, + "node_modules/@apollo/utils.usagereporting/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "node_modules/@apollo/utils.usagereporting/node_modules/apollo-reporting-protobuf": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", + "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", + "dependencies": { + "@apollo/protobufjs": "1.2.4" + } + }, + "node_modules/@apollographql/apollo-tools": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz", + "integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==", + "engines": { + "node": ">=8", + "npm": ">=6" + }, + "peerDependencies": { + "graphql": "^14.2.1 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@apollographql/graphql-playground-html": { + "version": "1.6.27", + "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.27.tgz", + "integrity": "sha512-tea2LweZvn6y6xFV11K0KC8ETjmm52mQrW+ezgB2O/aTQf8JGyFmMcRPFgUaQZeHbWdm8iisDC6EjOKsXu0nfw==", + "dependencies": { + "xss": "^1.0.8" + } + }, + "node_modules/@apollographql/graphql-upload-8-fork": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@apollographql/graphql-upload-8-fork/-/graphql-upload-8-fork-8.1.3.tgz", + "integrity": "sha512-ssOPUT7euLqDXcdVv3Qs4LoL4BPtfermW1IOouaqEmj36TpHYDmYDIbKoSQxikd9vtMumFnP87OybH7sC9fJ6g==", + "dependencies": { + "@types/express": "*", + "@types/fs-capacitor": "*", + "@types/koa": "*", + "busboy": "^0.3.1", + "fs-capacitor": "^2.0.4", + "http-errors": "^1.7.3", + "object-path": "^0.11.4" + }, + "engines": { + "node": ">=8.5" + }, + "peerDependencies": { + "graphql": "0.13.1 - 15" + } + }, + "node_modules/@deep-foundation/deeplinks": { + "version": "0.0.93", + "resolved": "https://registry.npmjs.org/@deep-foundation/deeplinks/-/deeplinks-0.0.93.tgz", + "integrity": "sha512-UIvVax1+QlM94ehM0oSeRRQHwBzq8cV3Ec/jMMFl7j+QXIr8QRqKf7TYipNRt+faFTlfK25wEbDGQJi0elTRPQ==", + "dependencies": { + "@apollo/client": "^3.5.8", + "@deep-foundation/hasura": "0.0.17", + "@deep-foundation/materialized-path": "^0.0.11", + "@deep-foundation/react-hasura": "0.0.5", + "@deep-foundation/store": "0.0.6", + "@types/jest": "^26.0.22", + "@types/node": "^14.17.34", + "@types/react": "^17.0.19", + "apollo-boost": "^0.4.9", + "apollo-server": "^2.21.0", + "apollo-server-core": "^3.6.1", + "apollo-server-express": "^3.5.0", + "atob": "^2.1.2", + "axios": "^0.24.0", + "body-parser": "^1.19.0", + "buffer": "^6.0.3", + "chai": "^4.3.4", + "cross-env": "^7.0.3", + "debug": "^4.3.3", + "dotenv": "^8.2.0", + "fix-path": "^3.0.0", + "get-port": "^5.1.1", + "gists": "^2.0.0", + "graphql": "^15.5.0", + "graphql-playground-middleware-express": "^1.7.23", + "graphql-tag": "^2.11.0", + "http-proxy-middleware": "^2.0.1", + "internal-ip": "^6.2.0", + "jsonwebtoken": "^8.5.1", + "microtime": "^3.0.0", + "moesif-nodejs": "^3.1.19", + "nodemon": "^2.0.15", + "rimraf": "^3.0.2", + "supports-color": "^9.2.1", + "ts-jest": "^26.5.4", + "uniqid": "^5.3.0", + "wait-on": "^6.0.0" + }, + "engines": { + "node": "^14.15.0" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@deep-foundation/deeplinks/node_modules/debug": { + "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" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@deep-foundation/hasura": { + "version": "0.0.17", + "resolved": "https://registry.npmjs.org/@deep-foundation/hasura/-/hasura-0.0.17.tgz", + "integrity": "sha512-rtB7gG8/fsX9k6ykLo7/p1zQlD7XcVNv0MetDPjW5Flq65UZsSdT6xaqo4TmdhF7bWTOku6u3f8SW4xOoFgIRw==", + "dependencies": { + "@apollo/client": "^3.5.5", + "@apollo/react-hooks": "^4.0.0", + "@types/node": "^14.17.14", + "@types/react": "^17.0.19", + "apollo-boost": "^0.4.9", + "apollo-link": "^1.2.14", + "apollo-link-ws": "^1.0.20", + "apollo-server-micro": "^2.21.0", + "axios": "^0.21.1", + "babel-register": "^6.26.0", + "cors": "^2.8.5", + "debug": "^4.3.1", + "dotenv": "^8.2.0", + "express": "^4.17.1", + "migrate": "^1.7.0", + "node-fetch": "^2.6.1", + "normalize-url": "^7.0.2", + "path": "^0.12.7", + "react": "^17.0.1", + "rimraf": "^3.0.2", + "ts-node": "^9.1.1", + "ws": "^7.5.6" + } + }, + "node_modules/@deep-foundation/hasura/node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/@deep-foundation/materialized-path": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/@deep-foundation/materialized-path/-/materialized-path-0.0.11.tgz", + "integrity": "sha512-VUiqjTRRwWTm+JZd03w5czSwAOzmKN8Y0h0Hse1jtRFz277qWQqPCL2T40QsQODddn8mEMpiHg2eDS7atBKkhA==", + "dependencies": { + "@types/jest": "^26.0.22", + "@types/node": "^14.0.23", + "@types/react": "^17.0.2", + "benchmark": "^2.1.4", + "chance": "^1.1.7", + "graphql": "^15.5.3", + "microtime": "^3.0.0", + "ts-jest": "^26.5.4", + "typescript": "^3.9.7" + }, + "peerDependencies": { + "@deep-foundation/hasura": "*" + } + }, + "node_modules/@deep-foundation/materialized-path/node_modules/typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/@deep-foundation/react-hasura": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@deep-foundation/react-hasura/-/react-hasura-0.0.5.tgz", + "integrity": "sha512-3ah7heyiamk3TzEIJ+wA9GLFcarph3e9qjWb/pGIdmZer9aaIOE5hXPba26g4Q7raKmevZK4QC7Cou2/uwbXMA==", + "dependencies": { + "@apollo/react-hooks": "^4.0.0", + "debug": "^4.3.1" + }, + "peerDependencies": { + "@deep-foundation/hasura": "*", + "react": "*" + } + }, + "node_modules/@deep-foundation/store": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@deep-foundation/store/-/store-0.0.6.tgz", + "integrity": "sha512-KBpyvl9S4Pkl71oAnC6c0pQg3uTQGRN3GMclkinM6OR1UVFXMGMSXKk6DQ8QWWEKJ0KW7evUR2Ha0CW2aW1ptA==", + "dependencies": { + "debug": "^4.1.1", + "lodash": "^4.17.19", + "react-cookie": "^4.0.3", + "universal-cookie": "^4.0.3" + }, + "peerDependencies": { + "@capacitor/core": "*", + "next": "*", + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@graphql-tools/merge": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.3.tgz", + "integrity": "sha512-EfULshN2s2s2mhBwbV9WpGnoehRLe7eIMdZrKfHhxlBWOvtNUd3KSCN0PUdAMd7lj1jXUW9KYdn624JrVn6qzg==", + "dependencies": { + "@graphql-tools/utils": "8.10.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/mock": { + "version": "8.7.3", + "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.7.3.tgz", + "integrity": "sha512-U9e3tZenFvSTf0TAaFgwqO84cGNEbgzWXvboqJPth873dMag8sOlLyOBZceVzAZP7ptwfLbhm3S0Qq4ffI7mCw==", + "dependencies": { + "@graphql-tools/schema": "9.0.1", + "@graphql-tools/utils": "8.10.0", + "fast-json-stable-stringify": "^2.1.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/schema": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.1.tgz", + "integrity": "sha512-Y6apeiBmvXEz082IAuS/ainnEEQrzMECP1MRIV72eo2WPa6ZtLYPycvIbd56Z5uU2LKP4XcWRgK6WUbCyN16Rw==", + "dependencies": { + "@graphql-tools/merge": "8.3.3", + "@graphql-tools/utils": "8.10.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/schema": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz", + "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==", + "dependencies": { + "@graphql-tools/merge": "8.3.1", + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/schema/node_modules/@graphql-tools/merge": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz", + "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==", + "dependencies": { + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", + "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/utils": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.10.0.tgz", + "integrity": "sha512-yI+V373FdXQbYfqdarehn9vRWDZZYuvyQ/xwiv5ez2BbobHrqsexF7qs56plLRaQ8ESYpVAjMQvJWe9s23O0Jg==", + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", + "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/types/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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/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==" + }, + "node_modules/@jest/types/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@josephg/resolvable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", + "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==" + }, + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "dependencies": { + "debug": "^4.1.1" + } + }, + "node_modules/@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "node_modules/@types/accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/content-disposition": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", + "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==" + }, + "node_modules/@types/cookie": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz", + "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==" + }, + "node_modules/@types/cookies": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", + "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", + "dependencies": { + "@types/connect": "*", + "@types/express": "*", + "@types/keygrip": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cors": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==" + }, + "node_modules/@types/expect": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==" + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.30", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", + "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/formidable": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.5.tgz", + "integrity": "sha512-zu3mQJa4hDNubEMViSj937602XdDGzK7Q5pJ5QmLUbNxclbo9tZGt5jtwM352ssZ+pqo5V4H14TBvT/ALqQQcA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/fs-capacitor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz", + "integrity": "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/glob-stream": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-6.1.1.tgz", + "integrity": "sha512-AGOUTsTdbPkRS0qDeyeS+6KypmfVpbT5j23SN8UPG63qjKXNKjXn6V9wZUr8Fin0m9l8oGYaPK8b2WUMF8xI1A==", + "dependencies": { + "@types/glob": "*", + "@types/node": "*" + } + }, + "node_modules/@types/gulp": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.9.tgz", + "integrity": "sha512-zzT+wfQ8uwoXjDhRK9Zkmmk09/fbLLmN/yDHFizJiEKIve85qutOnXcP/TM2sKPBTU+Jc16vfPbOMkORMUBN7Q==", + "dependencies": { + "@types/undertaker": "*", + "@types/vinyl-fs": "*", + "chokidar": "^3.3.1" + } + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/http-assert": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", + "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==" + }, + "node_modules/@types/http-errors": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", + "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "26.0.24", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", + "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", + "dependencies": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, + "node_modules/@types/keygrip": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", + "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" + }, + "node_modules/@types/koa": { + "version": "2.13.5", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz", + "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==", + "dependencies": { + "@types/accepts": "*", + "@types/content-disposition": "*", + "@types/cookies": "*", + "@types/http-assert": "*", + "@types/http-errors": "*", + "@types/keygrip": "*", + "@types/koa-compose": "*", + "@types/node": "*" + } + }, + "node_modules/@types/koa-compose": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", + "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", + "dependencies": { + "@types/koa": "*" + } + }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" + }, + "node_modules/@types/node": { + "version": "14.18.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.18.tgz", + "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "node_modules/@types/react": { + "version": "17.0.48", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.48.tgz", + "integrity": "sha512-zJ6IYlJ8cYYxiJfUaZOQee4lh99mFihBoqkOSEGV+dFi9leROW6+PgstzQ+w3gWTnUfskALtQPGHK6dYmPj+2A==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "node_modules/@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/undertaker": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.7.tgz", + "integrity": "sha512-xuY7nBwo1zSRoY2aitp/HArHfTulFAKql2Fr4b4mWbBBP+F50n7Jm6nwISTTMaDk2xvl92O10TTejVF0Q9mInw==", + "dependencies": { + "@types/node": "*", + "@types/undertaker-registry": "*", + "async-done": "~1.3.2" + } + }, + "node_modules/@types/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==" + }, + "node_modules/@types/vinyl": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", + "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", + "dependencies": { + "@types/expect": "^1.20.4", + "@types/node": "*" + } + }, + "node_modules/@types/vinyl-fs": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/@types/vinyl-fs/-/vinyl-fs-2.4.12.tgz", + "integrity": "sha512-LgBpYIWuuGsihnlF+OOWWz4ovwCYlT03gd3DuLwex50cYZLmX3yrW+sFF9ndtmh7zcZpS6Ri47PrIu+fV+sbXw==", + "dependencies": { + "@types/glob-stream": "*", + "@types/node": "*", + "@types/vinyl": "*" + } + }, + "node_modules/@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/zen-observable": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz", + "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==" + }, + "node_modules/@wry/context": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.6.1.tgz", + "integrity": "sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/equality": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.3.tgz", + "integrity": "sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/trie": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.2.tgz", + "integrity": "sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/accept": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/accept/-/accept-3.1.3.tgz", + "integrity": "sha512-OgOEAidVEOKPup+Gv2+2wdH2AgVKI9LxsJ4hicdJ6cY0faUuZdZoi56kkXWlHp9qicN1nWQLmW5ZRGk+SBS5xg==", + "deprecated": "This module has moved and is now available at @hapi/accept. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", + "dependencies": { + "boom": "7.x.x", + "hoek": "6.x.x" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "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" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dependencies": { + "ansi-wrap": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dependencies": { + "ansi-wrap": "0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apollo-boost": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/apollo-boost/-/apollo-boost-0.4.9.tgz", + "integrity": "sha512-05y5BKcDaa8w47f8d81UVwKqrAjn8uKLv6QM9fNdldoNzQ+rnOHgFlnrySUZRz9QIT3vPftQkEz2UEASp1Mi5g==", + "dependencies": { + "apollo-cache": "^1.3.5", + "apollo-cache-inmemory": "^1.6.6", + "apollo-client": "^2.6.10", + "apollo-link": "^1.0.6", + "apollo-link-error": "^1.0.3", + "apollo-link-http": "^1.3.1", + "graphql-tag": "^2.4.2", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-boost/node_modules/ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "dependencies": { + "tslib": "^1.9.3" + } + }, + "node_modules/apollo-boost/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-cache": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.5.tgz", + "integrity": "sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA==", + "dependencies": { + "apollo-utilities": "^1.3.4", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-cache-control": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.14.0.tgz", + "integrity": "sha512-qN4BCq90egQrgNnTRMUHikLZZAprf3gbm8rC5Vwmc6ZdLolQ7bFsa769Hqi6Tq/lS31KLsXBLTOsRbfPHph12w==", + "deprecated": "The functionality provided by the `apollo-cache-control` package is built in to `apollo-server-core` starting with Apollo Server 3. See https://www.apollographql.com/docs/apollo-server/migration/#cachecontrol for details.", + "dependencies": { + "apollo-server-env": "^3.1.0", + "apollo-server-plugin-base": "^0.13.0" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-cache-inmemory": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6.tgz", + "integrity": "sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A==", + "dependencies": { + "apollo-cache": "^1.3.5", + "apollo-utilities": "^1.3.4", + "optimism": "^0.10.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-cache-inmemory/node_modules/@wry/context": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.4.4.tgz", + "integrity": "sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==", + "dependencies": { + "@types/node": ">=6", + "tslib": "^1.9.3" + } + }, + "node_modules/apollo-cache-inmemory/node_modules/optimism": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.10.3.tgz", + "integrity": "sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw==", + "dependencies": { + "@wry/context": "^0.4.0" + } + }, + "node_modules/apollo-cache-inmemory/node_modules/ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "dependencies": { + "tslib": "^1.9.3" + } + }, + "node_modules/apollo-cache-inmemory/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-cache/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-client": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.6.10.tgz", + "integrity": "sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA==", + "dependencies": { + "@types/zen-observable": "^0.8.0", + "apollo-cache": "1.3.5", + "apollo-link": "^1.0.0", + "apollo-utilities": "1.3.4", + "symbol-observable": "^1.0.2", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0", + "zen-observable": "^0.8.0" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-client/node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/apollo-client/node_modules/ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "dependencies": { + "tslib": "^1.9.3" + } + }, + "node_modules/apollo-client/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-datasource": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.9.0.tgz", + "integrity": "sha512-y8H99NExU1Sk4TvcaUxTdzfq2SZo6uSj5dyh75XSQvbpH6gdAXIW9MaBcvlNC7n0cVPsidHmOcHOWxJ/pTXGjA==", + "dependencies": { + "apollo-server-caching": "^0.7.0", + "apollo-server-env": "^3.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/apollo-graphql": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.9.7.tgz", + "integrity": "sha512-bezL9ItUWUGHTm1bI/XzIgiiZbhXpsC7uxk4UxFPmcVJwJsDc3ayZ99oXxAaK+3Rbg/IoqrHckA6CwmkCsbaSA==", + "dependencies": { + "core-js-pure": "^3.10.2", + "lodash.sortby": "^4.7.0", + "sha.js": "^2.4.11" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "graphql": "^14.2.1 || ^15.0.0" + } + }, + "node_modules/apollo-link": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz", + "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==", + "dependencies": { + "apollo-utilities": "^1.3.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.9.3", + "zen-observable-ts": "^0.8.21" + }, + "peerDependencies": { + "graphql": "^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-link-error": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.13.tgz", + "integrity": "sha512-jAZOOahJU6bwSqb2ZyskEK1XdgUY9nkmeclCrW7Gddh1uasHVqmoYc4CKdb0/H0Y1J9lvaXKle2Wsw/Zx1AyUg==", + "dependencies": { + "apollo-link": "^1.2.14", + "apollo-link-http-common": "^0.2.16", + "tslib": "^1.9.3" + } + }, + "node_modules/apollo-link-error/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-link-http": { + "version": "1.5.17", + "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.17.tgz", + "integrity": "sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg==", + "dependencies": { + "apollo-link": "^1.2.14", + "apollo-link-http-common": "^0.2.16", + "tslib": "^1.9.3" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-link-http-common": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz", + "integrity": "sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg==", + "dependencies": { + "apollo-link": "^1.2.14", + "ts-invariant": "^0.4.0", + "tslib": "^1.9.3" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-link-http-common/node_modules/ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "dependencies": { + "tslib": "^1.9.3" + } + }, + "node_modules/apollo-link-http-common/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-link-http/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-link-ws": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/apollo-link-ws/-/apollo-link-ws-1.0.20.tgz", + "integrity": "sha512-mjSFPlQxmoLArpHBeUb2Xj+2HDYeTaJqFGOqQ+I8NVJxgL9lJe84PDWcPah/yMLv3rB7QgBDSuZ0xoRFBPlySw==", + "dependencies": { + "apollo-link": "^1.2.14", + "tslib": "^1.9.3" + }, + "peerDependencies": { + "subscriptions-transport-ws": "^0.9.0" + } + }, + "node_modules/apollo-link-ws/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-link/node_modules/ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "dependencies": { + "tslib": "^1.9.3" + } + }, + "node_modules/apollo-link/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-link/node_modules/zen-observable-ts": { + "version": "0.8.21", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz", + "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==", + "dependencies": { + "tslib": "^1.9.3", + "zen-observable": "^0.8.0" + } + }, + "node_modules/apollo-reporting-protobuf": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-0.8.0.tgz", + "integrity": "sha512-B3XmnkH6Y458iV6OsA7AhfwvTgeZnFq9nPVjbxmLKnvfkEl8hYADtz724uPa0WeBiD7DSFcnLtqg9yGmCkBohg==", + "dependencies": { + "@apollo/protobufjs": "1.2.2" + } + }, + "node_modules/apollo-server": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-2.25.4.tgz", + "integrity": "sha512-CNvaSd0wkacfsvprSI843qTLKfBQpLik9e0y77On+OhdObkmq1ij8qkpF8awNg0iJPG5+RYBGNC7c/PA6vO53A==", + "dependencies": { + "apollo-server-core": "^2.25.4", + "apollo-server-express": "^2.25.4", + "express": "^4.0.0", + "graphql-subscriptions": "^1.0.0", + "graphql-tools": "^4.0.8", + "stoppable": "^1.1.0" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-server-caching": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.7.0.tgz", + "integrity": "sha512-MsVCuf/2FxuTFVhGLK13B+TZH9tBd2qkyoXKKILIiGcZ5CDUEBO14vIV63aNkMkS1xxvK2U4wBcuuNj/VH2Mkw==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/apollo-server-core": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.10.1.tgz", + "integrity": "sha512-UFFziv6h15QbKRZOA6wLyr1Sle9kns3JuQ5DEB7OYe5AIoOJNjZkWXX/tmLFUrSmlnDDryi6Sf5pDzpYmUC/UA==", + "dependencies": { + "@apollo/utils.keyvaluecache": "^1.0.1", + "@apollo/utils.logger": "^1.0.0", + "@apollo/utils.usagereporting": "^1.0.0", + "@apollographql/apollo-tools": "^0.5.3", + "@apollographql/graphql-playground-html": "1.6.29", + "@graphql-tools/mock": "^8.1.2", + "@graphql-tools/schema": "^8.0.0", + "@josephg/resolvable": "^1.0.0", + "apollo-datasource": "^3.3.2", + "apollo-reporting-protobuf": "^3.3.2", + "apollo-server-env": "^4.2.1", + "apollo-server-errors": "^3.3.1", + "apollo-server-plugin-base": "^3.6.2", + "apollo-server-types": "^3.6.2", + "async-retry": "^1.2.1", + "fast-json-stable-stringify": "^2.1.0", + "graphql-tag": "^2.11.0", + "loglevel": "^1.6.8", + "lru-cache": "^6.0.0", + "sha.js": "^2.4.11", + "uuid": "^8.0.0", + "whatwg-mimetype": "^3.0.0" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "graphql": "^15.3.0 || ^16.0.0" + } + }, + "node_modules/apollo-server-core/node_modules/@apollo/protobufjs": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", + "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + }, + "bin": { + "apollo-pbjs": "bin/pbjs", + "apollo-pbts": "bin/pbts" + } + }, + "node_modules/apollo-server-core/node_modules/@apollographql/graphql-playground-html": { + "version": "1.6.29", + "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", + "integrity": "sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==", + "dependencies": { + "xss": "^1.0.8" + } + }, + "node_modules/apollo-server-core/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "node_modules/apollo-server-core/node_modules/apollo-datasource": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", + "integrity": "sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==", + "dependencies": { + "@apollo/utils.keyvaluecache": "^1.0.1", + "apollo-server-env": "^4.2.1" + }, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/apollo-server-core/node_modules/apollo-reporting-protobuf": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", + "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", + "dependencies": { + "@apollo/protobufjs": "1.2.4" + } + }, + "node_modules/apollo-server-core/node_modules/apollo-server-env": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", + "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", + "dependencies": { + "node-fetch": "^2.6.7" + }, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/apollo-server-core/node_modules/apollo-server-errors": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz", + "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==", + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "graphql": "^15.3.0 || ^16.0.0" + } + }, + "node_modules/apollo-server-core/node_modules/apollo-server-plugin-base": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.6.2.tgz", + "integrity": "sha512-erWXjLOO1u7fxQkbxJ2cwSO7p0tYzNied91I1SJ9tikXZ/2eZUyDyvrpI+4g70kOdEi+AmJ5Fo8ahEXKJ75zdg==", + "dependencies": { + "apollo-server-types": "^3.6.2" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "graphql": "^15.3.0 || ^16.0.0" + } + }, + "node_modules/apollo-server-core/node_modules/apollo-server-types": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.2.tgz", + "integrity": "sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==", + "dependencies": { + "@apollo/utils.keyvaluecache": "^1.0.1", + "@apollo/utils.logger": "^1.0.0", + "apollo-reporting-protobuf": "^3.3.2", + "apollo-server-env": "^4.2.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "graphql": "^15.3.0 || ^16.0.0" + } + }, + "node_modules/apollo-server-env": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-3.1.0.tgz", + "integrity": "sha512-iGdZgEOAuVop3vb0F2J3+kaBVi4caMoxefHosxmgzAbbSpvWehB8Y1QiSyyMeouYC38XNVk5wnZl+jdGSsWsIQ==", + "dependencies": { + "node-fetch": "^2.6.1", + "util.promisify": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/apollo-server-errors": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.5.0.tgz", + "integrity": "sha512-lO5oTjgiC3vlVg2RKr3RiXIIQ5pGXBFxYGGUkKDhTud3jMIhs+gel8L8zsEjKaKxkjHhCQAA/bcEfYiKkGQIvA==", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-server-express": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.10.1.tgz", + "integrity": "sha512-r0esst3YGNdlphYiOrflfBqJ15VAZAhYhWSFo2kPF4knsIGK5HUkeqwjMr+fFDBn4DEfYzC+I1+LnsF/hFN8VQ==", + "dependencies": { + "@types/accepts": "^1.3.5", + "@types/body-parser": "1.19.2", + "@types/cors": "2.8.12", + "@types/express": "4.17.13", + "@types/express-serve-static-core": "4.17.30", + "accepts": "^1.3.5", + "apollo-server-core": "^3.10.1", + "apollo-server-types": "^3.6.2", + "body-parser": "^1.19.0", + "cors": "^2.8.5", + "parseurl": "^1.3.3" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "express": "^4.17.1", + "graphql": "^15.3.0 || ^16.0.0" + } + }, + "node_modules/apollo-server-express/node_modules/@apollo/protobufjs": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", + "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + }, + "bin": { + "apollo-pbjs": "bin/pbjs", + "apollo-pbts": "bin/pbts" + } + }, + "node_modules/apollo-server-express/node_modules/@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + }, + "node_modules/apollo-server-express/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "node_modules/apollo-server-express/node_modules/apollo-reporting-protobuf": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", + "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", + "dependencies": { + "@apollo/protobufjs": "1.2.4" + } + }, + "node_modules/apollo-server-express/node_modules/apollo-server-env": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", + "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", + "dependencies": { + "node-fetch": "^2.6.7" + }, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/apollo-server-express/node_modules/apollo-server-types": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.2.tgz", + "integrity": "sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==", + "dependencies": { + "@apollo/utils.keyvaluecache": "^1.0.1", + "@apollo/utils.logger": "^1.0.0", + "apollo-reporting-protobuf": "^3.3.2", + "apollo-server-env": "^4.2.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "graphql": "^15.3.0 || ^16.0.0" + } + }, + "node_modules/apollo-server-micro": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/apollo-server-micro/-/apollo-server-micro-2.25.4.tgz", + "integrity": "sha512-tx9VC9VdMMZLi9TFfl/pX4jr/qqhgu2To9KI5jlXzYxowROwOt/TwTx9ClT77YdJDoSIAvippYSaw+njuejN/A==", + "dependencies": { + "@apollographql/graphql-playground-html": "1.6.27", + "accept": "^3.0.2", + "apollo-server-core": "^2.25.4", + "apollo-server-types": "^0.9.0", + "micro": "^9.3.2" + } + }, + "node_modules/apollo-server-micro/node_modules/apollo-server-core": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.25.4.tgz", + "integrity": "sha512-1u3BnFKbCt6F9SPM7ZoWmtHK6ubme56H8hV5Mjv3KbfSairU76SU79IhO05BEJE57S6N+ddb1rm3Uk93X6YeGw==", + "dependencies": { + "@apollographql/apollo-tools": "^0.5.0", + "@apollographql/graphql-playground-html": "1.6.27", + "@apollographql/graphql-upload-8-fork": "^8.1.3", + "@josephg/resolvable": "^1.0.0", + "@types/ws": "^7.0.0", + "apollo-cache-control": "^0.14.0", + "apollo-datasource": "^0.9.0", + "apollo-graphql": "^0.9.0", + "apollo-reporting-protobuf": "^0.8.0", + "apollo-server-caching": "^0.7.0", + "apollo-server-env": "^3.1.0", + "apollo-server-errors": "^2.5.0", + "apollo-server-plugin-base": "^0.13.0", + "apollo-server-types": "^0.9.0", + "apollo-tracing": "^0.15.0", + "async-retry": "^1.2.1", + "fast-json-stable-stringify": "^2.0.0", + "graphql-extensions": "^0.15.0", + "graphql-tag": "^2.11.0", + "graphql-tools": "^4.0.8", + "loglevel": "^1.6.7", + "lru-cache": "^6.0.0", + "sha.js": "^2.4.11", + "subscriptions-transport-ws": "^0.9.19", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-server-plugin-base": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.13.0.tgz", + "integrity": "sha512-L3TMmq2YE6BU6I4Tmgygmd0W55L+6XfD9137k+cWEBFu50vRY4Re+d+fL5WuPkk5xSPKd/PIaqzidu5V/zz8Kg==", + "dependencies": { + "apollo-server-types": "^0.9.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-server-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-0.9.0.tgz", + "integrity": "sha512-qk9tg4Imwpk732JJHBkhW0jzfG0nFsLqK2DY6UhvJf7jLnRePYsPxWfPiNkxni27pLE2tiNlCwoDFSeWqpZyBg==", + "dependencies": { + "apollo-reporting-protobuf": "^0.8.0", + "apollo-server-caching": "^0.7.0", + "apollo-server-env": "^3.1.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-server/node_modules/@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/apollo-server/node_modules/apollo-server-core": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.25.4.tgz", + "integrity": "sha512-1u3BnFKbCt6F9SPM7ZoWmtHK6ubme56H8hV5Mjv3KbfSairU76SU79IhO05BEJE57S6N+ddb1rm3Uk93X6YeGw==", + "dependencies": { + "@apollographql/apollo-tools": "^0.5.0", + "@apollographql/graphql-playground-html": "1.6.27", + "@apollographql/graphql-upload-8-fork": "^8.1.3", + "@josephg/resolvable": "^1.0.0", + "@types/ws": "^7.0.0", + "apollo-cache-control": "^0.14.0", + "apollo-datasource": "^0.9.0", + "apollo-graphql": "^0.9.0", + "apollo-reporting-protobuf": "^0.8.0", + "apollo-server-caching": "^0.7.0", + "apollo-server-env": "^3.1.0", + "apollo-server-errors": "^2.5.0", + "apollo-server-plugin-base": "^0.13.0", + "apollo-server-types": "^0.9.0", + "apollo-tracing": "^0.15.0", + "async-retry": "^1.2.1", + "fast-json-stable-stringify": "^2.0.0", + "graphql-extensions": "^0.15.0", + "graphql-tag": "^2.11.0", + "graphql-tools": "^4.0.8", + "loglevel": "^1.6.7", + "lru-cache": "^6.0.0", + "sha.js": "^2.4.11", + "subscriptions-transport-ws": "^0.9.19", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-server/node_modules/apollo-server-express": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.25.4.tgz", + "integrity": "sha512-1Yd9DscLlCP5BhfAkNxg+aGcaTKnL36FyezdL7Iqc+KelON5PAyX8qpAChKL8Z3L2YHJzIk/Haf4dFJLKUjx9w==", + "dependencies": { + "@apollographql/graphql-playground-html": "1.6.27", + "@types/accepts": "^1.3.5", + "@types/body-parser": "1.19.0", + "@types/cors": "2.8.10", + "@types/express": "^4.17.12", + "@types/express-serve-static-core": "^4.17.21", + "accepts": "^1.3.5", + "apollo-server-core": "^2.25.4", + "apollo-server-types": "^0.9.0", + "body-parser": "^1.18.3", + "cors": "^2.8.5", + "express": "^4.17.1", + "graphql-subscriptions": "^1.0.0", + "graphql-tools": "^4.0.8", + "parseurl": "^1.3.2", + "subscriptions-transport-ws": "^0.9.19", + "type-is": "^1.6.16" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-tracing": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.15.0.tgz", + "integrity": "sha512-UP0fztFvaZPHDhIB/J+qGuy6hWO4If069MGC98qVs0I8FICIGu4/8ykpX3X3K6RtaQ56EDAWKykCxFv4ScxMeA==", + "deprecated": "The `apollo-tracing` package is no longer part of Apollo Server 3. See https://www.apollographql.com/docs/apollo-server/migration/#tracing for details", + "dependencies": { + "apollo-server-env": "^3.1.0", + "apollo-server-plugin-base": "^0.13.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-utilities": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz", + "integrity": "sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==", + "dependencies": { + "@wry/equality": "^0.1.2", + "fast-json-stable-stringify": "^2.0.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-utilities/node_modules/@wry/equality": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz", + "integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==", + "dependencies": { + "tslib": "^1.9.3" + } + }, + "node_modules/apollo-utilities/node_modules/ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "dependencies": { + "tslib": "^1.9.3" + } + }, + "node_modules/apollo-utilities/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "dependencies": { + "buffer-equal": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "dependencies": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-initial/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dependencies": { + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dependencies": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.reduce": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", + "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "engines": { + "node": "*" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "node_modules/async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "dependencies": { + "retry": "0.13.1" + } + }, + "node_modules/async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "dependencies": { + "async-done": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "node_modules/axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "dependencies": { + "follow-redirects": "^1.14.4" + } + }, + "node_modules/babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "dependencies": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "node_modules/babel-code-frame/node_modules/js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==" + }, + "node_modules/babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dependencies": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "node_modules/babel-core/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/babel-core/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dependencies": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + } + }, + "node_modules/babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==", + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "node_modules/babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-runtime": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.15.0.tgz", + "integrity": "sha1-PXW02Umtga8VdXAnOEb7Wa6w1Xw=", + "dependencies": { + "babel-runtime": "^6.9.0" + } + }, + "node_modules/babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==", + "dependencies": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } + }, + "node_modules/babel-register/node_modules/source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dependencies": { + "source-map": "^0.5.6" + } + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", + "dependencies": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "node_modules/babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", + "dependencies": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "node_modules/babel-traverse/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/babel-traverse/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", + "dependencies": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "node_modules/babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bin": { + "babylon": "bin/babylon.js" + } + }, + "node_modules/bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "dependencies": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" + }, + "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==" + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/benchmark": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", + "integrity": "sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==", + "dependencies": { + "lodash": "^4.17.4", + "platform": "^1.3.3" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/body-parser/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/boom": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-7.3.0.tgz", + "integrity": "sha512-Swpoyi2t5+GhOEGw8rEsKvTxFLIDiiKoUc2gsoV6Lyr43LHBIzch3k2MvYUs8RTROrIkVJ3Al0TkaOGjnb+B6A==", + "deprecated": "This module has moved and is now available at @hapi/boom. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", + "dependencies": { + "hoek": "6.x.x" + } + }, + "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==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/busboy": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", + "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", + "dependencies": { + "dicer": "0.3.0" + }, + "engines": { + "node": ">=4.5.0" + } + }, + "node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/card-validator": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/card-validator/-/card-validator-8.1.1.tgz", + "integrity": "sha512-cN4FsKwoTfTFnqPwVc7TQLSsH/QMDB3n/gWm0XelcApz4sKipnOQ6k33sa3bWsNnnIpgs7eXOF+mUV2UQAX2Sw==", + "dependencies": { + "credit-card-type": "^9.1.0" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "node_modules/chai": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/chance": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.8.tgz", + "integrity": "sha512-v7fi5Hj2VbR6dJEGRWLmJBA83LJMS47pkAbmROFxHWd9qmE1esHRZW8Clf1Fhzr3rjxnNZVCjOEv/ivFxeIMtg==" + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + }, + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/co-body": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz", + "integrity": "sha512-sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ==", + "dependencies": { + "inflation": "^2.0.0", + "qs": "^6.4.0", + "raw-body": "^2.2.0", + "type-is": "^1.6.14" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "dependencies": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "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=" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concurrently": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz", + "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==", + "dependencies": { + "chalk": "^2.4.2", + "date-fns": "^2.0.1", + "lodash": "^4.17.15", + "read-pkg": "^4.0.1", + "rxjs": "^6.5.2", + "spawn-command": "^0.0.2-1", + "supports-color": "^6.1.0", + "tree-kill": "^1.2.2", + "yargs": "^13.3.0" + }, + "bin": { + "concurrently": "bin/concurrently.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/concurrently/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==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/concurrently/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==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/concurrently/node_modules/chalk/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==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/concurrently/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-props": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", + "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "dependencies": { + "each-props": "^1.3.2", + "is-plain-object": "^5.0.0" + } + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true + }, + "node_modules/core-js-pure": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.1.tgz", + "integrity": "sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, + "node_modules/credit-card-type": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/credit-card-type/-/credit-card-type-9.1.0.tgz", + "integrity": "sha512-CpNFuLxiPFxuZqhSKml3M+t0K/484pMAnfYWH14JoD7OZMnmC0Lmo+P7JX9SobqFpRoo7ifA18kOHdxJywYPEA==" + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "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==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "node_modules/cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" + }, + "node_modules/csstype": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", + "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" + }, + "node_modules/cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/date-fns": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz", + "integrity": "sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w==", + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dependencies": { + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/default-gateway/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/default-gateway/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/default-shell": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/default-shell/-/default-shell-1.0.1.tgz", + "integrity": "sha512-/Os8tTMPSriNHCsVj3VLjMZblIl1sIg8EXz3qg7C5K+y9calfTA/qzlfPvCQ+LEgLWmtZ9wCnzE1w+S6TPPFyQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/del/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/deprecated-decorator": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz", + "integrity": "sha512-MHidOOnCHGlZDKsI21+mbIIhf4Fff+hhCTB7gtVg4uoIqjcrTZc5v6M+GS2zVI0sV7PqK415rb8XaOSQsQkHOw==" + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", + "dependencies": { + "repeating": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.1019158", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", + "integrity": "sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==" + }, + "node_modules/dicer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", + "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", + "dependencies": { + "streamsearch": "0.1.2" + }, + "engines": { + "node": ">=4.5.0" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "engines": { + "node": ">=10" + } + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dependencies": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "node_modules/each-props/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dependencies": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" + }, + "node_modules/execa": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", + "integrity": "sha512-R66dW/hW3I8yV77Wg4xn6zMguRPUgt59VLm5e85NrOF05ZdPn7YOfPBSw0E9epJDvuzwVWEG+HmEaQ4muYuWKQ==", + "dependencies": { + "cross-spawn": "^4.0.0", + "get-stream": "^2.2.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", + "dependencies": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "node_modules/execa/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/execa/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "dependencies": { + "type": "^2.5.0" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/extract-zip/node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", + "engines": { + "node": "> 0.1.90" + } + }, + "node_modules/fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dependencies": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "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==" + }, + "node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "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==" + }, + "node_modules/fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=" + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/finalhandler/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/findup-sync/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fined/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fix-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fix-path/-/fix-path-3.0.0.tgz", + "integrity": "sha512-opGAl4+ip5jUikHR2C8Jo7czZ80pz8EK/0gMlAZu7xgDmBqIynlX8SMYg9KowYjAU6HT0nxsSJEWru0u+n+N2Q==", + "dependencies": { + "shell-path": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/formidable": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", + "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", + "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-capacitor": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-2.0.4.tgz", + "integrity": "sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA==", + "engines": { + "node": ">=8.5" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "dependencies": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", + "dependencies": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/gists": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gists/-/gists-2.0.0.tgz", + "integrity": "sha512-EVSWDpq2/H9ITsXsjdPo9+i2MI9U4E6DirXwR7/t6Mqgnynlh9ta6RMyezIINVNhkXZTCttmiSISd7JNkI2rQw==", + "dependencies": { + "github-base": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/github-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/github-base/-/github-base-1.0.0.tgz", + "integrity": "sha512-5A9OOCQWK80v+bjVRzdK0M/5UtERN9vx9TkJMlkiJA24wu/+lrQLsq5MPQIrSONrSWwt83eAPtBcuQOc2FyK8A==", + "dependencies": { + "get-value": "^3.0.1", + "needle": "^2.2.2", + "paged-request": "^1.0.2", + "parse-link-header": "^1.0.1", + "qs": "^6.5.1", + "use": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/github-base/node_modules/get-value": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-3.0.1.tgz", + "integrity": "sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "dependencies": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-stream/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-stream/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "dependencies": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-watcher/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/glob-watcher/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/glob-watcher/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/glob-watcher/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-watcher/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/micromatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/glob-watcher/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dependencies": { + "sparkles": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + }, + "node_modules/graphql": { + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/graphql-extensions": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.15.0.tgz", + "integrity": "sha512-bVddVO8YFJPwuACn+3pgmrEg6I8iBuYLuwvxiE+lcQQ7POotVZxm2rgGw0PvVYmWWf3DT7nTVDZ5ROh/ALp8mA==", + "deprecated": "The `graphql-extensions` API has been removed from Apollo Server 3. Use the plugin API instead: https://www.apollographql.com/docs/apollo-server/integrations/plugins/", + "dependencies": { + "@apollographql/apollo-tools": "^0.5.0", + "apollo-server-env": "^3.1.0", + "apollo-server-types": "^0.9.0" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/graphql-playground-html": { + "version": "1.6.30", + "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.6.30.tgz", + "integrity": "sha512-tpCujhsJMva4aqE8ULnF7/l3xw4sNRZcSHu+R00VV+W0mfp+Q20Plvcrp+5UXD+2yS6oyCXncA+zoQJQqhGCEw==", + "dependencies": { + "xss": "^1.0.6" + } + }, + "node_modules/graphql-playground-middleware-express": { + "version": "1.7.23", + "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.23.tgz", + "integrity": "sha512-M/zbTyC1rkgiQjFSgmzAv6umMHOphYLNWZp6Ye5QrD77WfGOOoSqDsVmGUczc2pDkEPEzzGB/bvBO5rdzaTRgw==", + "dependencies": { + "graphql-playground-html": "^1.6.30" + }, + "peerDependencies": { + "express": "^4.16.2" + } + }, + "node_modules/graphql-subscriptions": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-1.2.1.tgz", + "integrity": "sha512-95yD/tKi24q8xYa7Q9rhQN16AYj5wPbrb8tmHGM3WRc9EBmWrG/0kkMl+tQG8wcEuE9ibR4zyOM31p5Sdr2v4g==", + "dependencies": { + "iterall": "^1.3.0" + }, + "peerDependencies": { + "graphql": "^0.10.5 || ^0.11.3 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/graphql-tools": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.8.tgz", + "integrity": "sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg==", + "deprecated": "This package has been deprecated and now it only exports makeExecutableSchema.\\nAnd it will no longer receive updates.\\nWe recommend you to migrate to scoped packages such as @graphql-tools/schema, @graphql-tools/utils and etc.\\nCheck out https://www.graphql-tools.com to learn what package you should use instead", + "dependencies": { + "apollo-link": "^1.2.14", + "apollo-utilities": "^1.0.1", + "deprecated-decorator": "^0.1.6", + "iterall": "^1.1.3", + "uuid": "^3.1.0" + }, + "peerDependencies": { + "graphql": "^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/graphql-tools/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dependencies": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "dependencies": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-cli/node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/gulp-cli/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "node_modules/gulp-cli/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "node_modules/gulp-cli/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "node_modules/gulp-cli/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + }, + "node_modules/gulp-cli/node_modules/yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "dependencies": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + }, + "node_modules/gulp-cli/node_modules/yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "dependencies": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } + }, + "node_modules/gulp-run-command": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/gulp-run-command/-/gulp-run-command-0.0.10.tgz", + "integrity": "sha512-i6o4XRqoadZB2doWCqkrCe7FmFwqPZ0Fxx74FGt83/KT5wKRRaKiFh598W64HE0Br9es6Oyq+nA+/AWbCfeSYQ==", + "dependencies": { + "babel-plugin-transform-runtime": "6.15.0", + "cross-spawn": "4.0.0", + "spawn-args": "0.2.0", + "timeout-as-promise": "^1.0.0" + } + }, + "node_modules/gulp-run-command/node_modules/cross-spawn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.0.tgz", + "integrity": "sha1-glR3SrR4a4xbPPTfumbOVjkywlI=", + "dependencies": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "node_modules/gulp-run-command/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/gulp-run-command/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/gulp-run-command/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "node_modules/gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dependencies": { + "glogg": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hoek": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", + "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==", + "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues." + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/i": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", + "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflation": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", + "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/inflight": { + "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" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/internal-ip": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", + "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", + "dependencies": { + "default-gateway": "^6.0.0", + "ipaddr.js": "^1.9.1", + "is-ip": "^3.1.0", + "p-event": "^4.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/internal-ip?sponsor=1" + } + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is_js": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/is_js/-/is_js-0.9.0.tgz", + "integrity": "sha512-8Y5EHSH+TonfUHX2g3pMJljdbGavg55q4jmHzghJCdqYDbdNROC8uw/YFQwIRCRqRJT1EY3pJefz+kglw+o7sg==" + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "engines": { + "node": ">=4" + } + }, + "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==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-ip": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", + "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", + "dependencies": { + "ip-regex": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "node_modules/iterall": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", + "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" + }, + "node_modules/jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-diff/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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/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==" + }, + "node_modules/jest-diff/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-util/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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/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==" + }, + "node_modules/jest-util/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/joi": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "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==" + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "node_modules/jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "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==" + }, + "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=" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=4", + "npm": ">=1.4.28" + } + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/just-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", + "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==" + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/koa-body": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/koa-body/-/koa-body-4.2.0.tgz", + "integrity": "sha512-wdGu7b9amk4Fnk/ytH8GuWwfs4fsB5iNkY8kZPpgQVb04QZSv85T0M8reb+cJmvLE8cjPYvBzRikD3s6qz8OoA==", + "dependencies": { + "@types/formidable": "^1.0.31", + "co-body": "^5.1.1", + "formidable": "^1.1.1" + } + }, + "node_modules/last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "dependencies": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "dependencies": { + "flush-write-stream": "^1.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dependencies": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/liftoff/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" + }, + "node_modules/loglevel": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", + "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", + "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "dependencies": { + "get-func-name": "^2.0.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "node_modules/make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/make-iterator/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dependencies": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/matchdep/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/matchdep/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micro": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/micro/-/micro-9.4.1.tgz", + "integrity": "sha512-Lpjcbp6Y9GJIfewxDfTmu9eW0rt0MGo+Gs1d3yJLFa7mhErtKkCngGhDbA/O1gqUjEwsHh+jWPg8BJ0Bx4AgFA==", + "dependencies": { + "arg": "4.1.0", + "content-type": "1.0.4", + "raw-body": "2.4.1" + }, + "bin": { + "micro": "bin/micro.js" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/micro/node_modules/arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==" + }, + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/microtime": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/microtime/-/microtime-3.1.1.tgz", + "integrity": "sha512-to1r7o24cDsud9IhN6/8wGmMx5R2kT0w2Xwm5okbYI3d1dk6Xv0m+Z+jg2vS9pt+ocgQHTCtgs/YuyJhySzxNg==", + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^5.0.0", + "node-gyp-build": "^4.4.0" + }, + "engines": { + "node": ">= 14.13.0" + } + }, + "node_modules/migrate": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/migrate/-/migrate-1.8.0.tgz", + "integrity": "sha512-K18j+/k0M/MWjhAwxc6t5WST9G4yAdbUEy04Y7XcTiTf62QQPDcMKcoxj5lpMvWjRJPG0QEnm0UPlmMoM0bRRQ==", + "dependencies": { + "chalk": "^2.4.2", + "commander": "^2.20.3", + "dateformat": "^3.0.3", + "dotenv": "^16.0.0", + "inherits": "^2.0.3", + "minimatch": "^5.0.1", + "mkdirp": "^0.5.1", + "slug": "^5.3.0" + }, + "bin": { + "migrate": "bin/migrate", + "migrate-create": "bin/migrate-create", + "migrate-down": "bin/migrate-down", + "migrate-init": "bin/migrate-init", + "migrate-list": "bin/migrate-list", + "migrate-up": "bin/migrate-up" + }, + "engines": { + "node": ">= 0.4.x" + } + }, + "node_modules/migrate/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==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/migrate/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/migrate/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==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/migrate/node_modules/dotenv": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", + "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/migrate/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/migrate/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==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "node_modules/moesif-nodejs": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/moesif-nodejs/-/moesif-nodejs-3.2.2.tgz", + "integrity": "sha512-XP8ocHg/27jiEEQQpu6nJl04/H7Ivg45oVwoyXie4dR7fdujHH+r2/8TwWgM27QIFdHsk84xQB7pYD5hJN/JLA==", + "dependencies": { + "bytes": "^3.1.1", + "card-validator": "^8.1.1", + "content-type": "^1.0.4", + "crypto-js": "^4.1.1", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "koa-body": "^4.2.0", + "lodash": "^4.17.19", + "moesifapi": "^2.0.10", + "raw-body": "^2.4.2", + "request-ip": "^2.1.3", + "uuid4": "^2.0.2" + } + }, + "node_modules/moesif-nodejs/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/moesif-nodejs/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/moesif-nodejs/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/moesif-nodejs/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/moesif-nodejs/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/moesif-nodejs/node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/moesif-nodejs/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/moesifapi": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/moesifapi/-/moesifapi-2.0.10.tgz", + "integrity": "sha512-ulN9tNqxEcjH3YMoelBOkIkSN3D2qF+qzNpvG7bhtUmGWP+/bHyBP24EtuGX30VAA+3jHL9XNin28RD8teriFA==", + "dependencies": { + "request": "^2.88.0" + } + }, + "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==" + }, + "node_modules/mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node_modules/nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/needle": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", + "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "node_modules/node-addon-api": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", + "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==" + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp-build": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/nodemon": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", + "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", + "hasInstallScript": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/nodemon/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==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-7.0.3.tgz", + "integrity": "sha512-RiCOdwdPnzvwcBFJE4iI1ss3dMVRIrEzFpn8ftje6iBfzBInqlnRrNhxcLwBEKjPPXQKzm1Ptlxtaiv9wdcj5w==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dependencies": { + "once": "^1.3.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/npm": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-7.24.2.tgz", + "integrity": "sha512-120p116CE8VMMZ+hk8IAb1inCPk4Dj3VZw29/n2g6UI77urJKVYb7FZUDW8hY+EBnfsjI/2yrobBgFyzo7YpVQ==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/ci-detect", + "@npmcli/config", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/run-script", + "abbrev", + "ansicolors", + "ansistyles", + "archy", + "cacache", + "chalk", + "chownr", + "cli-columns", + "cli-table3", + "columnify", + "fastest-levenshtein", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minipass", + "minipass-pipeline", + "mkdirp", + "mkdirp-infer-owner", + "ms", + "node-gyp", + "nopt", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "npmlog", + "opener", + "pacote", + "parse-conflict-json", + "qrcode-terminal", + "read", + "read-package-json", + "read-package-json-fast", + "readdir-scoped-modules", + "rimraf", + "semver", + "ssri", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dependencies": { + "@isaacs/string-locale-compare": "*", + "@npmcli/arborist": "*", + "@npmcli/ci-detect": "*", + "@npmcli/config": "*", + "@npmcli/map-workspaces": "*", + "@npmcli/package-json": "*", + "@npmcli/run-script": "*", + "abbrev": "*", + "ansicolors": "*", + "ansistyles": "*", + "archy": "*", + "cacache": "*", + "chalk": "*", + "chownr": "*", + "cli-columns": "*", + "cli-table3": "*", + "columnify": "*", + "fastest-levenshtein": "*", + "glob": "*", + "graceful-fs": "*", + "hosted-git-info": "*", + "ini": "*", + "init-package-json": "*", + "is-cidr": "*", + "json-parse-even-better-errors": "*", + "libnpmaccess": "*", + "libnpmdiff": "*", + "libnpmexec": "*", + "libnpmfund": "*", + "libnpmhook": "*", + "libnpmorg": "*", + "libnpmpack": "*", + "libnpmpublish": "*", + "libnpmsearch": "*", + "libnpmteam": "*", + "libnpmversion": "*", + "make-fetch-happen": "*", + "minipass": "*", + "minipass-pipeline": "*", + "mkdirp": "*", + "mkdirp-infer-owner": "*", + "ms": "*", + "node-gyp": "*", + "nopt": "*", + "npm-audit-report": "*", + "npm-install-checks": "*", + "npm-package-arg": "*", + "npm-pick-manifest": "*", + "npm-profile": "*", + "npm-registry-fetch": "*", + "npm-user-validate": "*", + "npmlog": "*", + "opener": "*", + "pacote": "*", + "parse-conflict-json": "*", + "qrcode-terminal": "*", + "read": "*", + "read-package-json": "*", + "read-package-json-fast": "*", + "readdir-scoped-modules": "*", + "rimraf": "*", + "semver": "*", + "ssri": "*", + "tar": "*", + "text-table": "*", + "tiny-relative-date": "*", + "treeverse": "*", + "validate-npm-package-name": "*", + "which": "*", + "write-file-atomic": "*" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/@gar/promisify": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "2.9.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^1.0.2", + "@npmcli/metavuln-calculator": "^1.1.0", + "@npmcli/move-file": "^1.1.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^1.0.1", + "@npmcli/package-json": "^1.0.1", + "@npmcli/run-script": "^1.8.2", + "bin-links": "^2.2.1", + "cacache": "^15.0.3", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.1.5", + "npm-pick-manifest": "^6.1.0", + "npm-registry-fetch": "^11.0.0", + "pacote": "^11.3.5", + "parse-conflict-json": "^1.1.1", + "proc-log": "^1.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "ssri": "^8.0.1", + "treeverse": "^1.0.4", + "walk-up-path": "^1.0.0" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/@npmcli/ci-detect": { + "version": "1.3.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/config": { + "version": "2.3.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ini": "^2.0.0", + "mkdirp-infer-owner": "^2.0.0", + "nopt": "^5.0.0", + "semver": "^7.3.4", + "walk-up-path": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/disparity-colors": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ansi-styles": "^4.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/npm/node_modules/@npmcli/git": { + "version": "2.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "1.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^7.1.6", + "minimatch": "^3.0.4", + "read-package-json-fast": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^15.0.5", + "pacote": "^11.1.11", + "semver": "^7.3.2" + } + }, + "node_modules/npm/node_modules/@npmcli/move-file": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.1" + } + }, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "1.3.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "infer-owner": "^1.0.4" + } + }, + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "1.8.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^7.1.0", + "read-package-json-fast": "^2.0.1" + } + }, + "node_modules/npm/node_modules/@tootallnate/once": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/agent-base": { + "version": "6.0.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/npm/node_modules/agentkeepalive": { + "version": "4.1.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ajv": { + "version": "6.12.6", + "inBundle": true, + "license": "MIT", + "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/npm/node_modules/ansi-regex": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/ansicolors": { + "version": "0.3.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ansistyles": { + "version": "0.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/are-we-there-yet": { + "version": "1.1.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/asap": { + "version": "2.0.6", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/asn1": { + "version": "0.2.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/npm/node_modules/assert-plus": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/asynckit": { + "version": "0.4.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/aws-sign2": { + "version": "0.7.0", + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/aws4": { + "version": "1.11.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "inBundle": true, + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/npm/node_modules/bin-links": { + "version": "2.2.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^4.0.1", + "mkdirp": "^1.0.3", + "npm-normalize-package-bin": "^1.0.0", + "read-cmd-shim": "^2.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^3.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "1.1.11", + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/npm/node_modules/builtins": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/cacache": { + "version": "15.3.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/caseless": { + "version": "0.12.0", + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/npm/node_modules/chalk": { + "version": "4.1.2", + "inBundle": true, + "license": "MIT", + "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/npm/node_modules/chownr": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "3.1.1", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^4.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "3.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^2.0.0", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/cli-table3": { + "version": "0.6.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/ansi-regex": { + "version": "5.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/strip-ansi": { + "version": "6.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/clone": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "4.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "mkdirp-infer-owner": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/code-point-at": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/color-support": { + "version": "1.1.3", + "inBundle": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/npm/node_modules/colors": { + "version": "1.4.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/npm/node_modules/columnify": { + "version": "1.5.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "node_modules/npm/node_modules/combined-stream": { + "version": "1.0.8", + "inBundle": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/concat-map": { + "version": "0.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/console-control-strings": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/core-util-is": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/dashdash": { + "version": "1.14.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/npm/node_modules/debug": { + "version": "4.3.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/debuglog": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/defaults": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/npm/node_modules/delayed-stream": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/npm/node_modules/delegates": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/depd": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/dezalgo": { + "version": "1.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/diff": { + "version": "5.0.0", + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/npm/node_modules/ecc-jsbn": { + "version": "0.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/extend": { + "version": "3.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/extsprintf": { + "version": "1.3.0", + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fast-deep-equal": { + "version": "3.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.12", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/forever-agent": { + "version": "0.6.1", + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "2.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/fs.realpath": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/function-bind": { + "version": "1.1.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/gauge": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1 || ^2.0.0", + "strip-ansi": "^3.0.1 || ^4.0.0", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/getpass": { + "version": "0.1.7", + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "7.2.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.8", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/har-schema": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/har-validator": { + "version": "5.1.5", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/has": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/npm/node_modules/has-flag": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "4.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.0", + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "4.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/http-signature": { + "version": "1.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "5.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/humanize-ms": { + "version": "1.2.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "3.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/infer-owner": { + "version": "1.0.4", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/inflight": { + "version": "1.0.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/inherits": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/ini": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "2.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^8.1.5", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "^4.1.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ip": { + "version": "1.1.5", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "4.0.2", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "^3.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/is-core-module": { + "version": "2.7.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/is-typedarray": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/isstream": { + "version": "0.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/jsbn": { + "version": "0.1.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-schema": { + "version": "0.2.3", + "inBundle": true + }, + "node_modules/npm/node_modules/json-schema-traverse": { + "version": "0.4.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/json-stringify-safe": { + "version": "5.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/jsprim": { + "version": "1.4.1", + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/npm/node_modules/just-diff": { + "version": "3.1.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "4.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmdiff": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/disparity-colors": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "binary-extensions": "^2.2.0", + "diff": "^5.0.0", + "minimatch": "^3.0.4", + "npm-package-arg": "^8.1.4", + "pacote": "^11.3.4", + "tar": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmexec": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^2.3.0", + "@npmcli/ci-detect": "^1.3.0", + "@npmcli/run-script": "^1.8.4", + "chalk": "^4.1.0", + "mkdirp-infer-owner": "^2.0.0", + "npm-package-arg": "^8.1.2", + "pacote": "^11.3.1", + "proc-log": "^1.0.0", + "read": "^1.0.7", + "read-package-json-fast": "^2.0.2", + "walk-up-path": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmfund": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^2.5.0" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "6.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "2.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmpack": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/run-script": "^1.8.3", + "npm-package-arg": "^8.1.0", + "pacote": "^11.2.6" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "4.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "normalize-package-data": "^3.0.2", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0", + "semver": "^7.1.3", + "ssri": "^8.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "3.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmversion": { + "version": "1.2.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^2.0.7", + "@npmcli/run-script": "^1.8.4", + "json-parse-even-better-errors": "^2.3.1", + "semver": "^7.3.5", + "stringify-package": "^1.0.1" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "9.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/mime-db": { + "version": "1.49.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/mime-types": { + "version": "2.1.32", + "inBundle": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.49.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "3.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/minipass": { + "version": "3.1.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-collect": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-fetch": { + "version": "1.4.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-json-stream": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/mkdirp-infer-owner": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "0.0.8", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.2", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "7.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/aproba": { + "version": "1.2.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { + "version": "2.7.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { + "version": "4.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/string-width": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "3.0.3", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "2.1.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "1.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "4.0.0", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "8.1.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "2.2.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "6.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "5.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "11.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "1.0.1", + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/npmlog": { + "version": "5.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/number-is-nan": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/oauth-sign": { + "version": "0.9.0", + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/object-assign": { + "version": "4.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/once": { + "version": "1.4.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/opener": { + "version": "1.5.2", + "inBundle": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/pacote": { + "version": "11.3.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.8.2", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "just-diff": "^3.0.1", + "just-diff-apply": "^3.0.0" + } + }, + "node_modules/npm/node_modules/path-is-absolute": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/performance-now": { + "version": "2.1.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/proc-log": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "0.3.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "1" + } + }, + "node_modules/npm/node_modules/psl": { + "version": "1.8.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/punycode": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/qs": { + "version": "6.5.2", + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/npm/node_modules/read": { + "version": "1.0.7", + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/read-package-json": { + "version": "4.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "2.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/readable-stream": { + "version": "3.6.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/readdir-scoped-modules": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "node_modules/npm/node_modules/request": { + "version": "2.88.2", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/npm/node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", + "inBundle": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/rimraf": { + "version": "3.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/semver": { + "version": "7.3.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/set-blocking": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "3.0.3", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.6.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "6.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.1.1", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.3.0", + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.10", + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/sshpk": { + "version": "1.16.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ssri": { + "version": "8.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/string_decoder": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/npm/node_modules/string-width": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/stringify-package": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "7.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "6.1.11", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "1.0.4", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/tunnel-agent": { + "version": "0.6.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/tweetnacl": { + "version": "0.14.5", + "inBundle": true, + "license": "Unlicense" + }, + "node_modules/npm/node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/npm/node_modules/uri-js": { + "version": "4.4.1", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/uuid": { + "version": "3.4.0", + "inBundle": true, + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/npm/node_modules/verror": { + "version": "1.10.0", + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/npm/node_modules/walk-up-path": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/wcwidth": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/npm/node_modules/which": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/wide-align": { + "version": "1.1.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/npm/node_modules/wrappy": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "3.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-path": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", + "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", + "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", + "dependencies": { + "array.prototype.reduce": "^1.0.4", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors/node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optimism": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.1.tgz", + "integrity": "sha512-64i+Uw3otrndfq5kaoGNoY7pvOhSsjFEN4bdEFh80MWVk/dbgJfMv7VFDeCT8LxNAlEVhQmdVEbfE7X2nWNIIg==", + "dependencies": { + "@wry/context": "^0.6.0", + "@wry/trie": "^0.3.0" + } + }, + "node_modules/ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-event": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", + "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", + "dependencies": { + "p-timeout": "^3.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/paged-request": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/paged-request/-/paged-request-1.0.2.tgz", + "integrity": "sha512-2NXKpT0pWoVo31LQhGOfsqD8wViifq6Ml28H8WrqY0GbMvltvpDPx1YZ6jMeVXNbywjECdEhmC2/uFFS1MdMFQ==", + "dependencies": { + "needle": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-link-header": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-1.0.1.tgz", + "integrity": "sha512-Z0gpfHmwCIKDr5rRzjypL+p93aHVWO7e+0rFcUl9E3sC67njjs+xHFenuboSXZGlvYtmQqRzRaE3iFpTUnLmFQ==", + "dependencies": { + "xtend": "~4.0.1" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "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=", + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "engines": { + "node": "*" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/platform": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/pretty-format/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-format/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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/pretty-format/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==" + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/prompt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.2.0.tgz", + "integrity": "sha512-iGerYRpRUg5ZyC+FJ/25G5PUKuWAGRjW1uOlhX7Pi3O5YygdK6R+KEaBjRbHSkU5vfS5PZCltSPZdDtUYwRCZA==", + "dependencies": { + "async": "~0.9.0", + "colors": "^1.1.2", + "read": "1.0.x", + "revalidator": "0.1.x", + "winston": "2.x" + }, + "engines": { + "node": ">= 0.6.6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, + "node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/puppeteer": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-16.1.0.tgz", + "integrity": "sha512-lhykJLbH2bbBaP3NfYI2Vj0T4ctrdfVdEVf8glZITPnLfqrJ0nfUzAYuIz5YcA79k5lmFKANIhEXex+jQChU3g==", + "hasInstallScript": true, + "dependencies": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1019158", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "pkg-dir": "4.2.0", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.8.1" + }, + "engines": { + "node": ">=14.1.0" + } + }, + "node_modules/puppeteer/node_modules/debug": { + "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" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/puppeteer/node_modules/ws": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", + "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.3", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body/node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "node_modules/raw-body/node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-cookie": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/react-cookie/-/react-cookie-4.1.1.tgz", + "integrity": "sha512-ffn7Y7G4bXiFbnE+dKhHhbP+b8I34mH9jqnm8Llhj89zF4nPxPutxHT1suUqMeCEhLDBI7InYwf1tpaSoK5w8A==", + "dependencies": { + "@types/hoist-non-react-statics": "^3.0.1", + "hoist-non-react-statics": "^3.0.0", + "universal-cookie": "^4.0.0" + }, + "peerDependencies": { + "react": ">= 16.3.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "dependencies": { + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dependencies": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dependencies": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", + "dependencies": { + "is-finite": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "dependencies": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request-ip": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-2.2.0.tgz", + "integrity": "sha512-Hn4zUAr+XHbUs2RrfHur62t7+UhvtevqK32ordFewguEfNHUkhSdYgbG7PDGmXZEzqEXll9bei0+VMe6gkmuUQ==", + "dependencies": { + "is_js": "^0.9.0" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "dependencies": { + "value-or-function": "^3.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated" + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/revalidator": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", + "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/rimraf": { + "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" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "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==" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "dependencies": { + "sver-compat": "^1.5.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.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==", + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-env": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shell-env/-/shell-env-0.3.0.tgz", + "integrity": "sha512-VrC6OSm5riGAFWvlYExA80Rrlfi4STsztNXjyet9Jf20hbiVeeKvJIesb92gJk7zlmpQjB0wOZpy8ClzVdPVWQ==", + "dependencies": { + "default-shell": "^1.0.0", + "execa": "^0.5.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shell-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/shell-path/-/shell-path-2.1.0.tgz", + "integrity": "sha512-w+mbrnpA+r5jSFS4MgFfxZJ1Wx8qMKkR4gvQ+wgaZEoZCMMYZ6Yl/dcNjW/zLMfmx5a9IVIFwGAtUJcnDMmFrg==", + "dependencies": { + "shell-env": "^0.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-git": { + "version": "2.47.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.47.0.tgz", + "integrity": "sha512-+HfCpqPBEZTPWiW9fPdbiPJDslM22MLqrktfzNKyI2pWaJa6DhfNVx4Mds04KZzVv5vjC9/ksw3y5gVf8ECWDg==", + "dependencies": { + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.1.1", + "debug": "^4.3.2" + } + }, + "node_modules/simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/slug": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/slug/-/slug-5.3.0.tgz", + "integrity": "sha512-h7yD2UDVyMcQRv/WLSjq7HDH6ToO/22MB381zfx6/ebtdWUlGcyxpJNVHl6WFvKjIMHf5ZxANFp/srsy4mfT/w==" + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated" + }, + "node_modules/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/spawn-args": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/spawn-args/-/spawn-args-0.2.0.tgz", + "integrity": "sha1-+30L0dcP1DFr2ePew4nmX51jYbs=" + }, + "node_modules/spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=" + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", + "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==" + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "engines": { + "node": "*" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stoppable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", + "engines": { + "node": ">=4", + "npm": ">=6" + } + }, + "node_modules/stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "node_modules/streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend/node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart/node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/subscriptions-transport-ws": { + "version": "0.9.19", + "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz", + "integrity": "sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw==", + "deprecated": "The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md", + "dependencies": { + "backo2": "^1.0.2", + "eventemitter3": "^3.1.0", + "iterall": "^1.2.1", + "symbol-observable": "^1.0.4", + "ws": "^5.2.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependencies": { + "graphql": ">=0.10.0" + } + }, + "node_modules/subscriptions-transport-ws/node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz", + "integrity": "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "dependencies": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-fs/node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/timeout-as-promise": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/timeout-as-promise/-/timeout-as-promise-1.0.0.tgz", + "integrity": "sha1-c2foEfyZKs/Nzaq/LlDfr4shV28=" + }, + "node_modules/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dependencies": { + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ts-invariant": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", + "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-jest": { + "version": "26.5.6", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.6.tgz", + "integrity": "sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==", + "dependencies": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^26.1.0", + "json5": "2.x", + "lodash": "4.x", + "make-error": "1.x", + "mkdirp": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "jest": ">=26 <27", + "typescript": ">=3.8 <5.0" + } + }, + "node_modules/ts-jest/node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ts-jest/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "dependencies": { + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": ">=2.7" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "node_modules/typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive/node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/unbzip2-stream/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, + "node_modules/undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "dependencies": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uniqid": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.4.0.tgz", + "integrity": "sha512-38JRbJ4Fj94VmnC7G/J/5n5SC7Ab46OM5iNtSstB/ko3l1b5g7ALt4qzHFgGciFkyiRNtDXtLNb+VsxtMSE77A==" + }, + "node_modules/unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dependencies": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "node_modules/universal-cookie": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-4.0.4.tgz", + "integrity": "sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw==", + "dependencies": { + "@types/cookie": "^0.3.3", + "cookie": "^0.4.0" + } + }, + "node_modules/universal-cookie/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/uri-js": { + "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" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated" + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/util.promisify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", + "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "for-each": "^0.3.3", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/uuid4": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid4/-/uuid4-2.0.3.tgz", + "integrity": "sha512-CTpAkEVXMNJl2ojgtpLXHgz23dh8z81u6/HEPiQFOvBc/c2pde6TVHmH4uwY0d/GLF3tb7+VDAj4+2eJaQSdZQ==" + }, + "node_modules/v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/value-or-promise": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", + "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dependencies": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dependencies": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wait-on": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", + "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", + "dependencies": { + "axios": "^0.25.0", + "joi": "^17.6.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^7.5.4" + }, + "bin": { + "wait-on": "bin/wait-on" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/wait-on/node_modules/axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dependencies": { + "follow-redirects": "^1.14.7" + } + }, + "node_modules/wait-on/node_modules/rxjs": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", + "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "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" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "node_modules/winston": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.5.tgz", + "integrity": "sha512-TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A==", + "dependencies": { + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/winston/node_modules/async": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" + }, + "node_modules/winston/node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/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==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xss": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz", + "integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==", + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "bin": { + "xss": "bin/xss" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "engines": { + "node": ">=4" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/zen-observable": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" + }, + "node_modules/zen-observable-ts": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", + "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", + "dependencies": { + "zen-observable": "0.8.15" + } + } + }, "dependencies": { "@apollo/client": { "version": "3.6.9", @@ -55,7 +14279,7 @@ "resolved": "https://registry.npmjs.org/@apollo/react-hooks/-/react-hooks-4.0.0.tgz", "integrity": "sha512-fCu0cbne3gbUl0QbA8X4L33iuuFVQbC5Jo2MIKRK8CyawR6PoxDpFdFA1kc6033ODZuZZ9Eo4RdeJFlFIIYcLA==", "requires": { - "@apollo/client": "^3.6.9" + "@apollo/client": "latest" }, "dependencies": { "@apollo/client": { @@ -82,7 +14306,8 @@ "@apollo/utils.dropunuseddefinitions": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz", - "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==" + "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==", + "requires": {} }, "@apollo/utils.keyvaluecache": { "version": "1.0.1", @@ -108,12 +14333,14 @@ "@apollo/utils.printwithreducedwhitespace": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz", - "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==" + "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==", + "requires": {} }, "@apollo/utils.removealiases": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz", - "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==" + "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==", + "requires": {} }, "@apollo/utils.sortast": { "version": "1.1.0", @@ -126,7 +14353,8 @@ "@apollo/utils.stripsensitiveliterals": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz", - "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==" + "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==", + "requires": {} }, "@apollo/utils.usagereporting": { "version": "1.0.0", @@ -179,7 +14407,8 @@ "@apollographql/apollo-tools": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz", - "integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==" + "integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==", + "requires": {} }, "@apollographql/graphql-playground-html": { "version": "1.6.27", @@ -413,7 +14642,8 @@ "@graphql-typed-document-node/core": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", - "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==" + "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", + "requires": {} }, "@hapi/hoek": { "version": "9.3.0", @@ -1497,7 +15727,8 @@ "apollo-server-errors": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz", - "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==" + "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==", + "requires": {} }, "apollo-server-plugin-base": { "version": "3.6.2", @@ -1532,7 +15763,8 @@ "apollo-server-errors": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.5.0.tgz", - "integrity": "sha512-lO5oTjgiC3vlVg2RKr3RiXIIQ5pGXBFxYGGUkKDhTud3jMIhs+gel8L8zsEjKaKxkjHhCQAA/bcEfYiKkGQIvA==" + "integrity": "sha512-lO5oTjgiC3vlVg2RKr3RiXIIQ5pGXBFxYGGUkKDhTud3jMIhs+gel8L8zsEjKaKxkjHhCQAA/bcEfYiKkGQIvA==", + "requires": {} }, "apollo-server-express": { "version": "3.10.1", @@ -5084,6 +19316,11 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, + "is_js": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/is_js/-/is_js-0.9.0.tgz", + "integrity": "sha512-8Y5EHSH+TonfUHX2g3pMJljdbGavg55q4jmHzghJCdqYDbdNROC8uw/YFQwIRCRqRJT1EY3pJefz+kglw+o7sg==" + }, "is-absolute": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", @@ -5378,11 +19615,6 @@ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, - "is_js": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/is_js/-/is_js-0.9.0.tgz", - "integrity": "sha512-8Y5EHSH+TonfUHX2g3pMJljdbGavg55q4jmHzghJCdqYDbdNROC8uw/YFQwIRCRqRJT1EY3pJefz+kglw+o7sg==" - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -6458,76 +20690,76 @@ "resolved": "https://registry.npmjs.org/npm/-/npm-7.24.2.tgz", "integrity": "sha512-120p116CE8VMMZ+hk8IAb1inCPk4Dj3VZw29/n2g6UI77urJKVYb7FZUDW8hY+EBnfsjI/2yrobBgFyzo7YpVQ==", "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^2.9.0", - "@npmcli/ci-detect": "^1.2.0", - "@npmcli/config": "^2.3.0", - "@npmcli/map-workspaces": "^1.0.4", - "@npmcli/package-json": "^1.0.1", - "@npmcli/run-script": "^1.8.6", - "abbrev": "~1.1.1", - "ansicolors": "~0.3.2", - "ansistyles": "~0.1.3", - "archy": "~1.0.0", - "cacache": "^15.3.0", - "chalk": "^4.1.2", - "chownr": "^2.0.0", - "cli-columns": "^3.1.2", - "cli-table3": "^0.6.0", - "columnify": "~1.5.4", - "fastest-levenshtein": "^1.0.12", - "glob": "^7.2.0", - "graceful-fs": "^4.2.8", - "hosted-git-info": "^4.0.2", - "ini": "^2.0.0", - "init-package-json": "^2.0.5", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^2.3.1", - "libnpmaccess": "^4.0.2", - "libnpmdiff": "^2.0.4", - "libnpmexec": "^2.0.1", - "libnpmfund": "^1.1.0", - "libnpmhook": "^6.0.2", - "libnpmorg": "^2.0.2", - "libnpmpack": "^2.0.1", - "libnpmpublish": "^4.0.1", - "libnpmsearch": "^3.1.1", - "libnpmteam": "^2.0.3", - "libnpmversion": "^1.2.1", - "make-fetch-happen": "^9.1.0", - "minipass": "^3.1.3", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "ms": "^2.1.2", - "node-gyp": "^7.1.2", - "nopt": "^5.0.0", - "npm-audit-report": "^2.1.5", - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^8.1.5", - "npm-pick-manifest": "^6.1.1", - "npm-profile": "^5.0.3", - "npm-registry-fetch": "^11.0.0", - "npm-user-validate": "^1.0.1", - "npmlog": "^5.0.1", - "opener": "^1.5.2", - "pacote": "^11.3.5", - "parse-conflict-json": "^1.1.1", - "qrcode-terminal": "^0.12.0", - "read": "~1.0.7", - "read-package-json": "^4.1.1", - "read-package-json-fast": "^2.0.3", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "ssri": "^8.0.1", - "tar": "^6.1.11", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^1.0.4", - "validate-npm-package-name": "~3.0.0", - "which": "^2.0.2", - "write-file-atomic": "^3.0.3" + "@isaacs/string-locale-compare": "*", + "@npmcli/arborist": "*", + "@npmcli/ci-detect": "*", + "@npmcli/config": "*", + "@npmcli/map-workspaces": "*", + "@npmcli/package-json": "*", + "@npmcli/run-script": "*", + "abbrev": "*", + "ansicolors": "*", + "ansistyles": "*", + "archy": "*", + "cacache": "*", + "chalk": "*", + "chownr": "*", + "cli-columns": "*", + "cli-table3": "*", + "columnify": "*", + "fastest-levenshtein": "*", + "glob": "*", + "graceful-fs": "*", + "hosted-git-info": "*", + "ini": "*", + "init-package-json": "*", + "is-cidr": "*", + "json-parse-even-better-errors": "*", + "libnpmaccess": "*", + "libnpmdiff": "*", + "libnpmexec": "*", + "libnpmfund": "*", + "libnpmhook": "*", + "libnpmorg": "*", + "libnpmpack": "*", + "libnpmpublish": "*", + "libnpmsearch": "*", + "libnpmteam": "*", + "libnpmversion": "*", + "make-fetch-happen": "*", + "minipass": "*", + "minipass-pipeline": "*", + "mkdirp": "*", + "mkdirp-infer-owner": "*", + "ms": "*", + "node-gyp": "*", + "nopt": "*", + "npm-audit-report": "*", + "npm-install-checks": "*", + "npm-package-arg": "*", + "npm-pick-manifest": "*", + "npm-profile": "*", + "npm-registry-fetch": "*", + "npm-user-validate": "*", + "npmlog": "*", + "opener": "*", + "pacote": "*", + "parse-conflict-json": "*", + "qrcode-terminal": "*", + "read": "*", + "read-package-json": "*", + "read-package-json-fast": "*", + "readdir-scoped-modules": "*", + "rimraf": "*", + "semver": "*", + "ssri": "*", + "tar": "*", + "text-table": "*", + "tiny-relative-date": "*", + "treeverse": "*", + "validate-npm-package-name": "*", + "which": "*", + "write-file-atomic": "*" }, "dependencies": { "@gar/promisify": { @@ -8097,6 +22329,13 @@ "minipass": "^3.1.1" } }, + "string_decoder": { + "version": "1.3.0", + "bundled": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, "string-width": { "version": "2.1.1", "bundled": true, @@ -8118,13 +22357,6 @@ } } }, - "string_decoder": { - "version": "1.3.0", - "bundled": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, "stringify-package": { "version": "1.0.1", "bundled": true @@ -8918,7 +23150,8 @@ "ws": { "version": "8.8.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==" + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "requires": {} } } }, @@ -9865,6 +24098,21 @@ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", "integrity": "sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA==" }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -9932,21 +24180,6 @@ } } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -10759,7 +24992,8 @@ "ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "requires": {} }, "xss": { "version": "1.0.14", diff --git a/package.json b/package.json index 7dbe56f6..2438b517 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,6 @@ "url": "git+https://github.com/deep-foundation/dev.git" }, "type": "module", - "devDependencies": {}, "dependencies": { "@deep-foundation/deeplinks": "0.0.93", "@types/gulp": "^4.0.8", @@ -86,6 +85,7 @@ "rimraf": "^3.0.2", "simple-git": "^2.45.0", "ts-node": "^9.1.1", - "typescript": "^4.1.5" + "typescript": "^4.1.5", + "uniqid": "^5.4.0" } } From 1b2f9d702b774e6b8a361838c3110d2d38f0f1f7 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 13:34:49 +0600 Subject: [PATCH 131/683] Use custom order ids with uniqid --- payments-eacq.cjs | 126 +++------------------------------------------- 1 file changed, 8 insertions(+), 118 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 173519d0..c05a1c96 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -12,6 +12,8 @@ const { const puppeteer = require('puppeteer'); const crypto = require('crypto'); const axios = require('axios'); +const uniqid = require('uniqid'); + const packageName = '@deep-foundation/payments-eacq'; @@ -858,17 +860,15 @@ const f = async () => { console.log({mpDownPay}); - const paymentId = mpDownPay.data.find(link => link.type_id == ${PPayment}).id; + const paymentLink = mpDownPay.data.find(link => link.type_id == ${PPayment}); const sum = mpDownPay.data.find(link => link.type_id == ${PSum}).value.value; - console.log({paymentId}); + console.log({paymentLink}); console.log({sum}); - console.log({paymentId}); - console.log({sum}); const options = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - OrderId: paymentId, + OrderId: paymentLink.value.value ?? paymentLink.id, CustomerKey: ${deep.linkId}, NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", PayType: 'T', @@ -903,118 +903,7 @@ const f = async () => { }); console.log({initResult}); - - // TODO Remove later - if(initResult.response.ErrorCode == '8'){ - const checkOrder = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('CheckOrder'), - data: options, - }); - - const error = getError(response.data.ErrorCode); - - const d = { - error, - request: options, - response: response.data, - }; - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const newCheckOrderData = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - OrderId: paymentId, - }; - - - const checkOrderOptions = { - ...newCheckOrderData, - Token: generateToken(newCheckOrderData), - }; - - console.log({checkOrderOptions}); - - const checkOrderResponse = await checkOrder(checkOrderOptions); - - console.log({checkOrderResponse}); - - if(checkOrderResponse.error != undefined) { - throw new Error(checkOrderResponse.error); - } - - - - const cancel = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Cancel'), - data: options, - }); - - const error = getError(response.data.ErrorCode); - - const d = { - error, - request: options, - response: response.data, - }; - options?.log && options.log(d); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const newCancelData = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentId: bankPaymentId, - }; - - - const cancelOptions = { - ...newCancelData, - Token: generateToken(newCancelData), - }; - - console.log({cancelOptions}); - - const cancelResponse = await cancel(cancelOptions); - - console.log({cancelResponse}); - - console.log({cancelResponse}); - initResult = await sendInit({ - ...cancelOptions - }); - } - - console.log({initResult}) - + if (initResult.error != undefined) { console.log('initResult.error:', initResult.error); const { @@ -1371,6 +1260,7 @@ const f = async () => { data: [{ id: paymentId }], } = await deep.insert({ type_id: PPayment, + number: {data: {value: uniqid()}}, in: { data: [ { @@ -1588,7 +1478,7 @@ const f = async () => { } }; - await cancelAllPayments(); + // await cancelAllPayments(); } }; From 07d3872592684ebf1e324d686c6e3469827eb77e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 13:50:02 +0600 Subject: [PATCH 132/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index c05a1c96..65b456af 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1260,7 +1260,7 @@ const f = async () => { data: [{ id: paymentId }], } = await deep.insert({ type_id: PPayment, - number: {data: {value: uniqid()}}, + string: {data: {value: uniqid()}}, in: { data: [ { From 805a9b3c77488bec8d5dc3f20c713a936acca233 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 14:31:16 +0600 Subject: [PATCH 133/683] Use dotenv-expand --- payments-eacq.cjs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 65b456af..ec22e664 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2,7 +2,8 @@ require('react'); require('graphql'); require('lodash'); require('subscriptions-transport-ws'); -require('dotenv').config(); +var dotenv = require('dotenv'); +var dotenvExpand = require('dotenv-expand'); const { generateApolloClient } = require('@deep-foundation/hasura/client'); const { DeepClient } = require('@deep-foundation/deeplinks/imports/client'); const { @@ -14,6 +15,9 @@ const crypto = require('crypto'); const axios = require('axios'); const uniqid = require('uniqid'); +var myEnv = dotenv.config(); +dotenvExpand(myEnv); + const packageName = '@deep-foundation/payments-eacq'; From 0666d377ae07b4a9c72e9a6b97735488eac8b680 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 14:48:20 +0600 Subject: [PATCH 134/683] Add dotenv-expand --- package-lock.json | 33298 ++++++++++++++++++++++++++++---------------- package.json | 1 + 2 files changed, 21365 insertions(+), 11934 deletions(-) diff --git a/package-lock.json b/package-lock.json index ccb96afd..447d1390 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "concurrently": "^5.3.0", "cross-env": "^7.0.3", "del": "^6.0.0", + "dotenv-expand": "^8.0.3", "gulp": "^4.0.2", "gulp-run-command": "^0.0.10", "i": "^0.3.6", @@ -26,8 +27,20 @@ "ts-node": "^9.1.1", "typescript": "^4.1.5", "uniqid": "^5.4.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==", + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" }, - "devDependencies": {} + "engines": { + "node": ">=6.0.0" + } }, "node_modules/@apollo/client": { "version": "3.6.9", @@ -316,4019 +329,4259 @@ "graphql": "0.13.1 - 15" } }, - "node_modules/@deep-foundation/deeplinks": { - "version": "0.0.93", - "resolved": "https://registry.npmjs.org/@deep-foundation/deeplinks/-/deeplinks-0.0.93.tgz", - "integrity": "sha512-UIvVax1+QlM94ehM0oSeRRQHwBzq8cV3Ec/jMMFl7j+QXIr8QRqKf7TYipNRt+faFTlfK25wEbDGQJi0elTRPQ==", + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "peer": true, "dependencies": { - "@apollo/client": "^3.5.8", - "@deep-foundation/hasura": "0.0.17", - "@deep-foundation/materialized-path": "^0.0.11", - "@deep-foundation/react-hasura": "0.0.5", - "@deep-foundation/store": "0.0.6", - "@types/jest": "^26.0.22", - "@types/node": "^14.17.34", - "@types/react": "^17.0.19", - "apollo-boost": "^0.4.9", - "apollo-server": "^2.21.0", - "apollo-server-core": "^3.6.1", - "apollo-server-express": "^3.5.0", - "atob": "^2.1.2", - "axios": "^0.24.0", - "body-parser": "^1.19.0", - "buffer": "^6.0.3", - "chai": "^4.3.4", - "cross-env": "^7.0.3", - "debug": "^4.3.3", - "dotenv": "^8.2.0", - "fix-path": "^3.0.0", - "get-port": "^5.1.1", - "gists": "^2.0.0", - "graphql": "^15.5.0", - "graphql-playground-middleware-express": "^1.7.23", - "graphql-tag": "^2.11.0", - "http-proxy-middleware": "^2.0.1", - "internal-ip": "^6.2.0", - "jsonwebtoken": "^8.5.1", - "microtime": "^3.0.0", - "moesif-nodejs": "^3.1.19", - "nodemon": "^2.0.15", - "rimraf": "^3.0.2", - "supports-color": "^9.2.1", - "ts-jest": "^26.5.4", - "uniqid": "^5.3.0", - "wait-on": "^6.0.0" + "@babel/highlight": "^7.18.6" }, "engines": { - "node": "^14.15.0" - }, - "peerDependencies": { - "react": "*" + "node": ">=6.9.0" } }, - "node_modules/@deep-foundation/deeplinks/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@babel/compat-data": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", + "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", + "peer": true, "dependencies": { - "ms": "2.1.2" + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.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.0" + "node": ">=6.9.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@deep-foundation/hasura": { - "version": "0.0.17", - "resolved": "https://registry.npmjs.org/@deep-foundation/hasura/-/hasura-0.0.17.tgz", - "integrity": "sha512-rtB7gG8/fsX9k6ykLo7/p1zQlD7XcVNv0MetDPjW5Flq65UZsSdT6xaqo4TmdhF7bWTOku6u3f8SW4xOoFgIRw==", - "dependencies": { - "@apollo/client": "^3.5.5", - "@apollo/react-hooks": "^4.0.0", - "@types/node": "^14.17.14", - "@types/react": "^17.0.19", - "apollo-boost": "^0.4.9", - "apollo-link": "^1.2.14", - "apollo-link-ws": "^1.0.20", - "apollo-server-micro": "^2.21.0", - "axios": "^0.21.1", - "babel-register": "^6.26.0", - "cors": "^2.8.5", - "debug": "^4.3.1", - "dotenv": "^8.2.0", - "express": "^4.17.1", - "migrate": "^1.7.0", - "node-fetch": "^2.6.1", - "normalize-url": "^7.0.2", - "path": "^0.12.7", - "react": "^17.0.1", - "rimraf": "^3.0.2", - "ts-node": "^9.1.1", - "ws": "^7.5.6" + "node_modules/@babel/core/node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "peer": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@deep-foundation/hasura/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.18.12", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", + "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", + "peer": true, "dependencies": { - "follow-redirects": "^1.14.0" + "@babel/types": "^7.18.10", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@deep-foundation/materialized-path": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/@deep-foundation/materialized-path/-/materialized-path-0.0.11.tgz", - "integrity": "sha512-VUiqjTRRwWTm+JZd03w5czSwAOzmKN8Y0h0Hse1jtRFz277qWQqPCL2T40QsQODddn8mEMpiHg2eDS7atBKkhA==", + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "peer": true, "dependencies": { - "@types/jest": "^26.0.22", - "@types/node": "^14.0.23", - "@types/react": "^17.0.2", - "benchmark": "^2.1.4", - "chance": "^1.1.7", - "graphql": "^15.5.3", - "microtime": "^3.0.0", - "ts-jest": "^26.5.4", - "typescript": "^3.9.7" + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" }, - "peerDependencies": { - "@deep-foundation/hasura": "*" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@deep-foundation/materialized-path/node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "node_modules/@babel/generator/node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "peer": true, "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4.2.0" + "node": ">=4" } }, - "node_modules/@deep-foundation/react-hasura": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@deep-foundation/react-hasura/-/react-hasura-0.0.5.tgz", - "integrity": "sha512-3ah7heyiamk3TzEIJ+wA9GLFcarph3e9qjWb/pGIdmZer9aaIOE5hXPba26g4Q7raKmevZK4QC7Cou2/uwbXMA==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "peer": true, "dependencies": { - "@apollo/react-hooks": "^4.0.0", - "debug": "^4.3.1" + "@babel/compat-data": "^7.18.8", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@deep-foundation/hasura": "*", - "react": "*" + "@babel/core": "^7.0.0" } }, - "node_modules/@deep-foundation/store": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@deep-foundation/store/-/store-0.0.6.tgz", - "integrity": "sha512-KBpyvl9S4Pkl71oAnC6c0pQg3uTQGRN3GMclkinM6OR1UVFXMGMSXKk6DQ8QWWEKJ0KW7evUR2Ha0CW2aW1ptA==", + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "peer": true, "dependencies": { - "debug": "^4.1.1", - "lodash": "^4.17.19", - "react-cookie": "^4.0.3", - "universal-cookie": "^4.0.3" + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.9" }, - "peerDependencies": { - "@capacitor/core": "*", - "next": "*", - "react": "*", - "react-dom": "*" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@graphql-tools/merge": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.3.tgz", - "integrity": "sha512-EfULshN2s2s2mhBwbV9WpGnoehRLe7eIMdZrKfHhxlBWOvtNUd3KSCN0PUdAMd7lj1jXUW9KYdn624JrVn6qzg==", + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "peer": true, "dependencies": { - "@graphql-tools/utils": "8.10.0", - "tslib": "^2.4.0" + "@babel/types": "^7.18.6" }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@graphql-tools/mock": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.7.3.tgz", - "integrity": "sha512-U9e3tZenFvSTf0TAaFgwqO84cGNEbgzWXvboqJPth873dMag8sOlLyOBZceVzAZP7ptwfLbhm3S0Qq4ffI7mCw==", + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "peer": true, "dependencies": { - "@graphql-tools/schema": "9.0.1", - "@graphql-tools/utils": "8.10.0", - "fast-json-stable-stringify": "^2.1.0", - "tslib": "^2.4.0" + "@babel/types": "^7.18.6" }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/schema": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.1.tgz", - "integrity": "sha512-Y6apeiBmvXEz082IAuS/ainnEEQrzMECP1MRIV72eo2WPa6ZtLYPycvIbd56Z5uU2LKP4XcWRgK6WUbCyN16Rw==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "peer": true, "dependencies": { - "@graphql-tools/merge": "8.3.3", - "@graphql-tools/utils": "8.10.0", - "tslib": "^2.4.0", - "value-or-promise": "1.0.11" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@graphql-tools/schema": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz", - "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "peer": true, "dependencies": { - "@graphql-tools/merge": "8.3.1", - "@graphql-tools/utils": "8.9.0", - "tslib": "^2.4.0", - "value-or-promise": "1.0.11" + "@babel/types": "^7.18.6" }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@graphql-tools/schema/node_modules/@graphql-tools/merge": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz", - "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==", + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "peer": true, "dependencies": { - "@graphql-tools/utils": "8.9.0", - "tslib": "^2.4.0" + "@babel/types": "^7.18.6" }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", - "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", + "node_modules/@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", + "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", + "peer": true, "dependencies": { - "tslib": "^2.4.0" + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@graphql-tools/utils": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.10.0.tgz", - "integrity": "sha512-yI+V373FdXQbYfqdarehn9vRWDZZYuvyQ/xwiv5ez2BbobHrqsexF7qs56plLRaQ8ESYpVAjMQvJWe9s23O0Jg==", + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "peer": true, "dependencies": { - "tslib": "^2.4.0" + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@graphql-typed-document-node/core": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", - "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.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==", + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "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==", + "peer": true, "dependencies": { - "@hapi/hoek": "^9.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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==", + "peer": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": ">=4" } }, - "node_modules/@jest/types/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==", - "dependencies": { - "color-convert": "^2.0.1" + "node_modules/@babel/parser": { + "version": "7.18.11", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz", + "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==", + "peer": true, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/types/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==", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "peer": true, "dependencies": { - "color-name": "~1.1.4" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": ">=7.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/types/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==" + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/@jest/types/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==", - "engines": { - "node": ">=8" + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/types/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==", + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@josephg/resolvable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", - "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==" + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/@kwsites/file-exists": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", - "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "peer": true, "dependencies": { - "debug": "^4.1.1" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@kwsites/promise-deferred": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", - "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==" + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "peer": true, "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">= 8" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">= 8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "peer": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" }, "engines": { - "node": ">= 8" + "node": ">=6.9.0" } }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "node_modules/@babel/traverse": { + "version": "7.18.11", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.11.tgz", + "integrity": "sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==", + "peer": true, "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.11", + "@babel/types": "^7.18.10", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + "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==", + "peer": true, + "engines": { + "node": ">=4" + } }, - "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "node_modules/@babel/types": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", + "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", + "peer": true, "dependencies": { - "@hapi/hoek": "^9.0.0" + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" - }, - "node_modules/@sideway/pinpoint": { + "node_modules/@babel/types/node_modules/to-fast-properties": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "node_modules/@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", - "dependencies": { - "@types/node": "*" + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "peer": true, + "engines": { + "node": ">=4" } }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "peer": true + }, + "node_modules/@capacitor/core": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-4.0.1.tgz", + "integrity": "sha512-gita0j7UPoGyHejAUsrW1OrkyDSp7gfHn45fkeQclHRSz7UWLF4hqE1R/6INsVmIFu/amIApxfHed8h3m/Fm7g==", + "peer": true, "dependencies": { - "@types/connect": "*", - "@types/node": "*" + "tslib": "^2.1.0" } }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "node_modules/@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "peer": true, "dependencies": { - "@types/node": "*" + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + }, + "bin": { + "watch": "cli.js" + }, + "engines": { + "node": ">=0.1.95" } }, - "node_modules/@types/content-disposition": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", - "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==" - }, - "node_modules/@types/cookie": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz", - "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==" - }, - "node_modules/@types/cookies": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", - "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", + "node_modules/@deep-foundation/deeplinks": { + "version": "0.0.93", + "resolved": "https://registry.npmjs.org/@deep-foundation/deeplinks/-/deeplinks-0.0.93.tgz", + "integrity": "sha512-UIvVax1+QlM94ehM0oSeRRQHwBzq8cV3Ec/jMMFl7j+QXIr8QRqKf7TYipNRt+faFTlfK25wEbDGQJi0elTRPQ==", "dependencies": { - "@types/connect": "*", - "@types/express": "*", - "@types/keygrip": "*", - "@types/node": "*" + "@apollo/client": "^3.5.8", + "@deep-foundation/hasura": "0.0.17", + "@deep-foundation/materialized-path": "^0.0.11", + "@deep-foundation/react-hasura": "0.0.5", + "@deep-foundation/store": "0.0.6", + "@types/jest": "^26.0.22", + "@types/node": "^14.17.34", + "@types/react": "^17.0.19", + "apollo-boost": "^0.4.9", + "apollo-server": "^2.21.0", + "apollo-server-core": "^3.6.1", + "apollo-server-express": "^3.5.0", + "atob": "^2.1.2", + "axios": "^0.24.0", + "body-parser": "^1.19.0", + "buffer": "^6.0.3", + "chai": "^4.3.4", + "cross-env": "^7.0.3", + "debug": "^4.3.3", + "dotenv": "^8.2.0", + "fix-path": "^3.0.0", + "get-port": "^5.1.1", + "gists": "^2.0.0", + "graphql": "^15.5.0", + "graphql-playground-middleware-express": "^1.7.23", + "graphql-tag": "^2.11.0", + "http-proxy-middleware": "^2.0.1", + "internal-ip": "^6.2.0", + "jsonwebtoken": "^8.5.1", + "microtime": "^3.0.0", + "moesif-nodejs": "^3.1.19", + "nodemon": "^2.0.15", + "rimraf": "^3.0.2", + "supports-color": "^9.2.1", + "ts-jest": "^26.5.4", + "uniqid": "^5.3.0", + "wait-on": "^6.0.0" + }, + "engines": { + "node": "^14.15.0" + }, + "peerDependencies": { + "react": "*" } }, - "node_modules/@types/cors": { - "version": "2.8.10", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", - "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==" - }, - "node_modules/@types/expect": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", - "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==" - }, - "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "node_modules/@deep-foundation/deeplinks/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.30", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", - "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", + "node_modules/@deep-foundation/hasura": { + "version": "0.0.17", + "resolved": "https://registry.npmjs.org/@deep-foundation/hasura/-/hasura-0.0.17.tgz", + "integrity": "sha512-rtB7gG8/fsX9k6ykLo7/p1zQlD7XcVNv0MetDPjW5Flq65UZsSdT6xaqo4TmdhF7bWTOku6u3f8SW4xOoFgIRw==", "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" + "@apollo/client": "^3.5.5", + "@apollo/react-hooks": "^4.0.0", + "@types/node": "^14.17.14", + "@types/react": "^17.0.19", + "apollo-boost": "^0.4.9", + "apollo-link": "^1.2.14", + "apollo-link-ws": "^1.0.20", + "apollo-server-micro": "^2.21.0", + "axios": "^0.21.1", + "babel-register": "^6.26.0", + "cors": "^2.8.5", + "debug": "^4.3.1", + "dotenv": "^8.2.0", + "express": "^4.17.1", + "migrate": "^1.7.0", + "node-fetch": "^2.6.1", + "normalize-url": "^7.0.2", + "path": "^0.12.7", + "react": "^17.0.1", + "rimraf": "^3.0.2", + "ts-node": "^9.1.1", + "ws": "^7.5.6" } }, - "node_modules/@types/formidable": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.5.tgz", - "integrity": "sha512-zu3mQJa4hDNubEMViSj937602XdDGzK7Q5pJ5QmLUbNxclbo9tZGt5jtwM352ssZ+pqo5V4H14TBvT/ALqQQcA==", + "node_modules/@deep-foundation/hasura/node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "dependencies": { - "@types/node": "*" + "follow-redirects": "^1.14.0" } }, - "node_modules/@types/fs-capacitor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz", - "integrity": "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==", + "node_modules/@deep-foundation/hasura/node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", "dependencies": { - "@types/node": "*" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "node_modules/@deep-foundation/materialized-path": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/@deep-foundation/materialized-path/-/materialized-path-0.0.11.tgz", + "integrity": "sha512-VUiqjTRRwWTm+JZd03w5czSwAOzmKN8Y0h0Hse1jtRFz277qWQqPCL2T40QsQODddn8mEMpiHg2eDS7atBKkhA==", "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" + "@types/jest": "^26.0.22", + "@types/node": "^14.0.23", + "@types/react": "^17.0.2", + "benchmark": "^2.1.4", + "chance": "^1.1.7", + "graphql": "^15.5.3", + "microtime": "^3.0.0", + "ts-jest": "^26.5.4", + "typescript": "^3.9.7" + }, + "peerDependencies": { + "@deep-foundation/hasura": "*" } }, - "node_modules/@types/glob-stream": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-6.1.1.tgz", - "integrity": "sha512-AGOUTsTdbPkRS0qDeyeS+6KypmfVpbT5j23SN8UPG63qjKXNKjXn6V9wZUr8Fin0m9l8oGYaPK8b2WUMF8xI1A==", - "dependencies": { - "@types/glob": "*", - "@types/node": "*" + "node_modules/@deep-foundation/materialized-path/node_modules/typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" } }, - "node_modules/@types/gulp": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.9.tgz", - "integrity": "sha512-zzT+wfQ8uwoXjDhRK9Zkmmk09/fbLLmN/yDHFizJiEKIve85qutOnXcP/TM2sKPBTU+Jc16vfPbOMkORMUBN7Q==", + "node_modules/@deep-foundation/react-hasura": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@deep-foundation/react-hasura/-/react-hasura-0.0.5.tgz", + "integrity": "sha512-3ah7heyiamk3TzEIJ+wA9GLFcarph3e9qjWb/pGIdmZer9aaIOE5hXPba26g4Q7raKmevZK4QC7Cou2/uwbXMA==", "dependencies": { - "@types/undertaker": "*", - "@types/vinyl-fs": "*", - "chokidar": "^3.3.1" + "@apollo/react-hooks": "^4.0.0", + "debug": "^4.3.1" + }, + "peerDependencies": { + "@deep-foundation/hasura": "*", + "react": "*" } }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "node_modules/@deep-foundation/store": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@deep-foundation/store/-/store-0.0.6.tgz", + "integrity": "sha512-KBpyvl9S4Pkl71oAnC6c0pQg3uTQGRN3GMclkinM6OR1UVFXMGMSXKk6DQ8QWWEKJ0KW7evUR2Ha0CW2aW1ptA==", "dependencies": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" + "debug": "^4.1.1", + "lodash": "^4.17.19", + "react-cookie": "^4.0.3", + "universal-cookie": "^4.0.3" + }, + "peerDependencies": { + "@capacitor/core": "*", + "next": "*", + "react": "*", + "react-dom": "*" } }, - "node_modules/@types/http-assert": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", - "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==" - }, - "node_modules/@types/http-errors": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", - "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==" - }, - "node_modules/@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "node_modules/@graphql-tools/merge": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.3.tgz", + "integrity": "sha512-EfULshN2s2s2mhBwbV9WpGnoehRLe7eIMdZrKfHhxlBWOvtNUd3KSCN0PUdAMd7lj1jXUW9KYdn624JrVn6qzg==", "dependencies": { - "@types/node": "*" + "@graphql-tools/utils": "8.10.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "26.0.24", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", - "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", + "node_modules/@graphql-tools/mock": { + "version": "8.7.3", + "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.7.3.tgz", + "integrity": "sha512-U9e3tZenFvSTf0TAaFgwqO84cGNEbgzWXvboqJPth873dMag8sOlLyOBZceVzAZP7ptwfLbhm3S0Qq4ffI7mCw==", "dependencies": { - "jest-diff": "^26.0.0", - "pretty-format": "^26.0.0" + "@graphql-tools/schema": "9.0.1", + "@graphql-tools/utils": "8.10.0", + "fast-json-stable-stringify": "^2.1.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@types/keygrip": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", - "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" - }, - "node_modules/@types/koa": { - "version": "2.13.5", - "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz", - "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==", + "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/schema": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.1.tgz", + "integrity": "sha512-Y6apeiBmvXEz082IAuS/ainnEEQrzMECP1MRIV72eo2WPa6ZtLYPycvIbd56Z5uU2LKP4XcWRgK6WUbCyN16Rw==", "dependencies": { - "@types/accepts": "*", - "@types/content-disposition": "*", - "@types/cookies": "*", - "@types/http-assert": "*", - "@types/http-errors": "*", - "@types/keygrip": "*", - "@types/koa-compose": "*", - "@types/node": "*" + "@graphql-tools/merge": "8.3.3", + "@graphql-tools/utils": "8.10.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@types/koa-compose": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", - "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", + "node_modules/@graphql-tools/schema": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz", + "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==", "dependencies": { - "@types/koa": "*" + "@graphql-tools/merge": "8.3.1", + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "node_modules/@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" - }, - "node_modules/@types/node": { - "version": "14.18.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.18.tgz", - "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig==" - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - }, - "node_modules/@types/react": { - "version": "17.0.48", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.48.tgz", - "integrity": "sha512-zJ6IYlJ8cYYxiJfUaZOQee4lh99mFihBoqkOSEGV+dFi9leROW6+PgstzQ+w3gWTnUfskALtQPGHK6dYmPj+2A==", + "node_modules/@graphql-tools/schema/node_modules/@graphql-tools/merge": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz", + "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==", "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "node_modules/@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", + "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", "dependencies": { - "@types/mime": "*", - "@types/node": "*" + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@types/undertaker": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.7.tgz", - "integrity": "sha512-xuY7nBwo1zSRoY2aitp/HArHfTulFAKql2Fr4b4mWbBBP+F50n7Jm6nwISTTMaDk2xvl92O10TTejVF0Q9mInw==", + "node_modules/@graphql-tools/utils": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.10.0.tgz", + "integrity": "sha512-yI+V373FdXQbYfqdarehn9vRWDZZYuvyQ/xwiv5ez2BbobHrqsexF7qs56plLRaQ8ESYpVAjMQvJWe9s23O0Jg==", "dependencies": { - "@types/node": "*", - "@types/undertaker-registry": "*", - "async-done": "~1.3.2" + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@types/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==" - }, - "node_modules/@types/vinyl": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", - "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", - "dependencies": { - "@types/expect": "^1.20.4", - "@types/node": "*" + "node_modules/@graphql-typed-document-node/core": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", + "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@types/vinyl-fs": { - "version": "2.4.12", - "resolved": "https://registry.npmjs.org/@types/vinyl-fs/-/vinyl-fs-2.4.12.tgz", - "integrity": "sha512-LgBpYIWuuGsihnlF+OOWWz4ovwCYlT03gd3DuLwex50cYZLmX3yrW+sFF9ndtmh7zcZpS6Ri47PrIu+fV+sbXw==", - "dependencies": { - "@types/glob-stream": "*", - "@types/node": "*", - "@types/vinyl": "*" - } + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" }, - "node_modules/@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", "dependencies": { - "@types/node": "*" + "@hapi/hoek": "^9.0.0" } }, - "node_modules/@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "peer": true, "dependencies": { - "@types/yargs-parser": "*" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" - }, - "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "optional": true, - "dependencies": { - "@types/node": "*" + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/@types/zen-observable": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz", - "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==" - }, - "node_modules/@wry/context": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.6.1.tgz", - "integrity": "sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw==", + "node_modules/@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "peer": true, "dependencies": { - "tslib": "^2.3.0" + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">= 10.14.2" } }, - "node_modules/@wry/equality": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.3.tgz", - "integrity": "sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g==", + "node_modules/@jest/console/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==", + "peer": true, "dependencies": { - "tslib": "^2.3.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@wry/trie": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.2.tgz", - "integrity": "sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ==", + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { - "tslib": "^2.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "node_modules/accept": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/accept/-/accept-3.1.3.tgz", - "integrity": "sha512-OgOEAidVEOKPup+Gv2+2wdH2AgVKI9LxsJ4hicdJ6cY0faUuZdZoi56kkXWlHp9qicN1nWQLmW5ZRGk+SBS5xg==", - "deprecated": "This module has moved and is now available at @hapi/accept. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", + "node_modules/@jest/console/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==", + "peer": true, "dependencies": { - "boom": "7.x.x", - "hoek": "6.x.x" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, + "node_modules/@jest/console/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==", + "peer": true + }, + "node_modules/@jest/console/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==", + "peer": true, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/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==", + "peer": true, "dependencies": { - "debug": "4" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 6.0.0" + "node": ">=8" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "peer": true, "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/core/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==", + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@jest/core/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==", + "peer": 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" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { - "ansi-wrap": "^0.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "node_modules/@jest/core/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==", + "peer": true, "dependencies": { - "ansi-wrap": "0.1.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "node_modules/@jest/core/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==", + "peer": true + }, + "node_modules/@jest/core/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==", + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/@jest/core/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "node_modules/@jest/core/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==", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/@jest/core/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==", + "peer": true, "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/apollo-boost": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/apollo-boost/-/apollo-boost-0.4.9.tgz", - "integrity": "sha512-05y5BKcDaa8w47f8d81UVwKqrAjn8uKLv6QM9fNdldoNzQ+rnOHgFlnrySUZRz9QIT3vPftQkEz2UEASp1Mi5g==", + "node_modules/@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "peer": true, "dependencies": { - "apollo-cache": "^1.3.5", - "apollo-cache-inmemory": "^1.6.6", - "apollo-client": "^2.6.10", - "apollo-link": "^1.0.6", - "apollo-link-error": "^1.0.3", - "apollo-link-http": "^1.3.1", - "graphql-tag": "^2.4.2", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0" + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/apollo-boost/node_modules/ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "node_modules/@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "peer": true, "dependencies": { - "tslib": "^1.9.3" + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/apollo-boost/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/apollo-cache": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.5.tgz", - "integrity": "sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA==", + "node_modules/@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "peer": true, "dependencies": { - "apollo-utilities": "^1.3.4", - "tslib": "^1.10.0" + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/apollo-cache-control": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.14.0.tgz", - "integrity": "sha512-qN4BCq90egQrgNnTRMUHikLZZAprf3gbm8rC5Vwmc6ZdLolQ7bFsa769Hqi6Tq/lS31KLsXBLTOsRbfPHph12w==", - "deprecated": "The functionality provided by the `apollo-cache-control` package is built in to `apollo-server-core` starting with Apollo Server 3. See https://www.apollographql.com/docs/apollo-server/migration/#cachecontrol for details.", - "dependencies": { - "apollo-server-env": "^3.1.0", - "apollo-server-plugin-base": "^0.13.0" + "node_modules/@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "peer": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" }, "engines": { - "node": ">=6.0" + "node": ">= 10.14.2" }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + "optionalDependencies": { + "node-notifier": "^8.0.0" } }, - "node_modules/apollo-cache-inmemory": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6.tgz", - "integrity": "sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A==", + "node_modules/@jest/reporters/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==", + "peer": true, "dependencies": { - "apollo-cache": "^1.3.5", - "apollo-utilities": "^1.3.4", - "optimism": "^0.10.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-cache-inmemory/node_modules/@wry/context": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.4.4.tgz", - "integrity": "sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==", - "dependencies": { - "@types/node": ">=6", - "tslib": "^1.9.3" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/apollo-cache-inmemory/node_modules/optimism": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.10.3.tgz", - "integrity": "sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw==", + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { - "@wry/context": "^0.4.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/apollo-cache-inmemory/node_modules/ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "node_modules/@jest/reporters/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==", + "peer": true, "dependencies": { - "tslib": "^1.9.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/apollo-cache-inmemory/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/@jest/reporters/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==", + "peer": true }, - "node_modules/apollo-cache/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/@jest/reporters/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==", + "peer": true, + "engines": { + "node": ">=8" + } }, - "node_modules/apollo-client": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.6.10.tgz", - "integrity": "sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA==", - "dependencies": { - "@types/zen-observable": "^0.8.0", - "apollo-cache": "1.3.5", - "apollo-link": "^1.0.0", - "apollo-utilities": "1.3.4", - "symbol-observable": "^1.0.2", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0", - "zen-observable": "^0.8.0" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + "node_modules/@jest/reporters/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/apollo-client/node_modules/symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "node_modules/@jest/reporters/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "peer": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/apollo-client/node_modules/ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "node_modules/@jest/reporters/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==", + "peer": true, "dependencies": { - "tslib": "^1.9.3" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/apollo-client/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/apollo-datasource": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.9.0.tgz", - "integrity": "sha512-y8H99NExU1Sk4TvcaUxTdzfq2SZo6uSj5dyh75XSQvbpH6gdAXIW9MaBcvlNC7n0cVPsidHmOcHOWxJ/pTXGjA==", + "node_modules/@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "peer": true, "dependencies": { - "apollo-server-caching": "^0.7.0", - "apollo-server-env": "^3.1.0" + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" }, "engines": { - "node": ">=6" + "node": ">= 10.14.2" } }, - "node_modules/apollo-graphql": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.9.7.tgz", - "integrity": "sha512-bezL9ItUWUGHTm1bI/XzIgiiZbhXpsC7uxk4UxFPmcVJwJsDc3ayZ99oXxAaK+3Rbg/IoqrHckA6CwmkCsbaSA==", - "dependencies": { - "core-js-pure": "^3.10.2", - "lodash.sortby": "^4.7.0", - "sha.js": "^2.4.11" - }, + "node_modules/@jest/source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "peer": true, "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^14.2.1 || ^15.0.0" + "node": ">=0.10.0" } }, - "node_modules/apollo-link": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz", - "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==", + "node_modules/@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "peer": true, "dependencies": { - "apollo-utilities": "^1.3.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.9.3", - "zen-observable-ts": "^0.8.21" + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" }, - "peerDependencies": { - "graphql": "^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/apollo-link-error": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.13.tgz", - "integrity": "sha512-jAZOOahJU6bwSqb2ZyskEK1XdgUY9nkmeclCrW7Gddh1uasHVqmoYc4CKdb0/H0Y1J9lvaXKle2Wsw/Zx1AyUg==", + "node_modules/@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "peer": true, "dependencies": { - "apollo-link": "^1.2.14", - "apollo-link-http-common": "^0.2.16", - "tslib": "^1.9.3" + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + }, + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/apollo-link-error/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/apollo-link-http": { - "version": "1.5.17", - "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.17.tgz", - "integrity": "sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg==", + "node_modules/@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "peer": true, "dependencies": { - "apollo-link": "^1.2.14", - "apollo-link-http-common": "^0.2.16", - "tslib": "^1.9.3" + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/apollo-link-http-common": { - "version": "0.2.16", - "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz", - "integrity": "sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg==", + "node_modules/@jest/transform/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==", + "peer": true, "dependencies": { - "apollo-link": "^1.2.14", - "ts-invariant": "^0.4.0", - "tslib": "^1.9.3" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/apollo-link-http-common/node_modules/ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { - "tslib": "^1.9.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/apollo-link-http-common/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/apollo-link-http/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/apollo-link-ws": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/apollo-link-ws/-/apollo-link-ws-1.0.20.tgz", - "integrity": "sha512-mjSFPlQxmoLArpHBeUb2Xj+2HDYeTaJqFGOqQ+I8NVJxgL9lJe84PDWcPah/yMLv3rB7QgBDSuZ0xoRFBPlySw==", + "node_modules/@jest/transform/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==", + "peer": true, "dependencies": { - "apollo-link": "^1.2.14", - "tslib": "^1.9.3" + "color-name": "~1.1.4" }, - "peerDependencies": { - "subscriptions-transport-ws": "^0.9.0" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/apollo-link-ws/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/@jest/transform/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==", + "peer": true }, - "node_modules/apollo-link/node_modules/ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "dependencies": { - "tslib": "^1.9.3" + "node_modules/@jest/transform/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==", + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/apollo-link/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/apollo-link/node_modules/zen-observable-ts": { - "version": "0.8.21", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz", - "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==", - "dependencies": { - "tslib": "^1.9.3", - "zen-observable": "^0.8.0" + "node_modules/@jest/transform/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/apollo-reporting-protobuf": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-0.8.0.tgz", - "integrity": "sha512-B3XmnkH6Y458iV6OsA7AhfwvTgeZnFq9nPVjbxmLKnvfkEl8hYADtz724uPa0WeBiD7DSFcnLtqg9yGmCkBohg==", - "dependencies": { - "@apollo/protobufjs": "1.2.2" + "node_modules/@jest/transform/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "peer": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/apollo-server": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-2.25.4.tgz", - "integrity": "sha512-CNvaSd0wkacfsvprSI843qTLKfBQpLik9e0y77On+OhdObkmq1ij8qkpF8awNg0iJPG5+RYBGNC7c/PA6vO53A==", + "node_modules/@jest/transform/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==", + "peer": true, "dependencies": { - "apollo-server-core": "^2.25.4", - "apollo-server-express": "^2.25.4", - "express": "^4.0.0", - "graphql-subscriptions": "^1.0.0", - "graphql-tools": "^4.0.8", - "stoppable": "^1.1.0" + "has-flag": "^4.0.0" }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/apollo-server-caching": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.7.0.tgz", - "integrity": "sha512-MsVCuf/2FxuTFVhGLK13B+TZH9tBd2qkyoXKKILIiGcZ5CDUEBO14vIV63aNkMkS1xxvK2U4wBcuuNj/VH2Mkw==", + "node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dependencies": { - "lru-cache": "^6.0.0" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">= 10.14.2" } }, - "node_modules/apollo-server-core": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.10.1.tgz", - "integrity": "sha512-UFFziv6h15QbKRZOA6wLyr1Sle9kns3JuQ5DEB7OYe5AIoOJNjZkWXX/tmLFUrSmlnDDryi6Sf5pDzpYmUC/UA==", + "node_modules/@jest/types/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==", "dependencies": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "@apollo/utils.usagereporting": "^1.0.0", - "@apollographql/apollo-tools": "^0.5.3", - "@apollographql/graphql-playground-html": "1.6.29", - "@graphql-tools/mock": "^8.1.2", - "@graphql-tools/schema": "^8.0.0", - "@josephg/resolvable": "^1.0.0", - "apollo-datasource": "^3.3.2", - "apollo-reporting-protobuf": "^3.3.2", - "apollo-server-env": "^4.2.1", - "apollo-server-errors": "^3.3.1", - "apollo-server-plugin-base": "^3.6.2", - "apollo-server-types": "^3.6.2", - "async-retry": "^1.2.1", - "fast-json-stable-stringify": "^2.1.0", - "graphql-tag": "^2.11.0", - "loglevel": "^1.6.8", - "lru-cache": "^6.0.0", - "sha.js": "^2.4.11", - "uuid": "^8.0.0", - "whatwg-mimetype": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=12.0" + "node": ">=8" }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/apollo-server-core/node_modules/@apollo/protobufjs": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", - "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", - "hasInstallScript": true, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "bin": { - "apollo-pbjs": "bin/pbjs", - "apollo-pbts": "bin/pbts" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/apollo-server-core/node_modules/@apollographql/graphql-playground-html": { - "version": "1.6.29", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", - "integrity": "sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==", + "node_modules/@jest/types/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==", "dependencies": { - "xss": "^1.0.8" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/apollo-server-core/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + "node_modules/@jest/types/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==" }, - "node_modules/apollo-server-core/node_modules/apollo-datasource": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", - "integrity": "sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==", - "dependencies": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "apollo-server-env": "^4.2.1" - }, + "node_modules/@jest/types/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==", "engines": { - "node": ">=12.0" + "node": ">=8" } }, - "node_modules/apollo-server-core/node_modules/apollo-reporting-protobuf": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", - "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", + "node_modules/@jest/types/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==", "dependencies": { - "@apollo/protobufjs": "1.2.4" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/apollo-server-core/node_modules/apollo-server-env": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", - "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", + "node_modules/@josephg/resolvable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", + "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==" + }, + "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==", + "peer": true, "dependencies": { - "node-fetch": "^2.6.7" + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" }, "engines": { - "node": ">=12.0" + "node": ">=6.0.0" } }, - "node_modules/apollo-server-core/node_modules/apollo-server-errors": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz", - "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "peer": true, "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" + "node": ">=6.0.0" } }, - "node_modules/apollo-server-core/node_modules/apollo-server-plugin-base": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.6.2.tgz", - "integrity": "sha512-erWXjLOO1u7fxQkbxJ2cwSO7p0tYzNied91I1SJ9tikXZ/2eZUyDyvrpI+4g70kOdEi+AmJ5Fo8ahEXKJ75zdg==", - "dependencies": { - "apollo-server-types": "^3.6.2" - }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "peer": true, "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" + "node": ">=6.0.0" } }, - "node_modules/apollo-server-core/node_modules/apollo-server-types": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.2.tgz", - "integrity": "sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "peer": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "peer": true, "dependencies": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "apollo-reporting-protobuf": "^3.3.2", - "apollo-server-env": "^4.2.1" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/apollo-server-env": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-3.1.0.tgz", - "integrity": "sha512-iGdZgEOAuVop3vb0F2J3+kaBVi4caMoxefHosxmgzAbbSpvWehB8Y1QiSyyMeouYC38XNVk5wnZl+jdGSsWsIQ==", + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", "dependencies": { - "node-fetch": "^2.6.1", - "util.promisify": "^1.0.0" - }, - "engines": { - "node": ">=6" + "debug": "^4.1.1" } }, - "node_modules/apollo-server-errors": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.5.0.tgz", - "integrity": "sha512-lO5oTjgiC3vlVg2RKr3RiXIIQ5pGXBFxYGGUkKDhTud3jMIhs+gel8L8zsEjKaKxkjHhCQAA/bcEfYiKkGQIvA==", + "node_modules/@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==" + }, + "node_modules/@next/env": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/env/-/env-12.2.5.tgz", + "integrity": "sha512-vLPLV3cpPGjUPT3PjgRj7e3nio9t6USkuew3JE/jMeon/9Mvp1WyR18v3iwnCuX7eUAm1HmAbJHHLAbcu/EJcw==", + "peer": true + }, + "node_modules/@next/swc-android-arm-eabi": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.5.tgz", + "integrity": "sha512-cPWClKxGhgn2dLWnspW+7psl3MoLQUcNqJqOHk2BhNcou9ARDtC0IjQkKe5qcn9qg7I7U83Gp1yh2aesZfZJMA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "peer": true, "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + "node": ">= 10" } }, - "node_modules/apollo-server-express": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.10.1.tgz", - "integrity": "sha512-r0esst3YGNdlphYiOrflfBqJ15VAZAhYhWSFo2kPF4knsIGK5HUkeqwjMr+fFDBn4DEfYzC+I1+LnsF/hFN8VQ==", - "dependencies": { - "@types/accepts": "^1.3.5", - "@types/body-parser": "1.19.2", - "@types/cors": "2.8.12", - "@types/express": "4.17.13", - "@types/express-serve-static-core": "4.17.30", - "accepts": "^1.3.5", - "apollo-server-core": "^3.10.1", - "apollo-server-types": "^3.6.2", - "body-parser": "^1.19.0", - "cors": "^2.8.5", - "parseurl": "^1.3.3" - }, + "node_modules/@next/swc-android-arm64": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.2.5.tgz", + "integrity": "sha512-vMj0efliXmC5b7p+wfcQCX0AfU8IypjkzT64GiKJD9PgiA3IILNiGJr1fw2lyUDHkjeWx/5HMlMEpLnTsQslwg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "peer": true, "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "express": "^4.17.1", - "graphql": "^15.3.0 || ^16.0.0" + "node": ">= 10" } }, - "node_modules/apollo-server-express/node_modules/@apollo/protobufjs": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", - "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - }, - "bin": { - "apollo-pbjs": "bin/pbjs", - "apollo-pbts": "bin/pbts" + "node_modules/@next/swc-darwin-arm64": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.5.tgz", + "integrity": "sha512-VOPWbO5EFr6snla/WcxUKtvzGVShfs302TEMOtzYyWni6f9zuOetijJvVh9CCTzInnXAZMtHyNhefijA4HMYLg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" } }, - "node_modules/apollo-server-express/node_modules/@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + "node_modules/@next/swc-darwin-x64": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.5.tgz", + "integrity": "sha512-5o8bTCgAmtYOgauO/Xd27vW52G2/m3i5PX7MUYePquxXAnX73AAtqA3WgPXBRitEB60plSKZgOTkcpqrsh546A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" + } }, - "node_modules/apollo-server-express/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + "node_modules/@next/swc-freebsd-x64": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.5.tgz", + "integrity": "sha512-yYUbyup1JnznMtEBRkK4LT56N0lfK5qNTzr6/DEyDw5TbFVwnuy2hhLBzwCBkScFVjpFdfiC6SQAX3FrAZzuuw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">= 10" + } }, - "node_modules/apollo-server-express/node_modules/apollo-reporting-protobuf": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", - "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", - "dependencies": { - "@apollo/protobufjs": "1.2.4" + "node_modules/@next/swc-linux-arm-gnueabihf": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.5.tgz", + "integrity": "sha512-2ZE2/G921Acks7UopJZVMgKLdm4vN4U0yuzvAMJ6KBavPzqESA2yHJlm85TV/K9gIjKhSk5BVtauIUntFRP8cg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" } }, - "node_modules/apollo-server-express/node_modules/apollo-server-env": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", - "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", - "dependencies": { - "node-fetch": "^2.6.7" - }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.5.tgz", + "integrity": "sha512-/I6+PWVlz2wkTdWqhlSYYJ1pWWgUVva6SgX353oqTh8njNQp1SdFQuWDqk8LnM6ulheVfSsgkDzxrDaAQZnzjQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": ">=12.0" + "node": ">= 10" } }, - "node_modules/apollo-server-express/node_modules/apollo-server-types": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.2.tgz", - "integrity": "sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==", - "dependencies": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "apollo-reporting-protobuf": "^3.3.2", - "apollo-server-env": "^4.2.1" - }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.5.tgz", + "integrity": "sha512-LPQRelfX6asXyVr59p5sTpx5l+0yh2Vjp/R8Wi4X9pnqcayqT4CUJLiHqCvZuLin3IsFdisJL0rKHMoaZLRfmg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" + "node": ">= 10" } }, - "node_modules/apollo-server-micro": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/apollo-server-micro/-/apollo-server-micro-2.25.4.tgz", - "integrity": "sha512-tx9VC9VdMMZLi9TFfl/pX4jr/qqhgu2To9KI5jlXzYxowROwOt/TwTx9ClT77YdJDoSIAvippYSaw+njuejN/A==", - "dependencies": { - "@apollographql/graphql-playground-html": "1.6.27", - "accept": "^3.0.2", - "apollo-server-core": "^2.25.4", - "apollo-server-types": "^0.9.0", - "micro": "^9.3.2" + "node_modules/@next/swc-linux-x64-gnu": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.5.tgz", + "integrity": "sha512-0szyAo8jMCClkjNK0hknjhmAngUppoRekW6OAezbEYwHXN/VNtsXbfzgYOqjKWxEx3OoAzrT3jLwAF0HdX2MEw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" } }, - "node_modules/apollo-server-micro/node_modules/apollo-server-core": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.25.4.tgz", - "integrity": "sha512-1u3BnFKbCt6F9SPM7ZoWmtHK6ubme56H8hV5Mjv3KbfSairU76SU79IhO05BEJE57S6N+ddb1rm3Uk93X6YeGw==", - "dependencies": { - "@apollographql/apollo-tools": "^0.5.0", - "@apollographql/graphql-playground-html": "1.6.27", - "@apollographql/graphql-upload-8-fork": "^8.1.3", - "@josephg/resolvable": "^1.0.0", - "@types/ws": "^7.0.0", - "apollo-cache-control": "^0.14.0", - "apollo-datasource": "^0.9.0", - "apollo-graphql": "^0.9.0", - "apollo-reporting-protobuf": "^0.8.0", - "apollo-server-caching": "^0.7.0", - "apollo-server-env": "^3.1.0", - "apollo-server-errors": "^2.5.0", - "apollo-server-plugin-base": "^0.13.0", - "apollo-server-types": "^0.9.0", - "apollo-tracing": "^0.15.0", - "async-retry": "^1.2.1", - "fast-json-stable-stringify": "^2.0.0", - "graphql-extensions": "^0.15.0", - "graphql-tag": "^2.11.0", - "graphql-tools": "^4.0.8", - "loglevel": "^1.6.7", - "lru-cache": "^6.0.0", - "sha.js": "^2.4.11", - "subscriptions-transport-ws": "^0.9.19", - "uuid": "^8.0.0" - }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.5.tgz", + "integrity": "sha512-zg/Y6oBar1yVnW6Il1I/08/2ukWtOG6s3acdJdEyIdsCzyQi4RLxbbhkD/EGQyhqBvd3QrC6ZXQEXighQUAZ0g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + "node": ">= 10" } }, - "node_modules/apollo-server-plugin-base": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.13.0.tgz", - "integrity": "sha512-L3TMmq2YE6BU6I4Tmgygmd0W55L+6XfD9137k+cWEBFu50vRY4Re+d+fL5WuPkk5xSPKd/PIaqzidu5V/zz8Kg==", - "dependencies": { - "apollo-server-types": "^0.9.0" - }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.5.tgz", + "integrity": "sha512-3/90DRNSqeeSRMMEhj4gHHQlLhhKg5SCCoYfE3kBjGpE63EfnblYUqsszGGZ9ekpKL/R4/SGB40iCQr8tR5Jiw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + "node": ">= 10" } }, - "node_modules/apollo-server-types": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-0.9.0.tgz", - "integrity": "sha512-qk9tg4Imwpk732JJHBkhW0jzfG0nFsLqK2DY6UhvJf7jLnRePYsPxWfPiNkxni27pLE2tiNlCwoDFSeWqpZyBg==", + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.5.tgz", + "integrity": "sha512-hGLc0ZRAwnaPL4ulwpp4D2RxmkHQLuI8CFOEEHdzZpS63/hMVzv81g8jzYA0UXbb9pus/iTc3VRbVbAM03SRrw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.5.tgz", + "integrity": "sha512-7h5/ahY7NeaO2xygqVrSG/Y8Vs4cdjxIjowTZ5W6CKoTKn7tmnuxlUc2h74x06FKmbhAd9agOjr/AOKyxYYm9Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dependencies": { - "apollo-reporting-protobuf": "^0.8.0", - "apollo-server-caching": "^0.7.0", - "apollo-server-env": "^3.1.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + "node": ">= 8" } }, - "node_modules/apollo-server/node_modules/@types/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" } }, - "node_modules/apollo-server/node_modules/apollo-server-core": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.25.4.tgz", - "integrity": "sha512-1u3BnFKbCt6F9SPM7ZoWmtHK6ubme56H8hV5Mjv3KbfSairU76SU79IhO05BEJE57S6N+ddb1rm3Uk93X6YeGw==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dependencies": { - "@apollographql/apollo-tools": "^0.5.0", - "@apollographql/graphql-playground-html": "1.6.27", - "@apollographql/graphql-upload-8-fork": "^8.1.3", - "@josephg/resolvable": "^1.0.0", - "@types/ws": "^7.0.0", - "apollo-cache-control": "^0.14.0", - "apollo-datasource": "^0.9.0", - "apollo-graphql": "^0.9.0", - "apollo-reporting-protobuf": "^0.8.0", - "apollo-server-caching": "^0.7.0", - "apollo-server-env": "^3.1.0", - "apollo-server-errors": "^2.5.0", - "apollo-server-plugin-base": "^0.13.0", - "apollo-server-types": "^0.9.0", - "apollo-tracing": "^0.15.0", - "async-retry": "^1.2.1", - "fast-json-stable-stringify": "^2.0.0", - "graphql-extensions": "^0.15.0", - "graphql-tag": "^2.11.0", - "graphql-tools": "^4.0.8", - "loglevel": "^1.6.7", - "lru-cache": "^6.0.0", - "sha.js": "^2.4.11", - "subscriptions-transport-ws": "^0.9.19", - "uuid": "^8.0.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + "node": ">= 8" } }, - "node_modules/apollo-server/node_modules/apollo-server-express": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.25.4.tgz", - "integrity": "sha512-1Yd9DscLlCP5BhfAkNxg+aGcaTKnL36FyezdL7Iqc+KelON5PAyX8qpAChKL8Z3L2YHJzIk/Haf4dFJLKUjx9w==", - "dependencies": { - "@apollographql/graphql-playground-html": "1.6.27", - "@types/accepts": "^1.3.5", - "@types/body-parser": "1.19.0", - "@types/cors": "2.8.10", - "@types/express": "^4.17.12", - "@types/express-serve-static-core": "^4.17.21", - "accepts": "^1.3.5", - "apollo-server-core": "^2.25.4", - "apollo-server-types": "^0.9.0", - "body-parser": "^1.18.3", - "cors": "^2.8.5", - "express": "^4.17.1", - "graphql-subscriptions": "^1.0.0", - "graphql-tools": "^4.0.8", - "parseurl": "^1.3.2", - "subscriptions-transport-ws": "^0.9.19", - "type-is": "^1.6.16" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" }, - "node_modules/apollo-tracing": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.15.0.tgz", - "integrity": "sha512-UP0fztFvaZPHDhIB/J+qGuy6hWO4If069MGC98qVs0I8FICIGu4/8ykpX3X3K6RtaQ56EDAWKykCxFv4ScxMeA==", - "deprecated": "The `apollo-tracing` package is no longer part of Apollo Server 3. See https://www.apollographql.com/docs/apollo-server/migration/#tracing for details", - "dependencies": { - "apollo-server-env": "^3.1.0", - "apollo-server-plugin-base": "^0.13.0" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" }, - "node_modules/apollo-utilities": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz", - "integrity": "sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==", - "dependencies": { - "@wry/equality": "^0.1.2", - "fast-json-stable-stringify": "^2.0.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" }, - "node_modules/apollo-utilities/node_modules/@wry/equality": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz", - "integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==", - "dependencies": { - "tslib": "^1.9.3" - } + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" }, - "node_modules/apollo-utilities/node_modules/ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "dependencies": { - "tslib": "^1.9.3" + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" } }, - "node_modules/apollo-utilities/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/append-buffer": { + "node_modules/@protobufjs/float": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", - "dependencies": { - "buffer-equal": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "engines": { - "node": ">=0.10.0" + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dependencies": { + "@hapi/hoek": "^9.0.0" } }, - "node_modules/arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "node_modules/@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "peer": true, "dependencies": { - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "type-detect": "4.0.8" } }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "engines": { - "node": ">=0.10.0" + "node_modules/@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "peer": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" } }, - "node_modules/arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "node_modules/@swc/helpers": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.3.tgz", + "integrity": "sha512-6JrF+fdUK2zbGpJIlN7G3v966PQjyx/dPt1T9km2wj+EUBqgrxCk3uX4Kct16MIm9gGxfKRcfax2hVf5jvlTzA==", + "peer": true, "dependencies": { - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "tslib": "^2.4.0" } }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "engines": { - "node": ">=0.10.0" + "node_modules/@types/accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", + "dependencies": { + "@types/node": "*" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + "node_modules/@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "peer": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } }, - "node_modules/array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "peer": true, "dependencies": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@babel/types": "^7.0.0" } }, - "node_modules/array-initial/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "engines": { - "node": ">=0.10.0" + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "peer": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "node_modules/@types/babel__traverse": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.0.tgz", + "integrity": "sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw==", + "peer": true, "dependencies": { - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@babel/types": "^7.3.0" } }, - "node_modules/array-last/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "engines": { - "node": ">=0.10.0" + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "engines": { - "node": ">=0.10.0" + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dependencies": { + "@types/node": "*" } }, - "node_modules/array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "node_modules/@types/content-disposition": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", + "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==" + }, + "node_modules/@types/cookie": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz", + "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==" + }, + "node_modules/@types/cookies": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", + "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", "dependencies": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" + "@types/connect": "*", + "@types/express": "*", + "@types/keygrip": "*", + "@types/node": "*" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "engines": { - "node": ">=8" - } + "node_modules/@types/cors": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==" }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "engines": { - "node": ">=0.10.0" - } + "node_modules/@types/expect": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==" }, - "node_modules/array.prototype.reduce": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", - "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" } }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "node_modules/@types/express-serve-static-core": { + "version": "4.17.30", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", + "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", "dependencies": { - "safer-buffer": "~2.1.0" + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" } }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "engines": { - "node": ">=0.8" + "node_modules/@types/formidable": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.5.tgz", + "integrity": "sha512-zu3mQJa4hDNubEMViSj937602XdDGzK7Q5pJ5QmLUbNxclbo9tZGt5jtwM352ssZ+pqo5V4H14TBvT/ALqQQcA==", + "dependencies": { + "@types/node": "*" } }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "engines": { - "node": "*" + "node_modules/@types/fs-capacitor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz", + "integrity": "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==", + "dependencies": { + "@types/node": "*" } }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "engines": { - "node": ">=0.10.0" + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" } }, - "node_modules/async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" - }, - "node_modules/async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "node_modules/@types/glob-stream": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-6.1.1.tgz", + "integrity": "sha512-AGOUTsTdbPkRS0qDeyeS+6KypmfVpbT5j23SN8UPG63qjKXNKjXn6V9wZUr8Fin0m9l8oGYaPK8b2WUMF8xI1A==", "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" + "@types/glob": "*", + "@types/node": "*" } }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "peer": true, + "dependencies": { + "@types/node": "*" + } }, - "node_modules/async-retry": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "node_modules/@types/gulp": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.9.tgz", + "integrity": "sha512-zzT+wfQ8uwoXjDhRK9Zkmmk09/fbLLmN/yDHFizJiEKIve85qutOnXcP/TM2sKPBTU+Jc16vfPbOMkORMUBN7Q==", "dependencies": { - "retry": "0.13.1" + "@types/undertaker": "*", + "@types/vinyl-fs": "*", + "chokidar": "^3.3.1" } }, - "node_modules/async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", "dependencies": { - "async-done": "^1.2.2" - }, - "engines": { - "node": ">= 0.10" + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "node_modules/@types/http-assert": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", + "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==" }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } + "node_modules/@types/http-errors": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", + "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==" }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "engines": { - "node": "*" + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dependencies": { + "@types/node": "*" } }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" }, - "node_modules/axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dependencies": { - "follow-redirects": "^1.14.4" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "@types/istanbul-lib-report": "*" } }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==" - }, - "node_modules/babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "node_modules/@types/jest": { + "version": "26.0.24", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", + "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" } }, - "node_modules/babel-core/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/@types/keygrip": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", + "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" + }, + "node_modules/@types/koa": { + "version": "2.13.5", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz", + "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==", "dependencies": { - "ms": "2.0.0" + "@types/accepts": "*", + "@types/content-disposition": "*", + "@types/cookies": "*", + "@types/http-assert": "*", + "@types/http-errors": "*", + "@types/keygrip": "*", + "@types/koa-compose": "*", + "@types/node": "*" } }, - "node_modules/babel-core/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "node_modules/@types/koa-compose": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", + "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", "dependencies": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" + "@types/koa": "*" } }, - "node_modules/babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==", + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" + }, + "node_modules/@types/node": { + "version": "14.18.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.18.tgz", + "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig==" + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "peer": true + }, + "node_modules/@types/prettier": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz", + "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==", + "peer": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "node_modules/@types/react": { + "version": "17.0.48", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.48.tgz", + "integrity": "sha512-zJ6IYlJ8cYYxiJfUaZOQee4lh99mFihBoqkOSEGV+dFi9leROW6+PgstzQ+w3gWTnUfskALtQPGHK6dYmPj+2A==", "dependencies": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" } }, - "node_modules/babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "node_modules/@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "dependencies": { - "babel-runtime": "^6.22.0" + "@types/mime": "*", + "@types/node": "*" } }, - "node_modules/babel-plugin-transform-runtime": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.15.0.tgz", - "integrity": "sha1-PXW02Umtga8VdXAnOEb7Wa6w1Xw=", + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "peer": true + }, + "node_modules/@types/undertaker": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.7.tgz", + "integrity": "sha512-xuY7nBwo1zSRoY2aitp/HArHfTulFAKql2Fr4b4mWbBBP+F50n7Jm6nwISTTMaDk2xvl92O10TTejVF0Q9mInw==", "dependencies": { - "babel-runtime": "^6.9.0" + "@types/node": "*", + "@types/undertaker-registry": "*", + "async-done": "~1.3.2" } }, - "node_modules/babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==", + "node_modules/@types/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==" + }, + "node_modules/@types/vinyl": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", + "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", "dependencies": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" + "@types/expect": "^1.20.4", + "@types/node": "*" } }, - "node_modules/babel-register/node_modules/source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "node_modules/@types/vinyl-fs": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/@types/vinyl-fs/-/vinyl-fs-2.4.12.tgz", + "integrity": "sha512-LgBpYIWuuGsihnlF+OOWWz4ovwCYlT03gd3DuLwex50cYZLmX3yrW+sFF9ndtmh7zcZpS6Ri47PrIu+fV+sbXw==", "dependencies": { - "source-map": "^0.5.6" + "@types/glob-stream": "*", + "@types/node": "*", + "@types/vinyl": "*" } }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "@types/node": "*" } }, - "node_modules/babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", + "node_modules/@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", "dependencies": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" + "@types/yargs-parser": "*" } }, - "node_modules/babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "optional": true, "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "@types/node": "*" } }, - "node_modules/babel-traverse/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/babel-traverse/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "node_modules/@types/zen-observable": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz", + "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==" }, - "node_modules/babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", + "node_modules/@wry/context": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.6.1.tgz", + "integrity": "sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw==", "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "bin": { - "babylon": "bin/babylon.js" + "node_modules/@wry/equality": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.3.tgz", + "integrity": "sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "node_modules/@wry/trie": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.2.tgz", + "integrity": "sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ==", "dependencies": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" + "tslib": "^2.3.0" }, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "peer": 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==" + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "node_modules/accept": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/accept/-/accept-3.1.3.tgz", + "integrity": "sha512-OgOEAidVEOKPup+Gv2+2wdH2AgVKI9LxsJ4hicdJ6cY0faUuZdZoi56kkXWlHp9qicN1nWQLmW5ZRGk+SBS5xg==", + "deprecated": "This module has moved and is now available at @hapi/accept. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" + "boom": "7.x.x", + "hoek": "6.x.x" } }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dependencies": { - "is-descriptor": "^1.0.0" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "peer": true, "dependencies": { - "tweetnacl": "^0.14.3" + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" } }, - "node_modules/benchmark": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", - "integrity": "sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==", - "dependencies": { - "lodash": "^4.17.4", - "platform": "^1.3.3" + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "peer": true, "engines": { - "node": ">=8" + "node": ">=0.4.0" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dependencies": { - "file-uri-to-path": "1.0.0" + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/bl/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "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/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "ansi-wrap": "^0.1.0" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "peer": true, "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", "dependencies": { - "ms": "2.0.0" + "ansi-wrap": "0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/body-parser/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/body-parser/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, + "node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "node_modules/ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/body-parser/node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">= 0.8" + "node": ">= 8" } }, - "node_modules/body-parser/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" + "node_modules/apollo-boost": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/apollo-boost/-/apollo-boost-0.4.9.tgz", + "integrity": "sha512-05y5BKcDaa8w47f8d81UVwKqrAjn8uKLv6QM9fNdldoNzQ+rnOHgFlnrySUZRz9QIT3vPftQkEz2UEASp1Mi5g==", + "dependencies": { + "apollo-cache": "^1.3.5", + "apollo-cache-inmemory": "^1.6.6", + "apollo-client": "^2.6.10", + "apollo-link": "^1.0.6", + "apollo-link-error": "^1.0.3", + "apollo-link-http": "^1.3.1", + "graphql-tag": "^2.4.2", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/boom": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-7.3.0.tgz", - "integrity": "sha512-Swpoyi2t5+GhOEGw8rEsKvTxFLIDiiKoUc2gsoV6Lyr43LHBIzch3k2MvYUs8RTROrIkVJ3Al0TkaOGjnb+B6A==", - "deprecated": "This module has moved and is now available at @hapi/boom. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", + "node_modules/apollo-boost/node_modules/ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", "dependencies": { - "hoek": "6.x.x" + "tslib": "^1.9.3" } }, - "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==", + "node_modules/apollo-boost/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-cache": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.5.tgz", + "integrity": "sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA==", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "apollo-utilities": "^1.3.4", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/apollo-cache-control": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.14.0.tgz", + "integrity": "sha512-qN4BCq90egQrgNnTRMUHikLZZAprf3gbm8rC5Vwmc6ZdLolQ7bFsa769Hqi6Tq/lS31KLsXBLTOsRbfPHph12w==", + "deprecated": "The functionality provided by the `apollo-cache-control` package is built in to `apollo-server-core` starting with Apollo Server 3. See https://www.apollographql.com/docs/apollo-server/migration/#cachecontrol for details.", "dependencies": { - "fill-range": "^7.0.1" + "apollo-server-env": "^3.1.0", + "apollo-server-plugin-base": "^0.13.0" }, "engines": { - "node": ">=8" + "node": ">=6.0" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "node_modules/apollo-cache-inmemory": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6.tgz", + "integrity": "sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A==", "dependencies": { - "fast-json-stable-stringify": "2.x" + "apollo-cache": "^1.3.5", + "apollo-utilities": "^1.3.4", + "optimism": "^0.10.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0" }, - "engines": { - "node": ">= 6" + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/apollo-cache-inmemory/node_modules/@wry/context": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.4.4.tgz", + "integrity": "sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "@types/node": ">=6", + "tslib": "^1.9.3" } }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "engines": { - "node": "*" + "node_modules/apollo-cache-inmemory/node_modules/optimism": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.10.3.tgz", + "integrity": "sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw==", + "dependencies": { + "@wry/context": "^0.4.0" } }, - "node_modules/buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", - "engines": { - "node": ">=0.4.0" + "node_modules/apollo-cache-inmemory/node_modules/ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "dependencies": { + "tslib": "^1.9.3" } }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + "node_modules/apollo-cache-inmemory/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "node_modules/apollo-cache/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, - "node_modules/busboy": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", - "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", + "node_modules/apollo-client": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.6.10.tgz", + "integrity": "sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA==", "dependencies": { - "dicer": "0.3.0" + "@types/zen-observable": "^0.8.0", + "apollo-cache": "1.3.5", + "apollo-link": "^1.0.0", + "apollo-utilities": "1.3.4", + "symbol-observable": "^1.0.2", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0", + "zen-observable": "^0.8.0" }, - "engines": { - "node": ">=4.5.0" + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "node_modules/apollo-client/node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "node_modules/apollo-client/node_modules/ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "tslib": "^1.9.3" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/apollo-client/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-datasource": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.9.0.tgz", + "integrity": "sha512-y8H99NExU1Sk4TvcaUxTdzfq2SZo6uSj5dyh75XSQvbpH6gdAXIW9MaBcvlNC7n0cVPsidHmOcHOWxJ/pTXGjA==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "apollo-server-caching": "^0.7.0", + "apollo-server-env": "^3.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "engines": { "node": ">=6" } }, - "node_modules/card-validator": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/card-validator/-/card-validator-8.1.1.tgz", - "integrity": "sha512-cN4FsKwoTfTFnqPwVc7TQLSsH/QMDB3n/gWm0XelcApz4sKipnOQ6k33sa3bWsNnnIpgs7eXOF+mUV2UQAX2Sw==", - "dependencies": { - "credit-card-type": "^9.1.0" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - }, - "node_modules/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", + "node_modules/apollo-graphql": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.9.7.tgz", + "integrity": "sha512-bezL9ItUWUGHTm1bI/XzIgiiZbhXpsC7uxk4UxFPmcVJwJsDc3ayZ99oXxAaK+3Rbg/IoqrHckA6CwmkCsbaSA==", "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "core-js-pure": "^3.10.2", + "lodash.sortby": "^4.7.0", + "sha.js": "^2.4.11" }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "peerDependencies": { + "graphql": "^14.2.1 || ^15.0.0" } }, - "node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/apollo-link": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz", + "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "apollo-utilities": "^1.3.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.9.3", + "zen-observable-ts": "^0.8.21" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "graphql": "^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "engines": { - "node": ">=0.8.0" + "node_modules/apollo-link-error": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.13.tgz", + "integrity": "sha512-jAZOOahJU6bwSqb2ZyskEK1XdgUY9nkmeclCrW7Gddh1uasHVqmoYc4CKdb0/H0Y1J9lvaXKle2Wsw/Zx1AyUg==", + "dependencies": { + "apollo-link": "^1.2.14", + "apollo-link-http-common": "^0.2.16", + "tslib": "^1.9.3" } }, - "node_modules/chance": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.8.tgz", - "integrity": "sha512-v7fi5Hj2VbR6dJEGRWLmJBA83LJMS47pkAbmROFxHWd9qmE1esHRZW8Clf1Fhzr3rjxnNZVCjOEv/ivFxeIMtg==" - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "engines": { - "node": "*" - } + "node_modules/apollo-link-error/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, - "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "node_modules/apollo-link-http": { + "version": "1.5.17", + "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.17.tgz", + "integrity": "sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg==", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" + "apollo-link": "^1.2.14", + "apollo-link-http-common": "^0.2.16", + "tslib": "^1.9.3" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "node_modules/apollo-link-http-common": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz", + "integrity": "sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg==", "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "apollo-link": "^1.2.14", + "ts-invariant": "^0.4.0", + "tslib": "^1.9.3" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/apollo-link-http-common/node_modules/ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "tslib": "^1.9.3" } }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "node_modules/apollo-link-http-common/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-link-http/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-link-ws": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/apollo-link-ws/-/apollo-link-ws-1.0.20.tgz", + "integrity": "sha512-mjSFPlQxmoLArpHBeUb2Xj+2HDYeTaJqFGOqQ+I8NVJxgL9lJe84PDWcPah/yMLv3rB7QgBDSuZ0xoRFBPlySw==", "dependencies": { - "kind-of": "^3.0.2" + "apollo-link": "^1.2.14", + "tslib": "^1.9.3" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "subscriptions-transport-ws": "^0.9.0" } }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/apollo-link-ws/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-link/node_modules/ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "tslib": "^1.9.3" } }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" + "node_modules/apollo-link/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-link/node_modules/zen-observable-ts": { + "version": "0.8.21", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz", + "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==", + "dependencies": { + "tslib": "^1.9.3", + "zen-observable": "^0.8.0" } }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/apollo-reporting-protobuf": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-0.8.0.tgz", + "integrity": "sha512-B3XmnkH6Y458iV6OsA7AhfwvTgeZnFq9nPVjbxmLKnvfkEl8hYADtz724uPa0WeBiD7DSFcnLtqg9yGmCkBohg==", "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "@apollo/protobufjs": "1.2.2" } }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/apollo-server": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-2.25.4.tgz", + "integrity": "sha512-CNvaSd0wkacfsvprSI843qTLKfBQpLik9e0y77On+OhdObkmq1ij8qkpF8awNg0iJPG5+RYBGNC7c/PA6vO53A==", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "apollo-server-core": "^2.25.4", + "apollo-server-express": "^2.25.4", + "express": "^4.0.0", + "graphql-subscriptions": "^1.0.0", + "graphql-tools": "^4.0.8", + "stoppable": "^1.1.0" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/apollo-server-caching": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.7.0.tgz", + "integrity": "sha512-MsVCuf/2FxuTFVhGLK13B+TZH9tBd2qkyoXKKILIiGcZ5CDUEBO14vIV63aNkMkS1xxvK2U4wBcuuNj/VH2Mkw==", + "dependencies": { + "lru-cache": "^6.0.0" + }, "engines": { "node": ">=6" } }, - "node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "node_modules/apollo-server-core": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.10.1.tgz", + "integrity": "sha512-UFFziv6h15QbKRZOA6wLyr1Sle9kns3JuQ5DEB7OYe5AIoOJNjZkWXX/tmLFUrSmlnDDryi6Sf5pDzpYmUC/UA==", "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "@apollo/utils.keyvaluecache": "^1.0.1", + "@apollo/utils.logger": "^1.0.0", + "@apollo/utils.usagereporting": "^1.0.0", + "@apollographql/apollo-tools": "^0.5.3", + "@apollographql/graphql-playground-html": "1.6.29", + "@graphql-tools/mock": "^8.1.2", + "@graphql-tools/schema": "^8.0.0", + "@josephg/resolvable": "^1.0.0", + "apollo-datasource": "^3.3.2", + "apollo-reporting-protobuf": "^3.3.2", + "apollo-server-env": "^4.2.1", + "apollo-server-errors": "^3.3.1", + "apollo-server-plugin-base": "^3.6.2", + "apollo-server-types": "^3.6.2", + "async-retry": "^1.2.1", + "fast-json-stable-stringify": "^2.1.0", + "graphql-tag": "^2.11.0", + "loglevel": "^1.6.8", + "lru-cache": "^6.0.0", + "sha.js": "^2.4.11", + "uuid": "^8.0.0", + "whatwg-mimetype": "^3.0.0" + }, "engines": { - "node": ">=6" + "node": ">=12.0" + }, + "peerDependencies": { + "graphql": "^15.3.0 || ^16.0.0" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/apollo-server-core/node_modules/@apollo/protobufjs": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", + "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", + "hasInstallScript": true, "dependencies": { - "ansi-regex": "^4.1.0" + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" }, - "engines": { - "node": ">=6" + "bin": { + "apollo-pbjs": "bin/pbjs", + "apollo-pbts": "bin/pbts" } }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "engines": { - "node": ">=0.8" + "node_modules/apollo-server-core/node_modules/@apollographql/graphql-playground-html": { + "version": "1.6.29", + "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", + "integrity": "sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==", + "dependencies": { + "xss": "^1.0.8" } }, - "node_modules/clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "node_modules/apollo-server-core/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "node_modules/apollo-server-core/node_modules/apollo-datasource": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", + "integrity": "sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==", + "dependencies": { + "@apollo/utils.keyvaluecache": "^1.0.1", + "apollo-server-env": "^4.2.1" + }, "engines": { - "node": ">= 0.10" + "node": ">=12.0" } }, - "node_modules/clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" - }, - "node_modules/cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "node_modules/apollo-server-core/node_modules/apollo-reporting-protobuf": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", + "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", "dependencies": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" + "@apollo/protobufjs": "1.2.4" } }, - "node_modules/co-body": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz", - "integrity": "sha512-sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ==", + "node_modules/apollo-server-core/node_modules/apollo-server-env": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", + "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", "dependencies": { - "inflation": "^2.0.0", - "qs": "^6.4.0", - "raw-body": "^2.2.0", - "type-is": "^1.6.14" + "node-fetch": "^2.6.7" + }, + "engines": { + "node": ">=12.0" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "node_modules/apollo-server-core/node_modules/apollo-server-errors": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz", + "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==", "engines": { - "node": ">=0.10.0" + "node": ">=12.0" + }, + "peerDependencies": { + "graphql": "^15.3.0 || ^16.0.0" } }, - "node_modules/collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "node_modules/apollo-server-core/node_modules/apollo-server-plugin-base": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.6.2.tgz", + "integrity": "sha512-erWXjLOO1u7fxQkbxJ2cwSO7p0tYzNied91I1SJ9tikXZ/2eZUyDyvrpI+4g70kOdEi+AmJ5Fo8ahEXKJ75zdg==", "dependencies": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "apollo-server-types": "^3.6.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=12.0" + }, + "peerDependencies": { + "graphql": "^15.3.0 || ^16.0.0" } }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "node_modules/apollo-server-core/node_modules/apollo-server-types": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.2.tgz", + "integrity": "sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==", "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "@apollo/utils.keyvaluecache": "^1.0.1", + "@apollo/utils.logger": "^1.0.0", + "apollo-reporting-protobuf": "^3.3.2", + "apollo-server-env": "^4.2.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=12.0" + }, + "peerDependencies": { + "graphql": "^15.3.0 || ^16.0.0" } }, - "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==", + "node_modules/apollo-server-env": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-3.1.0.tgz", + "integrity": "sha512-iGdZgEOAuVop3vb0F2J3+kaBVi4caMoxefHosxmgzAbbSpvWehB8Y1QiSyyMeouYC38XNVk5wnZl+jdGSsWsIQ==", "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "bin": { - "color-support": "bin.js" + "node-fetch": "^2.6.1", + "util.promisify": "^1.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "node_modules/apollo-server-errors": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.5.0.tgz", + "integrity": "sha512-lO5oTjgiC3vlVg2RKr3RiXIIQ5pGXBFxYGGUkKDhTud3jMIhs+gel8L8zsEjKaKxkjHhCQAA/bcEfYiKkGQIvA==", "engines": { - "node": ">=0.1.90" + "node": ">=6" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/apollo-server-express": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.10.1.tgz", + "integrity": "sha512-r0esst3YGNdlphYiOrflfBqJ15VAZAhYhWSFo2kPF4knsIGK5HUkeqwjMr+fFDBn4DEfYzC+I1+LnsF/hFN8VQ==", "dependencies": { - "delayed-stream": "~1.0.0" + "@types/accepts": "^1.3.5", + "@types/body-parser": "1.19.2", + "@types/cors": "2.8.12", + "@types/express": "4.17.13", + "@types/express-serve-static-core": "4.17.30", + "accepts": "^1.3.5", + "apollo-server-core": "^3.10.1", + "apollo-server-types": "^3.6.2", + "body-parser": "^1.19.0", + "cors": "^2.8.5", + "parseurl": "^1.3.3" }, "engines": { - "node": ">= 0.8" + "node": ">=12.0" + }, + "peerDependencies": { + "express": "^4.17.1", + "graphql": "^15.3.0 || ^16.0.0" } }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "node_modules/apollo-server-express/node_modules/@apollo/protobufjs": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", + "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + }, + "bin": { + "apollo-pbjs": "bin/pbjs", + "apollo-pbts": "bin/pbts" + } }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + "node_modules/apollo-server-express/node_modules/@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" }, - "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=" + "node_modules/apollo-server-express/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], + "node_modules/apollo-server-express/node_modules/apollo-reporting-protobuf": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", + "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "@apollo/protobufjs": "1.2.4" } }, - "node_modules/concurrently": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz", - "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==", + "node_modules/apollo-server-express/node_modules/apollo-server-env": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", + "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", "dependencies": { - "chalk": "^2.4.2", - "date-fns": "^2.0.1", - "lodash": "^4.17.15", - "read-pkg": "^4.0.1", - "rxjs": "^6.5.2", - "spawn-command": "^0.0.2-1", - "supports-color": "^6.1.0", - "tree-kill": "^1.2.2", - "yargs": "^13.3.0" - }, - "bin": { - "concurrently": "bin/concurrently.js" + "node-fetch": "^2.6.7" }, "engines": { - "node": ">=6.0.0" + "node": ">=12.0" } }, - "node_modules/concurrently/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==", + "node_modules/apollo-server-express/node_modules/apollo-server-types": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.2.tgz", + "integrity": "sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==", "dependencies": { - "color-convert": "^1.9.0" + "@apollo/utils.keyvaluecache": "^1.0.1", + "@apollo/utils.logger": "^1.0.0", + "apollo-reporting-protobuf": "^3.3.2", + "apollo-server-env": "^4.2.1" }, "engines": { - "node": ">=4" + "node": ">=12.0" + }, + "peerDependencies": { + "graphql": "^15.3.0 || ^16.0.0" } }, - "node_modules/concurrently/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==", + "node_modules/apollo-server-micro": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/apollo-server-micro/-/apollo-server-micro-2.25.4.tgz", + "integrity": "sha512-tx9VC9VdMMZLi9TFfl/pX4jr/qqhgu2To9KI5jlXzYxowROwOt/TwTx9ClT77YdJDoSIAvippYSaw+njuejN/A==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" + "@apollographql/graphql-playground-html": "1.6.27", + "accept": "^3.0.2", + "apollo-server-core": "^2.25.4", + "apollo-server-types": "^0.9.0", + "micro": "^9.3.2" } }, - "node_modules/concurrently/node_modules/chalk/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==", + "node_modules/apollo-server-micro/node_modules/apollo-server-core": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.25.4.tgz", + "integrity": "sha512-1u3BnFKbCt6F9SPM7ZoWmtHK6ubme56H8hV5Mjv3KbfSairU76SU79IhO05BEJE57S6N+ddb1rm3Uk93X6YeGw==", "dependencies": { - "has-flag": "^3.0.0" + "@apollographql/apollo-tools": "^0.5.0", + "@apollographql/graphql-playground-html": "1.6.27", + "@apollographql/graphql-upload-8-fork": "^8.1.3", + "@josephg/resolvable": "^1.0.0", + "@types/ws": "^7.0.0", + "apollo-cache-control": "^0.14.0", + "apollo-datasource": "^0.9.0", + "apollo-graphql": "^0.9.0", + "apollo-reporting-protobuf": "^0.8.0", + "apollo-server-caching": "^0.7.0", + "apollo-server-env": "^3.1.0", + "apollo-server-errors": "^2.5.0", + "apollo-server-plugin-base": "^0.13.0", + "apollo-server-types": "^0.9.0", + "apollo-tracing": "^0.15.0", + "async-retry": "^1.2.1", + "fast-json-stable-stringify": "^2.0.0", + "graphql-extensions": "^0.15.0", + "graphql-tag": "^2.11.0", + "graphql-tools": "^4.0.8", + "loglevel": "^1.6.7", + "lru-cache": "^6.0.0", + "sha.js": "^2.4.11", + "subscriptions-transport-ws": "^0.9.19", + "uuid": "^8.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/concurrently/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" + "node": ">=6" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "node_modules/apollo-server-plugin-base": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.13.0.tgz", + "integrity": "sha512-L3TMmq2YE6BU6I4Tmgygmd0W55L+6XfD9137k+cWEBFu50vRY4Re+d+fL5WuPkk5xSPKd/PIaqzidu5V/zz8Kg==", "dependencies": { - "has-flag": "^3.0.0" + "apollo-server-types": "^0.9.0" }, "engines": { "node": ">=6" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "node_modules/apollo-server-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-0.9.0.tgz", + "integrity": "sha512-qk9tg4Imwpk732JJHBkhW0jzfG0nFsLqK2DY6UhvJf7jLnRePYsPxWfPiNkxni27pLE2tiNlCwoDFSeWqpZyBg==", "dependencies": { - "safe-buffer": "5.2.1" + "apollo-reporting-protobuf": "^0.8.0", + "apollo-server-caching": "^0.7.0", + "apollo-server-env": "^3.1.0" }, "engines": { - "node": ">= 0.6" + "node": ">=6" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" + "node_modules/apollo-server/node_modules/@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" } }, - "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==", + "node_modules/apollo-server/node_modules/apollo-server-core": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.25.4.tgz", + "integrity": "sha512-1u3BnFKbCt6F9SPM7ZoWmtHK6ubme56H8hV5Mjv3KbfSairU76SU79IhO05BEJE57S6N+ddb1rm3Uk93X6YeGw==", "dependencies": { - "safe-buffer": "~5.1.1" + "@apollographql/apollo-tools": "^0.5.0", + "@apollographql/graphql-playground-html": "1.6.27", + "@apollographql/graphql-upload-8-fork": "^8.1.3", + "@josephg/resolvable": "^1.0.0", + "@types/ws": "^7.0.0", + "apollo-cache-control": "^0.14.0", + "apollo-datasource": "^0.9.0", + "apollo-graphql": "^0.9.0", + "apollo-reporting-protobuf": "^0.8.0", + "apollo-server-caching": "^0.7.0", + "apollo-server-env": "^3.1.0", + "apollo-server-errors": "^2.5.0", + "apollo-server-plugin-base": "^0.13.0", + "apollo-server-types": "^0.9.0", + "apollo-tracing": "^0.15.0", + "async-retry": "^1.2.1", + "fast-json-stable-stringify": "^2.0.0", + "graphql-extensions": "^0.15.0", + "graphql-tag": "^2.11.0", + "graphql-tools": "^4.0.8", + "loglevel": "^1.6.7", + "lru-cache": "^6.0.0", + "sha.js": "^2.4.11", + "subscriptions-transport-ws": "^0.9.19", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "node_modules/apollo-server/node_modules/apollo-server-express": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.25.4.tgz", + "integrity": "sha512-1Yd9DscLlCP5BhfAkNxg+aGcaTKnL36FyezdL7Iqc+KelON5PAyX8qpAChKL8Z3L2YHJzIk/Haf4dFJLKUjx9w==", + "dependencies": { + "@apollographql/graphql-playground-html": "1.6.27", + "@types/accepts": "^1.3.5", + "@types/body-parser": "1.19.0", + "@types/cors": "2.8.10", + "@types/express": "^4.17.12", + "@types/express-serve-static-core": "^4.17.21", + "accepts": "^1.3.5", + "apollo-server-core": "^2.25.4", + "apollo-server-types": "^0.9.0", + "body-parser": "^1.18.3", + "cors": "^2.8.5", + "express": "^4.17.1", + "graphql-subscriptions": "^1.0.0", + "graphql-tools": "^4.0.8", + "parseurl": "^1.3.2", + "subscriptions-transport-ws": "^0.9.19", + "type-is": "^1.6.16" + }, "engines": { - "node": ">= 0.6" + "node": ">=6" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "node_modules/apollo-tracing": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.15.0.tgz", + "integrity": "sha512-UP0fztFvaZPHDhIB/J+qGuy6hWO4If069MGC98qVs0I8FICIGu4/8ykpX3X3K6RtaQ56EDAWKykCxFv4ScxMeA==", + "deprecated": "The `apollo-tracing` package is no longer part of Apollo Server 3. See https://www.apollographql.com/docs/apollo-server/migration/#tracing for details", + "dependencies": { + "apollo-server-env": "^3.1.0", + "apollo-server-plugin-base": "^0.13.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4.0" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/copy-props": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", - "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "node_modules/apollo-utilities": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz", + "integrity": "sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==", "dependencies": { - "each-props": "^1.3.2", - "is-plain-object": "^5.0.0" + "@wry/equality": "^0.1.2", + "fast-json-stable-stringify": "^2.0.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true + "node_modules/apollo-utilities/node_modules/@wry/equality": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz", + "integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==", + "dependencies": { + "tslib": "^1.9.3" + } }, - "node_modules/core-js-pure": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.1.tgz", - "integrity": "sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "node_modules/apollo-utilities/node_modules/ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "dependencies": { + "tslib": "^1.9.3" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "node_modules/apollo-utilities/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "node_modules/append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", "dependencies": { - "object-assign": "^4", - "vary": "^1" + "buffer-equal": "^1.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" }, - "node_modules/credit-card-type": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/credit-card-type/-/credit-card-type-9.1.0.tgz", - "integrity": "sha512-CpNFuLxiPFxuZqhSKml3M+t0K/484pMAnfYWH14JoD7OZMnmC0Lmo+P7JX9SobqFpRoo7ifA18kOHdxJywYPEA==" + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "peer": true, "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" + "sprintf-js": "~1.0.2" } }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dependencies": { - "node-fetch": "2.6.7" + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "engines": { + "node": ">=0.10.0" } }, - "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==", + "node_modules/arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "make-iterator": "^1.0.0" }, "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, - "node_modules/crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" - }, - "node_modules/cssfilter": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", - "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" - }, - "node_modules/csstype": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", - "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" - }, - "node_modules/cycle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "node": ">=0.10.0" } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "node_modules/arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", "dependencies": { - "assert-plus": "^1.0.0" + "make-iterator": "^1.0.0" }, "engines": { - "node": ">=0.10" + "node": ">=0.10.0" } }, - "node_modules/date-fns": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz", - "integrity": "sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w==", + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" + "node": ">=0.10.0" } }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "node_modules/array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" + "array-slice": "^1.0.0", + "is-number": "^4.0.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "engines": { "node": ">=0.10.0" } }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "node_modules/array-initial/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", "engines": { - "node": ">=0.10" + "node": ">=0.10.0" } }, - "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "node_modules/array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", "dependencies": { - "type-detect": "^4.0.0" + "is-number": "^4.0.0" }, "engines": { - "node": ">=0.12" + "node": ">=0.10.0" } }, - "node_modules/default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "dependencies": { - "kind-of": "^5.0.2" - }, + "node_modules/array-last/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", "engines": { "node": ">=0.10.0" } }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dependencies": { - "execa": "^5.0.0" - }, + "node_modules/array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", "engines": { - "node": ">= 10" + "node": ">=0.10.0" } }, - "node_modules/default-gateway/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/default-gateway/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/default-gateway/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/default-gateway/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/array.prototype.reduce": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", + "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", "dependencies": { - "path-key": "^3.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", - "engines": { - "node": ">= 0.10" + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" } }, - "node_modules/default-shell": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/default-shell/-/default-shell-1.0.1.tgz", - "integrity": "sha512-/Os8tTMPSriNHCsVj3VLjMZblIl1sIg8EXz3qg7C5K+y9calfTA/qzlfPvCQ+LEgLWmtZ9wCnzE1w+S6TPPFyQ==", + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "engines": { - "node": ">=4" + "node": ">=0.8" } }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dependencies": { - "object-keys": "^1.0.12" - }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "engines": { - "node": ">= 0.4" + "node": "*" } }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "engines": { "node": ">=0.10.0" } }, - "node_modules/del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "node_modules/async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "node_modules/async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.10" } }, - "node_modules/del/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "dependencies": { + "retry": "0.13.1" } }, - "node_modules/delayed-stream": { + "node_modules/async-settle": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "dependencies": { + "async-done": "^1.2.2" + }, "engines": { - "node": ">=0.4.0" + "node": ">= 0.10" } }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, "engines": { - "node": ">= 0.6" + "node": ">= 4.5.0" } }, - "node_modules/deprecated-decorator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz", - "integrity": "sha512-MHidOOnCHGlZDKsI21+mbIIhf4Fff+hhCTB7gtVg4uoIqjcrTZc5v6M+GS2zVI0sV7PqK415rb8XaOSQsQkHOw==" - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": "*" } }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "engines": { - "node": ">=0.10.0" + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "node_modules/axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "dependencies": { + "follow-redirects": "^1.14.4" } }, - "node_modules/detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", + "node_modules/babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", "dependencies": { - "repeating": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" } }, - "node_modules/devtools-protocol": { - "version": "0.0.1019158", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", - "integrity": "sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==" + "node_modules/babel-code-frame/node_modules/js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==" }, - "node_modules/dicer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", - "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", + "node_modules/babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "dependencies": { - "streamsearch": "0.1.2" - }, - "engines": { - "node": ">=4.5.0" + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" } }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "engines": { - "node": ">=0.3.1" + "node_modules/babel-core/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "node_modules/babel-core/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dependencies": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + } + }, + "node_modules/babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==", + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "node_modules/babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "peer": true, + "dependencies": { + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, "engines": { "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/babel-jest/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==", + "peer": true, "dependencies": { - "path-type": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": 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/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "node_modules/babel-jest/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==", + "peer": true, "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", - "dependencies": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" + "node_modules/babel-jest/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==", + "peer": true + }, + "node_modules/babel-jest/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==", + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/each-props/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, + "node_modules/babel-jest/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "node_modules/babel-jest/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==", + "peer": true, "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "node_modules/babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", "dependencies": { - "safe-buffer": "^5.0.1" + "babel-runtime": "^6.22.0" } }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "peer": true, "dependencies": { - "once": "^1.4.0" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "peer": true, + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "node_modules/babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 10.14.2" } }, - "node_modules/es-abstract/node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/babel-plugin-transform-runtime": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.15.0.tgz", + "integrity": "sha1-PXW02Umtga8VdXAnOEb7Wa6w1Xw=", + "dependencies": { + "babel-runtime": "^6.9.0" } }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "peer": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "peer": true, "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">= 10.14.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "node_modules/babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==", "dependencies": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" } }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "node_modules/babel-register/node_modules/source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "source-map": "^0.5.6" } }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" } }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "node_modules/babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" + "node_modules/babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", + "dependencies": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" + "node_modules/babel-traverse/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" - }, - "node_modules/execa": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", - "integrity": "sha512-R66dW/hW3I8yV77Wg4xn6zMguRPUgt59VLm5e85NrOF05ZdPn7YOfPBSw0E9epJDvuzwVWEG+HmEaQ4muYuWKQ==", - "dependencies": { - "cross-spawn": "^4.0.0", - "get-stream": "^2.2.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=4" - } + "node_modules/babel-traverse/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", + "node_modules/babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", "dependencies": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" } }, - "node_modules/execa/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "node_modules/babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bin": { + "babylon": "bin/babylon.js" } }, - "node_modules/execa/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", "dependencies": { - "isexe": "^2.0.0" + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">= 0.10" } }, - "node_modules/execa/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + "node_modules/backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "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==" + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dependencies": { - "is-descriptor": "^0.1.0" + "is-descriptor": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "tweetnacl": "^0.14.3" } }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "node_modules/benchmark": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", + "integrity": "sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==", "dependencies": { - "kind-of": "^3.0.2" - }, + "lodash": "^4.17.4", + "platform": "^1.3.3" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "file-uri-to-path": "1.0.0" } }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "node_modules/body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", + "bytes": "3.1.2", "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", + "destroy": "1.2.0", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", + "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "raw-body": "2.5.1", "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/express/node_modules/debug": { + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", @@ -4336,7 +4589,7 @@ "ms": "2.0.0" } }, - "node_modules/express/node_modules/depd": { + "node_modules/body-parser/node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", @@ -4344,7 +4597,7 @@ "node": ">= 0.8" } }, - "node_modules/express/node_modules/http-errors": { + "node_modules/body-parser/node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", @@ -4359,31 +4612,26 @@ "node": ">= 0.8" } }, - "node_modules/express/node_modules/ms": { + "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/body-parser/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } }, - "node_modules/express/node_modules/statuses": { + "node_modules/body-parser/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", @@ -4391,351 +4639,395 @@ "node": ">= 0.8" } }, - "node_modules/ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "node_modules/boom": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-7.3.0.tgz", + "integrity": "sha512-Swpoyi2t5+GhOEGw8rEsKvTxFLIDiiKoUc2gsoV6Lyr43LHBIzch3k2MvYUs8RTROrIkVJ3Al0TkaOGjnb+B6A==", + "deprecated": "This module has moved and is now available at @hapi/boom. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", "dependencies": { - "type": "^2.5.0" + "hoek": "6.x.x" } }, - "node_modules/ext/node_modules/type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "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==", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/extglob/node_modules/define-property": { + "node_modules/browser-process-hrtime": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "peer": true + }, + "node_modules/browserslist": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "peer": true, "dependencies": { - "is-descriptor": "^1.0.0" + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dependencies": { - "is-extendable": "^0.1.0" + "fast-json-stable-stringify": "2.x" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "peer": true, + "dependencies": { + "node-int64": "^0.4.0" } }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" + "node": "*" } }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, + "node_modules/buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.4.0" } }, - "node_modules/extract-zip/node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/busboy": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", + "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "dicer": "0.3.0" + }, + "engines": { + "node": ">=4.5.0" } }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", + "node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", "engines": { - "node": "> 0.1.90" + "node": ">= 0.8" } }, - "node_modules/fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dependencies": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, - "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==" - }, - "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "peer": true, "engines": { - "node": ">=8" + "node": ">=6" } }, - "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==" + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } }, - "node_modules/fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=" + "node_modules/caniuse-lite": { + "version": "1.0.30001378", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001378.tgz", + "integrity": "sha512-JVQnfoO7FK7WvU4ZkBRbPjaot4+YqxogSDosHv0Hv5mWpUESmN+UubMU6L/hGz8QlQ2aY5U0vR6MOs6j/CXpNA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ], + "peer": true }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "node_modules/capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "peer": true, "dependencies": { - "reusify": "^1.0.4" + "rsvp": "^4.8.4" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "node_modules/card-validator": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/card-validator/-/card-validator-8.1.1.tgz", + "integrity": "sha512-cN4FsKwoTfTFnqPwVc7TQLSsH/QMDB3n/gWm0XelcApz4sKipnOQ6k33sa3bWsNnnIpgs7eXOF+mUV2UQAX2Sw==", "dependencies": { - "pend": "~1.2.0" + "credit-card-type": "^9.1.0" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/chai": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", "dependencies": { - "to-regex-range": "^5.0.1" + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" + "node_modules/chalk/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "engines": { + "node": ">=0.8.0" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "node_modules/chance": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.8.tgz", + "integrity": "sha512-v7fi5Hj2VbR6dJEGRWLmJBA83LJMS47pkAbmROFxHWd9qmE1esHRZW8Clf1Fhzr3rjxnNZVCjOEv/ivFxeIMtg==" }, - "node_modules/finalhandler/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "peer": true, "engines": { - "node": ">= 0.8" + "node": ">=10" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "node_modules/chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/findup-sync/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, - "node_modules/findup-sync/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "peer": true + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dependencies": { - "is-extendable": "^0.1.0" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/findup-sync/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "is-descriptor": "^0.1.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/findup-sync/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dependencies": { - "is-extendable": "^0.1.0" + "kind-of": "^3.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/findup-sync/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/findup-sync/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dependencies": { "kind-of": "^3.0.2" }, @@ -4743,7 +5035,7 @@ "node": ">=0.10.0" } }, - "node_modules/findup-sync/node_modules/is-number/node_modules/kind-of": { + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", @@ -4754,788 +5046,784 @@ "node": ">=0.10.0" } }, - "node_modules/findup-sync/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/findup-sync/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "engines": { - "node": ">= 0.10" + "node": ">=6" } }, - "node_modules/fined/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dependencies": { - "isobject": "^3.0.1" + "ansi-regex": "^4.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/fix-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fix-path/-/fix-path-3.0.0.tgz", - "integrity": "sha512-opGAl4+ip5jUikHR2C8Jo7czZ80pz8EK/0gMlAZu7xgDmBqIynlX8SMYg9KowYjAU6HT0nxsSJEWru0u+n+N2Q==", - "dependencies": { - "shell-path": "^2.1.0" - }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8" } }, - "node_modules/flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", "engines": { "node": ">= 0.10" } }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + }, + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" } }, - "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "peer": true, "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "node_modules/co-body": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz", + "integrity": "sha512-sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ==", "dependencies": { - "is-callable": "^1.1.3" + "inflation": "^2.0.0", + "qs": "^6.4.0", + "raw-body": "^2.2.0", + "type-is": "^1.6.14" } }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "engines": { "node": ">=0.10.0" } }, - "node_modules/for-own": { + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "peer": true + }, + "node_modules/collection-map": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", "dependencies": { - "for-in": "^1.0.1" + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" }, "engines": { - "node": ">= 0.12" - } - }, - "node_modules/formidable": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", - "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", - "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "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==", "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" + "color-name": "1.1.3" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" } }, - "node_modules/fs-capacitor": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-2.0.4.tgz", - "integrity": "sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA==", + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "engines": { - "node": ">=8.5" + "node": ">=0.1.90" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.8" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "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=" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "node_modules/concurrently": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz", + "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "chalk": "^2.4.2", + "date-fns": "^2.0.1", + "lodash": "^4.17.15", + "read-pkg": "^4.0.1", + "rxjs": "^6.5.2", + "spawn-command": "^0.0.2-1", + "supports-color": "^6.1.0", + "tree-kill": "^1.2.2", + "yargs": "^13.3.0" }, - "engines": { - "node": ">= 0.4" + "bin": { + "concurrently": "bin/concurrently.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/concurrently/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==", + "dependencies": { + "color-convert": "^1.9.0" + }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=4" } }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "node_modules/concurrently/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==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, "engines": { - "node": "*" + "node": ">=4" } }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "node_modules/concurrently/node_modules/chalk/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==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-flag": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "node_modules/concurrently/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", + "node_modules/concurrently/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dependencies": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "safe-buffer": "5.2.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.6" } }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "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==", "dependencies": { - "assert-plus": "^1.0.0" + "safe-buffer": "~5.1.1" } }, - "node_modules/gists": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/gists/-/gists-2.0.0.tgz", - "integrity": "sha512-EVSWDpq2/H9ITsXsjdPo9+i2MI9U4E6DirXwR7/t6Mqgnynlh9ta6RMyezIINVNhkXZTCttmiSISd7JNkI2rQw==", - "dependencies": { - "github-base": "^1.0.0" - }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/github-base": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/github-base/-/github-base-1.0.0.tgz", - "integrity": "sha512-5A9OOCQWK80v+bjVRzdK0M/5UtERN9vx9TkJMlkiJA24wu/+lrQLsq5MPQIrSONrSWwt83eAPtBcuQOc2FyK8A==", - "dependencies": { - "get-value": "^3.0.1", - "needle": "^2.2.2", - "paged-request": "^1.0.2", - "parse-link-header": "^1.0.1", - "qs": "^6.5.1", - "use": "^3.1.0" - }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/github-base/node_modules/get-value": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-3.0.1.tgz", - "integrity": "sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==", + "node_modules/copy-props": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", + "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=6.0" + "each-props": "^1.3.2", + "is-plain-object": "^5.0.0" } }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true + }, + "node_modules/core-js-pure": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.1.tgz", + "integrity": "sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg==", + "hasInstallScript": true, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dependencies": { - "is-glob": "^4.0.1" + "object-assign": "^4", + "vary": "^1" }, "engines": { - "node": ">= 6" + "node": ">= 0.10" } }, - "node_modules/glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, + "node_modules/credit-card-type": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/credit-card-type/-/credit-card-type-9.1.0.tgz", + "integrity": "sha512-CpNFuLxiPFxuZqhSKml3M+t0K/484pMAnfYWH14JoD7OZMnmC0Lmo+P7JX9SobqFpRoo7ifA18kOHdxJywYPEA==" + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dependencies": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" }, "engines": { - "node": ">= 0.10" + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/glob-stream/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "node-fetch": "2.6.7" } }, - "node_modules/glob-stream/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "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==", "dependencies": { - "is-extglob": "^2.1.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "node_modules/cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "peer": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "peer": true, "dependencies": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" + "cssom": "~0.3.6" }, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/glob-watcher/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "peer": true }, - "node_modules/glob-watcher/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, + "node_modules/csstype": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", + "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" + }, + "node_modules/cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", "engines": { - "node": ">=0.10.0" + "node": ">=0.4.0" } }, - "node_modules/glob-watcher/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "engines": { - "node": ">=0.10.0" + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" } }, - "node_modules/glob-watcher/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "assert-plus": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.10" } }, - "node_modules/glob-watcher/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "peer": true, "dependencies": { - "is-extendable": "^0.1.0" + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/glob-watcher/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "node_modules/data-urls/node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "peer": true, "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "punycode": "^2.1.1" }, - "optionalDependencies": { - "fsevents": "^1.2.7" + "engines": { + "node": ">=8" } }, - "node_modules/glob-watcher/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=10.4" } }, - "node_modules/glob-watcher/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/data-urls/node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "peer": true + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "peer": true, "dependencies": { - "is-extendable": "^0.1.0" + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/glob-watcher/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, + "node_modules/date-fns": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz", + "integrity": "sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w==", "engines": { - "node": ">= 4.0" + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" } }, - "node_modules/glob-watcher/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "engines": { + "node": "*" } }, - "node_modules/glob-watcher/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dependencies": { - "is-extglob": "^2.1.0" + "ms": "2.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/glob-watcher/node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dependencies": { - "binary-extensions": "^1.0.0" - }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "engines": { "node": ">=0.10.0" } }, - "node_modules/glob-watcher/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "node_modules/decimal.js": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.0.tgz", + "integrity": "sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg==", + "peer": true + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "engines": { - "node": ">=0.10.0" + "node": ">=0.10" } }, - "node_modules/glob-watcher/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "node_modules/deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dependencies": { - "kind-of": "^3.0.2" + "type-detect": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.12" } }, - "node_modules/glob-watcher/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, + "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==", + "peer": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "peer": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/glob-watcher/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "kind-of": "^5.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/glob-watcher/node_modules/micromatch/node_modules/kind-of": { + "node_modules/default-gateway": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dependencies": { + "execa": "^5.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/glob-watcher/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "node_modules/default-gateway/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=0.10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/glob-watcher/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, + "node_modules/default-gateway/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, + "node_modules/default-gateway/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "path-key": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/default-shell": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/default-shell/-/default-shell-1.0.1.tgz", + "integrity": "sha512-/Os8tTMPSriNHCsVj3VLjMZblIl1sIg8EXz3qg7C5K+y9calfTA/qzlfPvCQ+LEgLWmtZ9wCnzE1w+S6TPPFyQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dependencies": { - "isexe": "^2.0.0" + "object-keys": "^1.0.12" }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">= 0.4" } }, - "node_modules/globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "node_modules/del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", "slash": "^3.0.0" }, "engines": { @@ -5545,7 +5833,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby/node_modules/slash": { + "node_modules/del/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", @@ -5553,357 +5841,482 @@ "node": ">=8" } }, - "node_modules/glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dependencies": { - "sparkles": "^1.0.0" - }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "engines": { - "node": ">= 0.10" + "node": ">=0.4.0" } }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/graphql": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", - "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", + "node_modules/deprecated-decorator": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz", + "integrity": "sha512-MHidOOnCHGlZDKsI21+mbIIhf4Fff+hhCTB7gtVg4uoIqjcrTZc5v6M+GS2zVI0sV7PqK415rb8XaOSQsQkHOw==" + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "engines": { - "node": ">= 10.x" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/graphql-extensions": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.15.0.tgz", - "integrity": "sha512-bVddVO8YFJPwuACn+3pgmrEg6I8iBuYLuwvxiE+lcQQ7POotVZxm2rgGw0PvVYmWWf3DT7nTVDZ5ROh/ALp8mA==", - "deprecated": "The `graphql-extensions` API has been removed from Apollo Server 3. Use the plugin API instead: https://www.apollographql.com/docs/apollo-server/integrations/plugins/", + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", "dependencies": { - "@apollographql/apollo-tools": "^0.5.0", - "apollo-server-env": "^3.1.0", - "apollo-server-types": "^0.9.0" + "repeating": "^2.0.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + "node": ">=0.10.0" } }, - "node_modules/graphql-playground-html": { - "version": "1.6.30", - "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.6.30.tgz", - "integrity": "sha512-tpCujhsJMva4aqE8ULnF7/l3xw4sNRZcSHu+R00VV+W0mfp+Q20Plvcrp+5UXD+2yS6oyCXncA+zoQJQqhGCEw==", - "dependencies": { - "xss": "^1.0.6" + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/graphql-playground-middleware-express": { - "version": "1.7.23", - "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.23.tgz", - "integrity": "sha512-M/zbTyC1rkgiQjFSgmzAv6umMHOphYLNWZp6Ye5QrD77WfGOOoSqDsVmGUczc2pDkEPEzzGB/bvBO5rdzaTRgw==", + "node_modules/devtools-protocol": { + "version": "0.0.1019158", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", + "integrity": "sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==" + }, + "node_modules/dicer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", + "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", "dependencies": { - "graphql-playground-html": "^1.6.30" + "streamsearch": "0.1.2" }, - "peerDependencies": { - "express": "^4.16.2" + "engines": { + "node": ">=4.5.0" } }, - "node_modules/graphql-subscriptions": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-1.2.1.tgz", - "integrity": "sha512-95yD/tKi24q8xYa7Q9rhQN16AYj5wPbrb8tmHGM3WRc9EBmWrG/0kkMl+tQG8wcEuE9ibR4zyOM31p5Sdr2v4g==", - "dependencies": { - "iterall": "^1.3.0" - }, - "peerDependencies": { - "graphql": "^0.10.5 || ^0.11.3 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "engines": { + "node": ">=0.3.1" } }, - "node_modules/graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "node_modules/diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dependencies": { - "tslib": "^2.1.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "node": ">=8" } }, - "node_modules/graphql-tools": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.8.tgz", - "integrity": "sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg==", - "deprecated": "This package has been deprecated and now it only exports makeExecutableSchema.\\nAnd it will no longer receive updates.\\nWe recommend you to migrate to scoped packages such as @graphql-tools/schema, @graphql-tools/utils and etc.\\nCheck out https://www.graphql-tools.com to learn what package you should use instead", + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "peer": true, "dependencies": { - "apollo-link": "^1.2.14", - "apollo-utilities": "^1.0.1", - "deprecated-decorator": "^0.1.6", - "iterall": "^1.1.3", - "uuid": "^3.1.0" + "webidl-conversions": "^5.0.0" }, - "peerDependencies": { - "graphql": "^0.13.0 || ^14.0.0 || ^15.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/graphql-tools/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "dependencies": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, + "node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", "engines": { - "node": ">= 0.10" + "node": ">=10" } }, - "node_modules/gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", - "dependencies": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, + "node_modules/dotenv-expand": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.3.tgz", + "integrity": "sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==", "engines": { - "node": ">= 0.10" + "node": ">=12" } }, - "node_modules/gulp-cli/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "engines": { - "node": ">=0.10.0" + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, - "node_modules/gulp-cli/node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "node_modules/each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" } }, - "node_modules/gulp-cli/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "node_modules/each-props/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "isobject": "^3.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/gulp-cli/node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" - }, - "node_modules/gulp-cli/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/gulp-cli/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "safe-buffer": "^5.0.1" } }, - "node_modules/gulp-cli/node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.224", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.224.tgz", + "integrity": "sha512-dOujC5Yzj0nOVE23iD5HKqrRSDj2SD7RazpZS/b/WX85MtO6/LzKDF4TlYZTBteB+7fvSg5JpWh0sN7fImNF8w==", + "peer": true + }, + "node_modules/emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/gulp-cli/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/gulp-cli/node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "once": "^1.4.0" } }, - "node_modules/gulp-cli/node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "is-arrayish": "^0.2.1" } }, - "node_modules/gulp-cli/node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "node_modules/gulp-cli/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "node_modules/es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gulp-cli/node_modules/which-module": { + "node_modules/es-abstract/node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" }, - "node_modules/gulp-cli/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gulp-cli/node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + "node_modules/es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dependencies": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } }, - "node_modules/gulp-cli/node_modules/yargs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", - "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "dependencies": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.1" + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" } }, - "node_modules/gulp-cli/node_modules/yargs-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", - "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "dependencies": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" + "d": "^1.0.1", + "ext": "^1.1.2" } }, - "node_modules/gulp-run-command": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/gulp-run-command/-/gulp-run-command-0.0.10.tgz", - "integrity": "sha512-i6o4XRqoadZB2doWCqkrCe7FmFwqPZ0Fxx74FGt83/KT5wKRRaKiFh598W64HE0Br9es6Oyq+nA+/AWbCfeSYQ==", + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", "dependencies": { - "babel-plugin-transform-runtime": "6.15.0", - "cross-spawn": "4.0.0", - "spawn-args": "0.2.0", - "timeout-as-promise": "^1.0.0" + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" } }, - "node_modules/gulp-run-command/node_modules/cross-spawn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.0.tgz", - "integrity": "sha1-glR3SrR4a4xbPPTfumbOVjkywlI=", + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "peer": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "peer": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "peer": 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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" + }, + "node_modules/exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "peer": true + }, + "node_modules/execa": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", + "integrity": "sha512-R66dW/hW3I8yV77Wg4xn6zMguRPUgt59VLm5e85NrOF05ZdPn7YOfPBSw0E9epJDvuzwVWEG+HmEaQ4muYuWKQ==", + "dependencies": { + "cross-spawn": "^4.0.0", + "get-stream": "^2.2.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", "dependencies": { "lru-cache": "^4.0.1", "which": "^1.2.9" } }, - "node_modules/gulp-run-command/node_modules/lru-cache": { + "node_modules/execa/node_modules/lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", @@ -5912,7 +6325,7 @@ "yallist": "^2.1.2" } }, - "node_modules/gulp-run-command/node_modules/which": { + "node_modules/execa/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", @@ -5923,330 +6336,279 @@ "which": "bin/which" } }, - "node_modules/gulp-run-command/node_modules/yallist": { + "node_modules/execa/node_modules/yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" }, - "node_modules/gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dependencies": { - "glogg": "^1.0.0" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" + "is-extendable": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dependencies": { - "function-bind": "^1.1.1" + "kind-of": "^3.0.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">=0.10.0" } }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dependencies": { - "ansi-regex": "^2.0.0" + "is-buffer": "^1.1.5" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dependencies": { - "has-symbols": "^1.0.2" + "kind-of": "^3.0.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "is-buffer": "^1.1.5" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dependencies": { - "kind-of": "^3.0.2" - }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "engines": { "node": ">=0.10.0" } }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", "dependencies": { - "is-buffer": "^1.1.5" + "homedir-polyfill": "^1.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "node_modules/expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "peer": true, "dependencies": { - "is-buffer": "^1.1.5" + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==", - "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues." - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" + "node": ">= 10.14.2" } }, - "node_modules/home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", + "node_modules/expect/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==", + "peer": true, "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "node_modules/expect/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==", + "peer": true, "dependencies": { - "parse-passwd": "^1.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + "node_modules/expect/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==", + "peer": true }, - "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "node_modules/express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.10.0" } }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "engines": { - "node": ">=8.0.0" + "node": ">= 0.8" } }, - "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "node_modules/express/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } + "node": ">= 0.8" } }, - "node_modules/http-proxy/node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/i": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", - "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -6262,426 +6624,462 @@ } ] }, - "node_modules/ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflation": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", - "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==", + "node_modules/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { - "node": ">= 0.8.0" + "node": ">= 0.8" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "node_modules/ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "type": "^2.5.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "node_modules/ext/node_modules/type": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "node_modules/internal-ip": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", - "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dependencies": { - "default-gateway": "^6.0.0", - "ipaddr.js": "^1.9.1", - "is-ip": "^3.1.0", - "p-event": "^4.2.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/internal-ip?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dependencies": { - "loose-envify": "^1.0.0" + "node": ">=0.10.0" } }, - "node_modules/invert-kv": { + "node_modules/extglob/node_modules/define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "^1.0.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, - "node_modules/is_js": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/is_js/-/is_js-0.9.0.tgz", - "integrity": "sha512-8Y5EHSH+TonfUHX2g3pMJljdbGavg55q4jmHzghJCdqYDbdNROC8uw/YFQwIRCRqRJT1EY3pJefz+kglw+o7sg==" - }, - "node_modules/is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" } }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dependencies": { - "kind-of": "^6.0.0" + "pump": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" + "node_modules/extract-zip/node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", + "engines": { + "node": "> 0.1.90" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", "dependencies": { - "binary-extensions": "^2.0.0" + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.10" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "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==" + }, + "node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "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==" }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=" + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "peer": true, "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" + "bser": "2.1.1" } }, - "node_modules/is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "pend": "~1.2.0" } }, - "node_modules/is-data-descriptor": { + "node_modules/file-uri-to-path": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dependencies": { - "kind-of": "^6.0.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dependencies": { - "has-tostringtag": "^1.0.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/finalhandler/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", "dependencies": { - "is-plain-object": "^2.0.4" + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/is-extendable/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/findup-sync/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dependencies": { - "isobject": "^3.0.1" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "engines": { "node": ">=0.10.0" } }, - "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=", + "node_modules/findup-sync/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "node_modules/findup-sync/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, "engines": { "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "node_modules/findup-sync/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "engines": { - "node": ">=4" + "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==", + "node_modules/findup-sync/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dependencies": { - "is-extglob": "^2.1.1" + "kind-of": "^3.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", + "node_modules/findup-sync/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dependencies": { - "ip-regex": "^4.0.0" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "node_modules/findup-sync/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { "node": ">=0.10.0" } }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "engines": { - "node": ">= 0.4" + "node_modules/findup-sync/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "engines": { - "node": ">=0.12.0" + "node": ">=0.10.0" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "node_modules/findup-sync/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dependencies": { - "has-tostringtag": "^1.0.0" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "node_modules/fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, "engines": { - "node": ">=6" + "node": ">= 0.10" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/fined/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/is-plain-obj": { + "node_modules/fix-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "resolved": "https://registry.npmjs.org/fix-path/-/fix-path-3.0.0.tgz", + "integrity": "sha512-opGAl4+ip5jUikHR2C8Jo7czZ80pz8EK/0gMlAZu7xgDmBqIynlX8SMYg9KowYjAU6HT0nxsSJEWru0u+n+N2Q==", + "dependencies": { + "shell-path": "^2.1.0" + }, "engines": { "node": ">=10" }, @@ -6689,4257 +7087,4375 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "node_modules/flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { - "node": ">= 0.4" + "node": ">=4.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dependencies": { - "is-unc-path": "^1.0.0" - }, + "is-callable": "^1.1.3" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "engines": { "node": ">=0.10.0" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", "dependencies": { - "call-bind": "^1.0.2" + "for-in": "^1.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dependencies": { - "has-tostringtag": "^1.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.12" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/formidable": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", + "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", + "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dependencies": { - "has-symbols": "^1.0.2" + "map-cache": "^0.2.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-typedarray": { + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-capacitor": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-2.0.4.tgz", + "integrity": "sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA==", + "engines": { + "node": ">=8.5" + } + }, + "node_modules/fs-constants": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, - "node_modules/is-unc-path": { + "node_modules/fs-mkdirp-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", "dependencies": { - "unc-path-regex": "^0.1.2" + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "node_modules/is-valid-glob": { + "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "node_modules/isexe": { + "node_modules/get-func-name": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "node_modules/iterall": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", - "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" - }, - "node_modules/jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "peer": true, "engines": { - "node": ">= 10.14.2" + "node": ">=8.0.0" } }, - "node_modules/jest-diff/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==", - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/jest-diff/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==", + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dependencies": { - "color-name": "~1.1.4" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-diff/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==" - }, - "node_modules/jest-diff/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==", + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-diff/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==", + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "assert-plus": "^1.0.0" } }, - "node_modules/jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "node_modules/gists": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gists/-/gists-2.0.0.tgz", + "integrity": "sha512-EVSWDpq2/H9ITsXsjdPo9+i2MI9U4E6DirXwR7/t6Mqgnynlh9ta6RMyezIINVNhkXZTCttmiSISd7JNkI2rQw==", + "dependencies": { + "github-base": "^1.0.0" + }, "engines": { - "node": ">= 10.14.2" + "node": ">=8" } }, - "node_modules/jest-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", - "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "node_modules/github-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/github-base/-/github-base-1.0.0.tgz", + "integrity": "sha512-5A9OOCQWK80v+bjVRzdK0M/5UtERN9vx9TkJMlkiJA24wu/+lrQLsq5MPQIrSONrSWwt83eAPtBcuQOc2FyK8A==", "dependencies": { - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^2.0.0", - "micromatch": "^4.0.2" + "get-value": "^3.0.1", + "needle": "^2.2.2", + "paged-request": "^1.0.2", + "parse-link-header": "^1.0.1", + "qs": "^6.5.1", + "use": "^3.1.0" }, "engines": { - "node": ">= 10.14.2" + "node": ">=8" } }, - "node_modules/jest-util/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==", + "node_modules/github-base/node_modules/get-value": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-3.0.1.tgz", + "integrity": "sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==", "dependencies": { - "color-convert": "^2.0.1" + "isobject": "^3.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6.0" } }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=10" + "node": "*" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-util/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==", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dependencies": { - "color-name": "~1.1.4" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-util/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==" - }, - "node_modules/jest-util/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==", - "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/jest-util/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==", + "node_modules/glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", "dependencies": { - "has-flag": "^4.0.0" + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.10" } }, - "node_modules/joi": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", - "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "node_modules/glob-stream/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "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==" - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - }, - "node_modules/jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==", - "bin": { - "jsesc": "bin/jsesc" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "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==" - }, - "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=" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "node_modules/json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", - "bin": { - "json5": "lib/cli.js" + "node_modules/glob-stream/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "node_modules/glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" }, "engines": { - "node": ">=4", - "npm": ">=1.4.28" + "node": ">= 0.10" } }, - "node_modules/jsonwebtoken/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" + "node_modules/glob-watcher/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "node_modules/glob-watcher/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" + "remove-trailing-separator": "^1.0.1" }, "engines": { - "node": ">=0.6.0" + "node": ">=0.10.0" } }, - "node_modules/just-debounce": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", - "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==" + "node_modules/glob-watcher/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "node_modules/glob-watcher/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "node_modules/glob-watcher/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "is-extendable": "^0.1.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/koa-body": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/koa-body/-/koa-body-4.2.0.tgz", - "integrity": "sha512-wdGu7b9amk4Fnk/ytH8GuWwfs4fsB5iNkY8kZPpgQVb04QZSv85T0M8reb+cJmvLE8cjPYvBzRikD3s6qz8OoA==", + "node_modules/glob-watcher/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", "dependencies": { - "@types/formidable": "^1.0.31", - "co-body": "^5.1.1", - "formidable": "^1.1.1" + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" } }, - "node_modules/last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "node_modules/glob-watcher/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dependencies": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "node_modules/glob-watcher/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dependencies": { - "readable-stream": "^2.0.5" + "is-extendable": "^0.1.0" }, "engines": { - "node": ">= 0.6.3" + "node": ">=0.10.0" } }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "node_modules/glob-watcher/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "dependencies": { - "invert-kv": "^1.0.0" + "bindings": "^1.5.0", + "nan": "^2.12.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 4.0" } }, - "node_modules/lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "node_modules/glob-watcher/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dependencies": { - "flush-write-stream": "^1.0.2" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-watcher/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dependencies": { + "is-extglob": "^2.1.0" }, "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, - "node_modules/liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "node_modules/glob-watcher/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dependencies": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" + "binary-extensions": "^1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/liftoff/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/glob-watcher/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dependencies": { - "isobject": "^3.0.1" + "kind-of": "^3.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "node_modules/glob-watcher/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "is-buffer": "^1.1.5" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "node_modules/glob-watcher/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dependencies": { - "error-ex": "^1.2.0" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/load-json-file/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "node_modules/glob-watcher/node_modules/micromatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { "node": ">=0.10.0" } }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "node_modules/glob-watcher/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "dependencies": { - "is-utf8": "^0.2.0" + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.10" } }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/glob-watcher/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dependencies": { - "p-locate": "^4.1.0" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" - }, - "node_modules/loglevel": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", - "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", - "engines": { - "node": ">= 0.6.0" + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "isexe": "^2.0.0" }, "bin": { - "loose-envify": "cli.js" + "which": "bin/which" } }, - "node_modules/loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", - "dependencies": { - "get-func-name": "^2.0.0" + "node_modules/globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", "dependencies": { - "yallist": "^4.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + "node_modules/globby/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } }, - "node_modules/make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "node_modules/glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", "dependencies": { - "kind-of": "^6.0.2" + "sparkles": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/make-iterator/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } + "node_modules/graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "node_modules/graphql": { + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", "engines": { - "node": ">=0.10.0" + "node": ">= 10.x" } }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "node_modules/graphql-extensions": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.15.0.tgz", + "integrity": "sha512-bVddVO8YFJPwuACn+3pgmrEg6I8iBuYLuwvxiE+lcQQ7POotVZxm2rgGw0PvVYmWWf3DT7nTVDZ5ROh/ALp8mA==", + "deprecated": "The `graphql-extensions` API has been removed from Apollo Server 3. Use the plugin API instead: https://www.apollographql.com/docs/apollo-server/integrations/plugins/", "dependencies": { - "object-visit": "^1.0.0" + "@apollographql/apollo-tools": "^0.5.0", + "apollo-server-env": "^3.1.0", + "apollo-server-types": "^0.9.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "node_modules/graphql-playground-html": { + "version": "1.6.30", + "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.6.30.tgz", + "integrity": "sha512-tpCujhsJMva4aqE8ULnF7/l3xw4sNRZcSHu+R00VV+W0mfp+Q20Plvcrp+5UXD+2yS6oyCXncA+zoQJQqhGCEw==", "dependencies": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "engines": { - "node": ">= 0.10.0" + "xss": "^1.0.6" } }, - "node_modules/matchdep/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "node_modules/graphql-playground-middleware-express": { + "version": "1.7.23", + "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.23.tgz", + "integrity": "sha512-M/zbTyC1rkgiQjFSgmzAv6umMHOphYLNWZp6Ye5QrD77WfGOOoSqDsVmGUczc2pDkEPEzzGB/bvBO5rdzaTRgw==", "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "graphql-playground-html": "^1.6.30" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "express": "^4.16.2" } }, - "node_modules/matchdep/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/graphql-subscriptions": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-1.2.1.tgz", + "integrity": "sha512-95yD/tKi24q8xYa7Q9rhQN16AYj5wPbrb8tmHGM3WRc9EBmWrG/0kkMl+tQG8wcEuE9ibR4zyOM31p5Sdr2v4g==", "dependencies": { - "is-extendable": "^0.1.0" + "iterall": "^1.3.0" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "graphql": "^0.10.5 || ^0.11.3 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/matchdep/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "tslib": "^2.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/matchdep/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/graphql-tools": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.8.tgz", + "integrity": "sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg==", + "deprecated": "This package has been deprecated and now it only exports makeExecutableSchema.\\nAnd it will no longer receive updates.\\nWe recommend you to migrate to scoped packages such as @graphql-tools/schema, @graphql-tools/utils and etc.\\nCheck out https://www.graphql-tools.com to learn what package you should use instead", "dependencies": { - "is-extendable": "^0.1.0" + "apollo-link": "^1.2.14", + "apollo-utilities": "^1.0.1", + "deprecated-decorator": "^0.1.6", + "iterall": "^1.1.3", + "uuid": "^3.1.0" + }, + "peerDependencies": { + "graphql": "^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/graphql-tools/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", + "optional": true, + "peer": true + }, + "node_modules/gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dependencies": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "bin": { + "gulp": "bin/gulp.js" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/matchdep/node_modules/findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "node_modules/gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + }, + "bin": { + "gulp": "bin/gulp.js" }, "engines": { "node": ">= 0.10" } }, - "node_modules/matchdep/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "node_modules/gulp-cli/node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", "engines": { "node": ">=0.10.0" } }, - "node_modules/matchdep/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "node_modules/gulp-cli/node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" } }, - "node_modules/matchdep/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "node_modules/gulp-cli/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dependencies": { - "kind-of": "^3.0.2" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/matchdep/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/gulp-cli/node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "node_modules/gulp-cli/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dependencies": { - "is-buffer": "^1.1.5" + "number-is-nan": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/matchdep/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/gulp-cli/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dependencies": { + "pinkie-promise": "^2.0.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/matchdep/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/gulp-cli/node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/matchdep/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, + "node_modules/gulp-cli/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "engines": { "node": ">=0.10.0" } }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "node_modules/gulp-cli/node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/merge-descriptors": { + "node_modules/gulp-cli/node_modules/read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } + "node_modules/gulp-cli/node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, - "node_modules/micro": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/micro/-/micro-9.4.1.tgz", - "integrity": "sha512-Lpjcbp6Y9GJIfewxDfTmu9eW0rt0MGo+Gs1d3yJLFa7mhErtKkCngGhDbA/O1gqUjEwsHh+jWPg8BJ0Bx4AgFA==", + "node_modules/gulp-cli/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dependencies": { - "arg": "4.1.0", - "content-type": "1.0.4", - "raw-body": "2.4.1" - }, - "bin": { - "micro": "bin/micro.js" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" }, "engines": { - "node": ">= 8.0.0" + "node": ">=0.10.0" } }, - "node_modules/micro/node_modules/arg": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", - "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==" + "node_modules/gulp-cli/node_modules/which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" }, - "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/gulp-cli/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "engines": { - "node": ">=8.6" + "node": ">=0.10.0" } }, - "node_modules/microtime": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/microtime/-/microtime-3.1.1.tgz", - "integrity": "sha512-to1r7o24cDsud9IhN6/8wGmMx5R2kT0w2Xwm5okbYI3d1dk6Xv0m+Z+jg2vS9pt+ocgQHTCtgs/YuyJhySzxNg==", - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^5.0.0", - "node-gyp-build": "^4.4.0" - }, - "engines": { - "node": ">= 14.13.0" + "node_modules/gulp-cli/node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + }, + "node_modules/gulp-cli/node_modules/yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "dependencies": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" } }, - "node_modules/migrate": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/migrate/-/migrate-1.8.0.tgz", - "integrity": "sha512-K18j+/k0M/MWjhAwxc6t5WST9G4yAdbUEy04Y7XcTiTf62QQPDcMKcoxj5lpMvWjRJPG0QEnm0UPlmMoM0bRRQ==", + "node_modules/gulp-cli/node_modules/yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", "dependencies": { - "chalk": "^2.4.2", - "commander": "^2.20.3", - "dateformat": "^3.0.3", - "dotenv": "^16.0.0", - "inherits": "^2.0.3", - "minimatch": "^5.0.1", - "mkdirp": "^0.5.1", - "slug": "^5.3.0" - }, - "bin": { - "migrate": "bin/migrate", - "migrate-create": "bin/migrate-create", - "migrate-down": "bin/migrate-down", - "migrate-init": "bin/migrate-init", - "migrate-list": "bin/migrate-list", - "migrate-up": "bin/migrate-up" - }, - "engines": { - "node": ">= 0.4.x" + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" } }, - "node_modules/migrate/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==", + "node_modules/gulp-run-command": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/gulp-run-command/-/gulp-run-command-0.0.10.tgz", + "integrity": "sha512-i6o4XRqoadZB2doWCqkrCe7FmFwqPZ0Fxx74FGt83/KT5wKRRaKiFh598W64HE0Br9es6Oyq+nA+/AWbCfeSYQ==", "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" + "babel-plugin-transform-runtime": "6.15.0", + "cross-spawn": "4.0.0", + "spawn-args": "0.2.0", + "timeout-as-promise": "^1.0.0" } }, - "node_modules/migrate/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/gulp-run-command/node_modules/cross-spawn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.0.tgz", + "integrity": "sha1-glR3SrR4a4xbPPTfumbOVjkywlI=", "dependencies": { - "balanced-match": "^1.0.0" + "lru-cache": "^4.0.1", + "which": "^1.2.9" } }, - "node_modules/migrate/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==", + "node_modules/gulp-run-command/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/gulp-run-command/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/gulp-run-command/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "node_modules/gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dependencies": { + "glogg": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.10" } }, - "node_modules/migrate/node_modules/dotenv": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", - "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==", + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/migrate/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", "dependencies": { - "brace-expansion": "^2.0.1" + "ajv": "^6.12.3", + "har-schema": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/migrate/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==", + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dependencies": { - "has-flag": "^3.0.0" + "function-bind": "^1.1.1" }, "engines": { - "node": ">=4" + "node": ">= 0.4.0" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dependencies": { + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", "engines": { - "node": ">= 0.6" + "node": ">=4" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "dependencies": { - "mime-db": "1.52.0" + "get-intrinsic": "^1.1.1" }, - "engines": { - "node": ">= 0.6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dependencies": { - "brace-expansion": "^1.1.7" + "has-symbols": "^1.0.2" }, "engines": { - "node": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/moesif-nodejs": { + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/moesif-nodejs/-/moesif-nodejs-3.2.2.tgz", - "integrity": "sha512-XP8ocHg/27jiEEQQpu6nJl04/H7Ivg45oVwoyXie4dR7fdujHH+r2/8TwWgM27QIFdHsk84xQB7pYD5hJN/JLA==", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dependencies": { - "bytes": "^3.1.1", - "card-validator": "^8.1.1", - "content-type": "^1.0.4", - "crypto-js": "^4.1.1", - "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", - "koa-body": "^4.2.0", - "lodash": "^4.17.19", - "moesifapi": "^2.0.10", - "raw-body": "^2.4.2", - "request-ip": "^2.1.3", - "uuid4": "^2.0.2" + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/moesif-nodejs/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dependencies": { + "is-buffer": "^1.1.5" + }, "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/moesif-nodejs/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" + "node_modules/hoek": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", + "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==", + "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues." + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" } }, - "node_modules/moesif-nodejs/node_modules/http-errors": { + "node_modules/home-or-tmp": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" }, "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/moesif-nodejs/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "parse-passwd": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/moesif-nodejs/node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "peer": true, "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "whatwg-encoding": "^1.0.5" }, "engines": { - "node": ">= 0.8" + "node": ">=10" } }, - "node_modules/moesif-nodejs/node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "peer": true + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/moesif-nodejs/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, "engines": { - "node": ">= 0.8" + "node": ">=8.0.0" } }, - "node_modules/moesifapi": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/moesifapi/-/moesifapi-2.0.10.tgz", - "integrity": "sha512-ulN9tNqxEcjH3YMoelBOkIkSN3D2qF+qzNpvG7bhtUmGWP+/bHyBP24EtuGX30VAA+3jHL9XNin28RD8teriFA==", + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "peer": true, "dependencies": { - "request": "^2.88.0" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" } }, - "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==" - }, - "node_modules/mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, "engines": { - "node": ">= 0.10" + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } } }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + "node_modules/http-proxy/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, - "node_modules/nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", - "optional": true + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/nanomatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "engines": { - "node": ">=0.10.0" + "node": ">=10.17.0" } }, - "node_modules/needle": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", - "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, + "node_modules/i": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", + "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==", "engines": { - "node": ">= 4.4.x" + "node": ">=0.4" } }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "safer-buffer": ">= 2.1.2 < 3" + }, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, - "node_modules/node-addon-api": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", - "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==" + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, + "node_modules/ignore": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">= 4" } }, - "node_modules/node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" }, - "node_modules/nodemon": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", - "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", - "hasInstallScript": true, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "peer": true, "dependencies": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" }, "bin": { - "nodemon": "bin/nodemon.js" + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=8.10.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nodemon/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "peer": true, + "engines": { + "node": ">=0.8.19" } }, - "node_modules/nodemon/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" } }, - "node_modules/nodemon/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==", + "node_modules/inflation": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", + "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dependencies": { - "has-flag": "^3.0.0" + "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==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/internal-ip": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", + "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", + "dependencies": { + "default-gateway": "^6.0.0", + "ipaddr.js": "^1.9.1", + "is-ip": "^3.1.0", + "p-event": "^4.2.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/internal-ip?sponsor=1" } }, - "node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" }, "engines": { - "node": "*" + "node": ">= 0.4" } }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" } }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "engines": { "node": ">=0.10.0" } }, - "node_modules/normalize-url": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-7.0.3.tgz", - "integrity": "sha512-RiCOdwdPnzvwcBFJE4iI1ss3dMVRIrEzFpn8ftje6iBfzBInqlnRrNhxcLwBEKjPPXQKzm1Ptlxtaiv9wdcj5w==", + "node_modules/ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "dependencies": { - "once": "^1.3.2" - }, - "engines": { + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { "node": ">= 0.10" } }, - "node_modules/npm": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/npm/-/npm-7.24.2.tgz", - "integrity": "sha512-120p116CE8VMMZ+hk8IAb1inCPk4Dj3VZw29/n2g6UI77urJKVYb7FZUDW8hY+EBnfsjI/2yrobBgFyzo7YpVQ==", - "bundleDependencies": [ - "@isaacs/string-locale-compare", - "@npmcli/arborist", - "@npmcli/ci-detect", - "@npmcli/config", - "@npmcli/map-workspaces", - "@npmcli/package-json", - "@npmcli/run-script", - "abbrev", - "ansicolors", - "ansistyles", - "archy", - "cacache", - "chalk", - "chownr", - "cli-columns", - "cli-table3", - "columnify", - "fastest-levenshtein", - "glob", - "graceful-fs", - "hosted-git-info", - "ini", - "init-package-json", - "is-cidr", - "json-parse-even-better-errors", - "libnpmaccess", - "libnpmdiff", - "libnpmexec", - "libnpmfund", - "libnpmhook", - "libnpmorg", - "libnpmpack", - "libnpmpublish", - "libnpmsearch", - "libnpmteam", - "libnpmversion", - "make-fetch-happen", - "minipass", - "minipass-pipeline", - "mkdirp", - "mkdirp-infer-owner", - "ms", - "node-gyp", - "nopt", - "npm-audit-report", - "npm-install-checks", - "npm-package-arg", - "npm-pick-manifest", - "npm-profile", - "npm-registry-fetch", - "npm-user-validate", - "npmlog", - "opener", - "pacote", - "parse-conflict-json", - "qrcode-terminal", - "read", - "read-package-json", - "read-package-json-fast", - "readdir-scoped-modules", - "rimraf", - "semver", - "ssri", - "tar", - "text-table", - "tiny-relative-date", - "treeverse", - "validate-npm-package-name", - "which", - "write-file-atomic" - ], + "node_modules/is_js": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/is_js/-/is_js-0.9.0.tgz", + "integrity": "sha512-8Y5EHSH+TonfUHX2g3pMJljdbGavg55q4jmHzghJCdqYDbdNROC8uw/YFQwIRCRqRJT1EY3pJefz+kglw+o7sg==" + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", "dependencies": { - "@isaacs/string-locale-compare": "*", - "@npmcli/arborist": "*", - "@npmcli/ci-detect": "*", - "@npmcli/config": "*", - "@npmcli/map-workspaces": "*", - "@npmcli/package-json": "*", - "@npmcli/run-script": "*", - "abbrev": "*", - "ansicolors": "*", - "ansistyles": "*", - "archy": "*", - "cacache": "*", - "chalk": "*", - "chownr": "*", - "cli-columns": "*", - "cli-table3": "*", - "columnify": "*", - "fastest-levenshtein": "*", - "glob": "*", - "graceful-fs": "*", - "hosted-git-info": "*", - "ini": "*", - "init-package-json": "*", - "is-cidr": "*", - "json-parse-even-better-errors": "*", - "libnpmaccess": "*", - "libnpmdiff": "*", - "libnpmexec": "*", - "libnpmfund": "*", - "libnpmhook": "*", - "libnpmorg": "*", - "libnpmpack": "*", - "libnpmpublish": "*", - "libnpmsearch": "*", - "libnpmteam": "*", - "libnpmversion": "*", - "make-fetch-happen": "*", - "minipass": "*", - "minipass-pipeline": "*", - "mkdirp": "*", - "mkdirp-infer-owner": "*", - "ms": "*", - "node-gyp": "*", - "nopt": "*", - "npm-audit-report": "*", - "npm-install-checks": "*", - "npm-package-arg": "*", - "npm-pick-manifest": "*", - "npm-profile": "*", - "npm-registry-fetch": "*", - "npm-user-validate": "*", - "npmlog": "*", - "opener": "*", - "pacote": "*", - "parse-conflict-json": "*", - "qrcode-terminal": "*", - "read": "*", - "read-package-json": "*", - "read-package-json-fast": "*", - "readdir-scoped-modules": "*", - "rimraf": "*", - "semver": "*", - "ssri": "*", - "tar": "*", - "text-table": "*", - "tiny-relative-date": "*", - "treeverse": "*", - "validate-npm-package-name": "*", - "which": "*", - "write-file-atomic": "*" - }, - "bin": { - "npm": "bin/npm-cli.js", - "npx": "bin/npx-cli.js" + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dependencies": { - "path-key": "^2.0.0" + "kind-of": "^6.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/@gar/promisify": { - "version": "1.1.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC" + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, - "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "2.9.0", - "inBundle": true, - "license": "ISC", + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dependencies": { - "@isaacs/string-locale-compare": "^1.0.1", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^1.0.2", - "@npmcli/metavuln-calculator": "^1.1.0", - "@npmcli/move-file": "^1.1.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^1.0.1", - "@npmcli/package-json": "^1.0.1", - "@npmcli/run-script": "^1.8.2", - "bin-links": "^2.2.1", - "cacache": "^15.0.3", - "common-ancestor-path": "^1.0.1", - "json-parse-even-better-errors": "^2.3.1", - "json-stringify-nice": "^1.1.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^8.1.5", - "npm-pick-manifest": "^6.1.0", - "npm-registry-fetch": "^11.0.0", - "pacote": "^11.3.5", - "parse-conflict-json": "^1.1.1", - "proc-log": "^1.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "ssri": "^8.0.1", - "treeverse": "^1.0.4", - "walk-up-path": "^1.0.0" - }, - "bin": { - "arborist": "bin/index.js" + "has-bigints": "^1.0.1" }, - "engines": { - "node": ">= 10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/@npmcli/ci-detect": { - "version": "1.3.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/config": { - "version": "2.3.0", - "inBundle": true, - "license": "ISC", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dependencies": { - "ini": "^2.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "semver": "^7.3.4", - "walk-up-path": "^1.0.0" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm/node_modules/@npmcli/disparity-colors": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dependencies": { - "ansi-styles": "^4.3.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/@npmcli/fs": { - "version": "1.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, - "node_modules/npm/node_modules/@npmcli/git": { - "version": "2.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^6.0.0", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^6.1.1", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", - "inBundle": true, - "license": "ISC", + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" + "ci-info": "^2.0.0" }, "bin": { - "installed-package-contents": "index.js" - }, - "engines": { - "node": ">= 10" + "is-ci": "bin.js" } }, - "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "1.0.4", - "inBundle": true, - "license": "ISC", + "node_modules/is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", "dependencies": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^7.1.6", - "minimatch": "^3.0.4", - "read-package-json-fast": "^2.0.1" + "has": "^1.0.3" }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "1.1.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "cacache": "^15.0.5", - "pacote": "^11.1.11", - "semver": "^7.3.2" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/@npmcli/move-file": { - "version": "1.1.2", - "inBundle": true, - "license": "MIT", + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "kind-of": "^6.0.0" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/@npmcli/name-from-folder": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/node-gyp": { - "version": "1.0.2", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^2.3.1" + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "1.3.2", - "inBundle": true, - "license": "ISC", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dependencies": { - "infer-owner": "^1.0.4" + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "1.8.6", - "inBundle": true, - "license": "ISC", + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dependencies": { - "@npmcli/node-gyp": "^1.0.2", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^7.1.0", - "read-package-json-fast": "^2.0.1" - } - }, - "node_modules/npm/node_modules/@tootallnate/once": { - "version": "1.1.2", - "inBundle": true, - "license": "MIT", + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/abbrev": { - "version": "1.1.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/agent-base": { - "version": "6.0.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { - "node": ">= 6.0.0" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/agentkeepalive": { - "version": "4.1.4", - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "optional": true, + "peer": true, + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">= 8.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/aggregate-error": { - "version": "3.1.0", - "inBundle": true, - "license": "MIT", + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "is-plain-object": "^2.0.4" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/ajv": { - "version": "6.12.6", - "inBundle": true, - "license": "MIT", + "node_modules/is-extendable/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "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" + "isobject": "^3.0.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/ansi-regex": { + "node_modules/is-extglob": { "version": "2.1.1", - "inBundle": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "engines": { "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/ansi-styles": { - "version": "4.3.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", "engines": { - "node": ">=8" + "node": ">=0.10.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/ansicolors": { - "version": "0.3.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/ansistyles": { - "version": "0.1.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/aproba": { + "node_modules/is-fullwidth-code-point": { "version": "2.0.0", - "inBundle": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "engines": { + "node": ">=4" + } }, - "node_modules/npm/node_modules/archy": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "peer": true, + "engines": { + "node": ">=6" + } }, - "node_modules/npm/node_modules/are-we-there-yet": { - "version": "1.1.6", - "inBundle": true, - "license": "ISC", + "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==", "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/asap": { - "version": "2.0.6", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/asn1": { - "version": "0.2.4", - "inBundle": true, - "license": "MIT", + "node_modules/is-ip": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", + "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", "dependencies": { - "safer-buffer": "~2.1.0" + "ip-regex": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/npm/node_modules/assert-plus": { + "node_modules/is-negated-glob": { "version": "1.0.0", - "inBundle": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", "engines": { - "node": ">=0.8" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/asynckit": { - "version": "0.4.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/aws-sign2": { - "version": "0.7.0", - "inBundle": true, - "license": "Apache-2.0", + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "engines": { - "node": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/aws4": { - "version": "1.11.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/balanced-match": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "inBundle": true, - "license": "BSD-3-Clause", - "dependencies": { - "tweetnacl": "^0.14.3" + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" } }, - "node_modules/npm/node_modules/bin-links": { - "version": "2.2.1", - "inBundle": true, - "license": "ISC", + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dependencies": { - "cmd-shim": "^4.0.1", - "mkdirp": "^1.0.3", - "npm-normalize-package-bin": "^1.0.0", - "read-cmd-shim": "^2.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^3.0.3" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/binary-extensions": { + "node_modules/is-path-cwd": { "version": "2.2.0", - "inBundle": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/npm/node_modules/brace-expansion": { - "version": "1.1.11", - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" } }, - "node_modules/npm/node_modules/builtins": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/cacache": { - "version": "15.3.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "engines": { - "node": ">= 10" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/caseless": { - "version": "0.12.0", - "inBundle": true, - "license": "Apache-2.0" + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "peer": true }, - "node_modules/npm/node_modules/chalk": { - "version": "4.1.2", - "inBundle": true, - "license": "MIT", + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/chownr": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dependencies": { + "is-unc-path": "^1.0.0" + }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/cidr-regex": { - "version": "3.1.1", - "inBundle": true, - "license": "BSD-2-Clause", + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dependencies": { - "ip-regex": "^4.1.0" + "call-bind": "^1.0.2" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/clean-stack": { - "version": "2.2.0", - "inBundle": true, - "license": "MIT", + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/cli-columns": { - "version": "3.1.2", - "inBundle": true, - "license": "MIT", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dependencies": { - "string-width": "^2.0.0", - "strip-ansi": "^3.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">= 4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/cli-table3": { - "version": "0.6.0", - "inBundle": true, - "license": "MIT", + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dependencies": { - "object-assign": "^4.1.0", - "string-width": "^4.2.0" + "has-symbols": "^1.0.2" }, "engines": { - "node": "10.* || >= 12.*" + "node": ">= 0.4" }, - "optionalDependencies": { - "colors": "^1.1.2" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/cli-table3/node_modules/ansi-regex": { - "version": "5.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/cli-table3/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/cli-table3/node_modules/string-width": { - "version": "4.2.2", - "inBundle": true, - "license": "MIT", + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "call-bind": "^1.0.2" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/cli-table3/node_modules/strip-ansi": { - "version": "6.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "optional": true, + "peer": true, "dependencies": { - "ansi-regex": "^5.0.0" + "is-docker": "^2.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/clone": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, - "node_modules/npm/node_modules/cmd-shim": { - "version": "4.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "mkdirp-infer-owner": "^2.0.0" - }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/code-point-at": { - "version": "1.1.0", - "inBundle": true, - "license": "MIT", + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/color-convert": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "peer": true, "dependencies": { - "color-name": "~1.1.4" + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/color-name": { - "version": "1.1.4", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/color-support": { - "version": "1.1.3", - "inBundle": true, - "license": "ISC", + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "peer": true, "bin": { - "color-support": "bin.js" + "semver": "bin/semver.js" } }, - "node_modules/npm/node_modules/colors": { - "version": "1.4.0", - "inBundle": true, - "license": "MIT", - "optional": true, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "peer": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.1.90" + "node": ">=8" } }, - "node_modules/npm/node_modules/columnify": { - "version": "1.5.4", - "inBundle": true, - "license": "MIT", - "dependencies": { - "strip-ansi": "^3.0.0", - "wcwidth": "^1.0.0" + "node_modules/istanbul-lib-report/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==", + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/npm/node_modules/combined-stream": { - "version": "1.0.8", - "inBundle": true, - "license": "MIT", + "node_modules/istanbul-lib-report/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==", + "peer": true, "dependencies": { - "delayed-stream": "~1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/npm/node_modules/common-ancestor-path": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/concat-map": { - "version": "0.0.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/console-control-strings": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC" + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "peer": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/npm/node_modules/core-util-is": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/npm/node_modules/dashdash": { - "version": "1.14.1", - "inBundle": true, - "license": "MIT", + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "peer": true, "dependencies": { - "assert-plus": "^1.0.0" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": ">=0.10" + "node": ">=8" } }, - "node_modules/npm/node_modules/debug": { - "version": "4.3.2", - "inBundle": true, - "license": "MIT", + "node_modules/iterall": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", + "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" + }, + "node_modules/jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", + "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "peer": true, "dependencies": { - "ms": "2.1.2" + "@jest/core": "^26.6.3", + "import-local": "^3.0.2", + "jest-cli": "^26.6.3" }, - "engines": { - "node": ">=6.0" + "bin": { + "jest": "bin/jest.js" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/debuglog": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "peer": true, + "dependencies": { + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, "engines": { - "node": "*" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/defaults": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT", + "node_modules/jest-changed-files/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "peer": true, "dependencies": { - "clone": "^1.0.2" - } - }, - "node_modules/npm/node_modules/delayed-stream": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT", + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, "engines": { - "node": ">=0.4.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/npm/node_modules/delegates": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/depd": { - "version": "1.1.2", - "inBundle": true, - "license": "MIT", + "node_modules/jest-changed-files/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "peer": true, + "dependencies": { + "pump": "^3.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/dezalgo": { - "version": "1.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" + "node_modules/jest-changed-files/node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "peer": true, + "engines": { + "node": ">=8.12.0" } }, - "node_modules/npm/node_modules/diff": { - "version": "5.0.0", - "inBundle": true, - "license": "BSD-3-Clause", + "node_modules/jest-changed-files/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "peer": true, "engines": { - "node": ">=0.3.1" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/ecc-jsbn": { - "version": "0.1.2", - "inBundle": true, - "license": "MIT", + "node_modules/jest-changed-files/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "peer": true, "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/npm/node_modules/emoji-regex": { - "version": "8.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/encoding": { - "version": "0.1.13", - "inBundle": true, - "license": "MIT", - "optional": true, + "node_modules/jest-changed-files/node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "peer": true, "dependencies": { - "iconv-lite": "^0.6.2" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/npm/node_modules/env-paths": { - "version": "2.2.1", - "inBundle": true, - "license": "MIT", + "node_modules/jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "peer": true, + "dependencies": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + }, + "bin": { + "jest": "bin/jest.js" + }, "engines": { - "node": ">=6" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/err-code": { - "version": "2.0.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/extend": { - "version": "3.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/extsprintf": { - "version": "1.3.0", - "engines": [ - "node >=0.6.0" - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/fast-deep-equal": { - "version": "3.1.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/fastest-levenshtein": { - "version": "1.0.12", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/forever-agent": { - "version": "0.6.1", - "inBundle": true, - "license": "Apache-2.0", + "node_modules/jest-cli/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==", + "peer": true, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/npm/node_modules/fs-minipass": { - "version": "2.1.0", - "inBundle": true, - "license": "ISC", + "node_modules/jest-cli/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==", + "peer": true, "dependencies": { - "minipass": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 8" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/fs.realpath": { - "version": "1.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/function-bind": { - "version": "1.1.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/gauge": { - "version": "3.0.1", - "inBundle": true, - "license": "ISC", + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1 || ^2.0.0", - "strip-ansi": "^3.0.1 || ^4.0.0", - "wide-align": "^1.1.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm/node_modules/getpass": { - "version": "0.1.7", - "inBundle": true, - "license": "MIT", + "node_modules/jest-cli/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "peer": true, "dependencies": { - "assert-plus": "^1.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "node_modules/npm/node_modules/glob": { - "version": "7.2.0", - "inBundle": true, - "license": "ISC", + "node_modules/jest-cli/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==", + "peer": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=7.0.0" } }, - "node_modules/npm/node_modules/graceful-fs": { - "version": "4.2.8", - "inBundle": true, - "license": "ISC" + "node_modules/jest-cli/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==", + "peer": true }, - "node_modules/npm/node_modules/har-schema": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/jest-cli/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "peer": true + }, + "node_modules/jest-cli/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==", + "peer": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/npm/node_modules/har-validator": { - "version": "5.1.5", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, + "node_modules/jest-cli/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "peer": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/npm/node_modules/has": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT", + "node_modules/jest-cli/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "peer": true, "dependencies": { - "function-bind": "^1.1.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">= 0.4.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/has-flag": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/jest-cli/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==", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/hosted-git-info": { - "version": "4.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/jest-cli/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==", + "peer": true, "dependencies": { - "lru-cache": "^6.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm/node_modules/http-cache-semantics": { - "version": "4.1.0", - "inBundle": true, - "license": "BSD-2-Clause" - }, - "node_modules/npm/node_modules/http-proxy-agent": { - "version": "4.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/jest-cli/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "peer": true, "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/npm/node_modules/http-signature": { - "version": "1.2.0", - "inBundle": true, - "license": "MIT", + "node_modules/jest-cli/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "peer": true, "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" }, "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" + "node": ">=8" } }, - "node_modules/npm/node_modules/https-proxy-agent": { - "version": "5.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/jest-cli/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "peer": true, "dependencies": { - "agent-base": "6", - "debug": "4" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" }, "engines": { - "node": ">= 6" + "node": ">=6" } }, - "node_modules/npm/node_modules/humanize-ms": { - "version": "1.2.1", - "inBundle": true, - "license": "MIT", + "node_modules/jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "peer": true, "dependencies": { - "ms": "^2.0.0" + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } } }, - "node_modules/npm/node_modules/iconv-lite": { - "version": "0.6.3", - "inBundle": true, - "license": "MIT", - "optional": true, + "node_modules/jest-config/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==", + "peer": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/ignore-walk": { - "version": "3.0.4", - "inBundle": true, - "license": "ISC", + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { - "minimatch": "^3.0.4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm/node_modules/imurmurhash": { - "version": "0.1.4", - "inBundle": true, - "license": "MIT", + "node_modules/jest-config/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==", + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.8.19" + "node": ">=7.0.0" } }, - "node_modules/npm/node_modules/indent-string": { + "node_modules/jest-config/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==", + "peer": true + }, + "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", - "inBundle": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/infer-owner": { - "version": "1.0.4", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/inflight": { - "version": "1.0.6", - "inBundle": true, - "license": "ISC", + "node_modules/jest-config/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==", + "peer": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/inherits": { - "version": "2.0.4", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/ini": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm/node_modules/init-package-json": { - "version": "2.0.5", - "inBundle": true, - "license": "ISC", + "node_modules/jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", "dependencies": { - "npm-package-arg": "^8.1.5", - "promzard": "^0.3.0", - "read": "~1.0.1", - "read-package-json": "^4.1.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^3.0.0" + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" }, "engines": { - "node": ">=10" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/ip": { - "version": "1.1.5", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/ip-regex": { + "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", - "inBundle": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/is-cidr": { - "version": "4.0.2", - "inBundle": true, - "license": "BSD-2-Clause", + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "cidr-regex": "^3.1.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" - } - }, - "node_modules/npm/node_modules/is-core-module": { - "version": "2.7.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/jest-diff/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==", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/npm/node_modules/is-lambda": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/is-typedarray": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/isexe": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/isstream": { - "version": "0.1.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/jsbn": { - "version": "0.1.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/json-schema": { - "version": "0.2.3", - "inBundle": true - }, - "node_modules/npm/node_modules/json-schema-traverse": { - "version": "0.4.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/json-stringify-nice": { + "node_modules/jest-diff/node_modules/color-name": { "version": "1.1.4", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/json-stringify-safe": { - "version": "5.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/jsonparse": { - "version": "1.3.1", - "engines": [ - "node >= 0.2.0" - ], - "inBundle": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/npm/node_modules/jsprim": { - "version": "1.4.1", - "engines": [ - "node >=0.6.0" - ], - "inBundle": true, - "license": "MIT", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "node_modules/jest-diff/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==", + "engines": { + "node": ">=8" } }, - "node_modules/npm/node_modules/just-diff": { - "version": "3.1.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/just-diff-apply": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/libnpmaccess": { - "version": "4.0.3", - "inBundle": true, - "license": "ISC", + "node_modules/jest-diff/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==", "dependencies": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^8.1.2", - "npm-registry-fetch": "^11.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm/node_modules/libnpmdiff": { - "version": "2.0.4", - "inBundle": true, - "license": "ISC", + "node_modules/jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "peer": true, "dependencies": { - "@npmcli/disparity-colors": "^1.0.1", - "@npmcli/installed-package-contents": "^1.0.7", - "binary-extensions": "^2.2.0", - "diff": "^5.0.0", - "minimatch": "^3.0.4", - "npm-package-arg": "^8.1.4", - "pacote": "^11.3.4", - "tar": "^6.1.0" + "detect-newline": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/libnpmexec": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC", + "node_modules/jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "peer": true, "dependencies": { - "@npmcli/arborist": "^2.3.0", - "@npmcli/ci-detect": "^1.3.0", - "@npmcli/run-script": "^1.8.4", - "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^8.1.2", - "pacote": "^11.3.1", - "proc-log": "^1.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", - "walk-up-path": "^1.0.0" + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" }, "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/libnpmfund": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^2.5.0" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/libnpmhook": { - "version": "6.0.3", - "inBundle": true, - "license": "ISC", + "node_modules/jest-each/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==", + "peer": true, "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^11.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/libnpmorg": { - "version": "2.0.3", - "inBundle": true, - "license": "ISC", + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^11.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm/node_modules/libnpmpack": { + "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", - "inBundle": true, - "license": "ISC", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "peer": true, "dependencies": { - "@npmcli/run-script": "^1.8.3", - "npm-package-arg": "^8.1.0", - "pacote": "^11.2.6" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" + "node": ">=7.0.0" } }, - "node_modules/npm/node_modules/libnpmpublish": { - "version": "4.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "normalize-package-data": "^3.0.2", - "npm-package-arg": "^8.1.2", - "npm-registry-fetch": "^11.0.0", - "semver": "^7.1.3", - "ssri": "^8.0.1" - }, + "node_modules/jest-each/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==", + "peer": true + }, + "node_modules/jest-each/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==", + "peer": true, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm/node_modules/libnpmsearch": { - "version": "3.1.2", - "inBundle": true, - "license": "ISC", + "node_modules/jest-each/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==", + "peer": true, "dependencies": { - "npm-registry-fetch": "^11.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm/node_modules/libnpmteam": { - "version": "2.0.4", - "inBundle": true, - "license": "ISC", + "node_modules/jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "peer": true, "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^11.0.0" + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" }, "engines": { - "node": ">=10" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/libnpmversion": { - "version": "1.2.1", - "inBundle": true, - "license": "ISC", + "node_modules/jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "peer": true, "dependencies": { - "@npmcli/git": "^2.0.7", - "@npmcli/run-script": "^1.8.4", - "json-parse-even-better-errors": "^2.3.1", - "semver": "^7.3.5", - "stringify-package": "^1.0.1" + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/lru-cache": { - "version": "6.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, + "node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", "engines": { - "node": ">=10" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/make-fetch-happen": { - "version": "9.1.0", - "inBundle": true, - "license": "ISC", + "node_modules/jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "peer": true, "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" }, "engines": { - "node": ">= 10" + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "fsevents": "^2.1.2" } }, - "node_modules/npm/node_modules/mime-db": { - "version": "1.49.0", - "inBundle": true, - "license": "MIT", + "node_modules/jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "peer": true, + "dependencies": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/mime-types": { - "version": "2.1.32", - "inBundle": true, - "license": "MIT", + "node_modules/jest-jasmine2/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==", + "peer": true, "dependencies": { - "mime-db": "1.49.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/minimatch": { - "version": "3.0.4", - "inBundle": true, - "license": "ISC", + "node_modules/jest-jasmine2/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { - "brace-expansion": "^1.1.7" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm/node_modules/minipass": { - "version": "3.1.5", - "inBundle": true, - "license": "ISC", + "node_modules/jest-jasmine2/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==", + "peer": true, "dependencies": { - "yallist": "^4.0.0" + "color-name": "~1.1.4" }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-jasmine2/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==", + "peer": true + }, + "node_modules/jest-jasmine2/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==", + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/minipass-collect": { - "version": "1.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/jest-jasmine2/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==", + "peer": true, "dependencies": { - "minipass": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/npm/node_modules/minipass-fetch": { - "version": "1.4.1", - "inBundle": true, - "license": "MIT", + "node_modules/jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "peer": true, "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" }, "engines": { - "node": ">=8" + "node": ">= 10.14.2" + } + }, + "node_modules/jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" }, - "optionalDependencies": { - "encoding": "^0.1.12" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/minipass-flush": { - "version": "1.0.5", - "inBundle": true, - "license": "ISC", + "node_modules/jest-matcher-utils/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==", + "peer": true, "dependencies": { - "minipass": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 8" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/minipass-json-stream": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm/node_modules/minipass-pipeline": { - "version": "1.2.4", - "inBundle": true, - "license": "ISC", + "node_modules/jest-matcher-utils/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==", + "peer": true, "dependencies": { - "minipass": "^3.0.0" + "color-name": "~1.1.4" }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/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==", + "peer": true + }, + "node_modules/jest-matcher-utils/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==", + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/minipass-sized": { - "version": "1.0.3", - "inBundle": true, - "license": "ISC", + "node_modules/jest-matcher-utils/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==", + "peer": true, "dependencies": { - "minipass": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/minizlib": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT", + "node_modules/jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "peer": true, "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" }, "engines": { - "node": ">= 8" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/mkdirp": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" + "node_modules/jest-message-util/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==", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/mkdirp-infer-owner": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm/node_modules/ms": { - "version": "2.1.3", - "inBundle": true, - "license": "MIT" + "node_modules/jest-message-util/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==", + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } }, - "node_modules/npm/node_modules/mute-stream": { - "version": "0.0.8", - "inBundle": true, - "license": "ISC" + "node_modules/jest-message-util/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==", + "peer": true }, - "node_modules/npm/node_modules/negotiator": { - "version": "0.6.2", - "inBundle": true, - "license": "MIT", + "node_modules/jest-message-util/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==", + "peer": true, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/npm/node_modules/node-gyp": { - "version": "7.1.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.3", - "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "request": "^2.88.2", - "rimraf": "^3.0.2", - "semver": "^7.3.2", - "tar": "^6.0.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, + "node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": true, "engines": { - "node": ">= 10.12.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/aproba": { - "version": "1.2.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { - "version": "2.7.4", - "inBundle": true, - "license": "ISC", + "node_modules/jest-message-util/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==", + "peer": true, "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "peer": true, "dependencies": { - "number-is-nan": "^1.0.0" + "@jest/types": "^26.6.2", + "@types/node": "*" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { - "version": "4.1.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "peer": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "node_modules/npm/node_modules/node-gyp/node_modules/string-width": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT", + "node_modules/jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "peer": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "peer": true, "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/nopt": { - "version": "5.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "peer": true, "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" }, "engines": { - "node": ">=6" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/normalize-package-data": { - "version": "3.0.3", - "inBundle": true, - "license": "BSD-2-Clause", + "node_modules/jest-resolve/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==", + "peer": true, "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/npm-audit-report": { - "version": "2.1.5", - "inBundle": true, - "license": "ISC", + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { - "chalk": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm/node_modules/npm-bundled": { - "version": "1.1.2", - "inBundle": true, - "license": "ISC", + "node_modules/jest-resolve/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==", + "peer": true, "dependencies": { - "npm-normalize-package-bin": "^1.0.1" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/npm/node_modules/npm-install-checks": { + "node_modules/jest-resolve/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==", + "peer": true + }, + "node_modules/jest-resolve/node_modules/has-flag": { "version": "4.0.0", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^7.1.1" - }, + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm/node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" + "node_modules/jest-resolve/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": true, + "engines": { + "node": ">=8" + } }, - "node_modules/npm/node_modules/npm-package-arg": { - "version": "8.1.5", - "inBundle": true, - "license": "ISC", + "node_modules/jest-resolve/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==", + "peer": true, "dependencies": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm/node_modules/npm-packlist": { - "version": "2.2.2", - "inBundle": true, - "license": "ISC", + "node_modules/jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "peer": true, "dependencies": { - "glob": "^7.1.6", - "ignore-walk": "^3.0.3", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "npm-packlist": "bin/index.js" + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "6.1.1", - "inBundle": true, - "license": "ISC", + "node_modules/jest-runner/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==", + "peer": true, "dependencies": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^8.1.2", - "semver": "^7.3.4" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/npm-profile": { - "version": "5.0.4", - "inBundle": true, - "license": "ISC", + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { - "npm-registry-fetch": "^11.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "11.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/jest-runner/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==", + "peer": true, "dependencies": { - "make-fetch-happen": "^9.0.1", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" + "node": ">=7.0.0" } }, - "node_modules/npm/node_modules/npm-user-validate": { - "version": "1.0.1", - "inBundle": true, - "license": "BSD-2-Clause" - }, - "node_modules/npm/node_modules/npmlog": { - "version": "5.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } + "node_modules/jest-runner/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==", + "peer": true }, - "node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, + "node_modules/jest-runner/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==", + "peer": true, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm/node_modules/number-is-nan": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/jest-runner/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==", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/oauth-sign": { - "version": "0.9.0", - "inBundle": true, - "license": "Apache-2.0", + "node_modules/jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "peer": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + }, + "bin": { + "jest-runtime": "bin/jest-runtime.js" + }, "engines": { - "node": "*" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/object-assign": { - "version": "4.1.1", - "inBundle": true, - "license": "MIT", + "node_modules/jest-runtime/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==", + "peer": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/once": { - "version": "1.4.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/opener": { - "version": "1.5.2", - "inBundle": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" + "node": ">=8" } }, - "node_modules/npm/node_modules/p-map": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/jest-runtime/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==", + "peer": true, "dependencies": { - "aggregate-error": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/pacote": { - "version": "11.3.5", - "inBundle": true, - "license": "ISC", + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { - "@npmcli/git": "^2.1.0", - "@npmcli/installed-package-contents": "^1.0.6", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^1.8.2", - "cacache": "^15.0.5", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.3", - "mkdirp": "^1.0.3", - "npm-package-arg": "^8.0.1", - "npm-packlist": "^2.1.4", - "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^11.0.0", - "promise-retry": "^2.0.1", - "read-package-json-fast": "^2.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.0" - }, - "bin": { - "pacote": "lib/bin.js" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" - } - }, - "node_modules/npm/node_modules/parse-conflict-json": { - "version": "1.1.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "just-diff": "^3.0.1", - "just-diff-apply": "^3.0.0" - } - }, - "node_modules/npm/node_modules/path-is-absolute": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/performance-now": { - "version": "2.1.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/proc-log": { - "version": "1.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/promise-all-reject-late": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC", + }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm/node_modules/promise-call-limit": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node_modules/jest-runtime/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "node_modules/npm/node_modules/promise-inflight": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/promise-retry": { + "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", - "inBundle": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "peer": true, "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" + "node": ">=7.0.0" } }, - "node_modules/npm/node_modules/promzard": { - "version": "0.3.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "read": "1" - } + "node_modules/jest-runtime/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==", + "peer": true }, - "node_modules/npm/node_modules/psl": { - "version": "1.8.0", - "inBundle": true, - "license": "MIT" + "node_modules/jest-runtime/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "peer": true }, - "node_modules/npm/node_modules/punycode": { - "version": "2.1.1", - "inBundle": true, - "license": "MIT", + "node_modules/jest-runtime/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==", + "peer": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/npm/node_modules/qrcode-terminal": { - "version": "0.12.0", - "inBundle": true, - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" + "node_modules/jest-runtime/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/npm/node_modules/qs": { - "version": "6.5.2", - "inBundle": true, - "license": "BSD-3-Clause", + "node_modules/jest-runtime/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": true, "engines": { - "node": ">=0.6" + "node": ">=8" } }, - "node_modules/npm/node_modules/read": { - "version": "1.0.7", - "inBundle": true, - "license": "ISC", + "node_modules/jest-runtime/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "peer": true, "dependencies": { - "mute-stream": "~0.0.4" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=0.8" + "node": ">=8" } }, - "node_modules/npm/node_modules/read-cmd-shim": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/read-package-json": { - "version": "4.1.1", - "inBundle": true, - "license": "ISC", + "node_modules/jest-runtime/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==", + "peer": true, "dependencies": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm/node_modules/read-package-json-fast": { - "version": "2.0.3", - "inBundle": true, - "license": "ISC", + "node_modules/jest-runtime/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==", + "peer": true, "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm/node_modules/readable-stream": { - "version": "3.6.0", - "inBundle": true, - "license": "MIT", + "node_modules/jest-runtime/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "peer": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/npm/node_modules/readdir-scoped-modules": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC", + "node_modules/jest-runtime/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "peer": true, "dependencies": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" } }, - "node_modules/npm/node_modules/request": { - "version": "2.88.2", - "inBundle": true, - "license": "Apache-2.0", + "node_modules/jest-runtime/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "peer": true, "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" }, "engines": { - "node": ">= 6" + "node": ">=6" } }, - "node_modules/npm/node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "inBundle": true, - "license": "MIT", + "node_modules/jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "peer": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "@types/node": "*", + "graceful-fs": "^4.2.4" }, "engines": { - "node": ">= 0.12" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/request/node_modules/tough-cookie": { - "version": "2.5.0", - "inBundle": true, - "license": "BSD-3-Clause", + "node_modules/jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "peer": true, "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" }, "engines": { - "node": ">=0.8" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/retry": { - "version": "0.12.0", - "inBundle": true, - "license": "MIT", + "node_modules/jest-snapshot/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==", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">= 4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/rimraf": { - "version": "3.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { - "glob": "^7.1.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm/node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/safer-buffer": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/semver": { - "version": "7.3.5", - "inBundle": true, - "license": "ISC", + "node_modules/jest-snapshot/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==", + "peer": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" + "node": ">=7.0.0" } }, - "node_modules/npm/node_modules/set-blocking": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/signal-exit": { - "version": "3.0.3", - "inBundle": true, - "license": "ISC" + "node_modules/jest-snapshot/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==", + "peer": true }, - "node_modules/npm/node_modules/smart-buffer": { - "version": "4.2.0", - "inBundle": true, - "license": "MIT", + "node_modules/jest-snapshot/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==", + "peer": true, "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/socks": { - "version": "2.6.1", - "inBundle": true, - "license": "MIT", + "node_modules/jest-snapshot/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==", + "peer": true, "dependencies": { - "ip": "^1.1.5", - "smart-buffer": "^4.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "6.1.0", - "inBundle": true, - "license": "MIT", + "node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" }, "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/spdx-correct": { - "version": "3.1.1", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.3.0", - "inBundle": true, - "license": "CC-BY-3.0" - }, - "node_modules/npm/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/jest-util/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==", "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.10", - "inBundle": true, - "license": "CC0-1.0" - }, - "node_modules/npm/node_modules/sshpk": { - "version": "1.16.1", - "inBundle": true, - "license": "MIT", + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm/node_modules/ssri": { - "version": "8.0.1", - "inBundle": true, - "license": "ISC", + "node_modules/jest-util/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==", "dependencies": { - "minipass": "^3.1.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 8" + "node": ">=7.0.0" } }, - "node_modules/npm/node_modules/string_decoder": { - "version": "1.3.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" + "node_modules/jest-util/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==" + }, + "node_modules/jest-util/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==", + "engines": { + "node": ">=8" } }, - "node_modules/npm/node_modules/string-width": { - "version": "2.1.1", - "inBundle": true, - "license": "MIT", + "node_modules/jest-util/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==", "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/npm/node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "peer": true, + "dependencies": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, "engines": { - "node": ">=4" + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/jest-validate/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==", + "peer": true, "dependencies": { - "ansi-regex": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/stringify-package": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/strip-ansi": { - "version": "3.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/supports-color": { - "version": "7.2.0", - "inBundle": true, - "license": "MIT", + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm/node_modules/tar": { - "version": "6.1.11", - "inBundle": true, - "license": "ISC", + "node_modules/jest-validate/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==", + "peer": true, "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 10" + "node": ">=7.0.0" } }, - "node_modules/npm/node_modules/text-table": { - "version": "0.2.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/tiny-relative-date": { - "version": "1.3.0", - "inBundle": true, - "license": "MIT" + "node_modules/jest-validate/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==", + "peer": true }, - "node_modules/npm/node_modules/treeverse": { - "version": "1.0.4", - "inBundle": true, - "license": "ISC" + "node_modules/jest-validate/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==", + "peer": true, + "engines": { + "node": ">=8" + } }, - "node_modules/npm/node_modules/tunnel-agent": { - "version": "0.6.0", - "inBundle": true, - "license": "Apache-2.0", + "node_modules/jest-validate/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==", + "peer": true, "dependencies": { - "safe-buffer": "^5.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/npm/node_modules/tweetnacl": { - "version": "0.14.5", - "inBundle": true, - "license": "Unlicense" - }, - "node_modules/npm/node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "inBundle": true, - "license": "MIT", + "node_modules/jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "peer": true, "dependencies": { - "is-typedarray": "^1.0.0" + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + }, + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/npm/node_modules/unique-filename": { - "version": "1.1.1", - "inBundle": true, - "license": "ISC", + "node_modules/jest-watcher/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==", + "peer": true, "dependencies": { - "unique-slug": "^2.0.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/unique-slug": { - "version": "2.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { - "imurmurhash": "^0.1.4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm/node_modules/uri-js": { - "version": "4.4.1", - "inBundle": true, - "license": "BSD-2-Clause", + "node_modules/jest-watcher/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==", + "peer": true, "dependencies": { - "punycode": "^2.1.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/npm/node_modules/util-deprecate": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" + "node_modules/jest-watcher/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==", + "peer": true }, - "node_modules/npm/node_modules/uuid": { - "version": "3.4.0", - "inBundle": true, - "license": "MIT", - "bin": { - "uuid": "bin/uuid" + "node_modules/jest-watcher/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==", + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/npm/node_modules/validate-npm-package-license": { - "version": "3.0.4", - "inBundle": true, - "license": "Apache-2.0", + "node_modules/jest-watcher/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==", + "peer": true, "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "peer": true, "dependencies": { - "builtins": "^1.0.3" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" } }, - "node_modules/npm/node_modules/verror": { - "version": "1.10.0", - "engines": [ - "node >=0.6.0" - ], - "inBundle": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/npm/node_modules/walk-up-path": { - "version": "1.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/wcwidth": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" + "node_modules/jest-worker/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==", + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/npm/node_modules/which": { - "version": "2.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/jest-worker/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==", + "peer": true, "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/npm/node_modules/wide-align": { - "version": "1.1.3", - "inBundle": true, - "license": "ISC", + "node_modules/joi": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", "dependencies": { - "string-width": "^1.0.2 || 2" + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" } }, - "node_modules/npm/node_modules/wrappy": { - "version": "1.0.2", - "inBundle": true, - "license": "ISC" + "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==" }, - "node_modules/npm/node_modules/write-file-atomic": { - "version": "3.0.3", - "inBundle": true, - "license": "ISC", + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "peer": true, "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/npm/node_modules/yallist": { - "version": "4.0.0", - "inBundle": true, - "license": "ISC" + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "peer": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "node_modules/jsdom/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, "engines": { - "node": "*" + "node": ">= 6" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/jsdom/node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "peer": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "node_modules/jsdom/node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "peer": true, "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "punycode": "^2.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=10.4" } }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "node_modules/jsdom/node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "peer": true + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "peer": true, "dependencies": { - "kind-of": "^3.0.2" + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "node_modules/jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "peer": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "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==" + }, + "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=" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", "dependencies": { - "kind-of": "^3.0.2" + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4", + "npm": ">=1.4.28" } }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.6.0" } }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "node_modules/just-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", + "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==" + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", @@ -10947,4609 +11463,10681 @@ "node": ">=0.10.0" } }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/koa-body": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/koa-body/-/koa-body-4.2.0.tgz", + "integrity": "sha512-wdGu7b9amk4Fnk/ytH8GuWwfs4fsB5iNkY8kZPpgQVb04QZSv85T0M8reb+cJmvLE8cjPYvBzRikD3s6qz8OoA==", + "dependencies": { + "@types/formidable": "^1.0.31", + "co-body": "^5.1.1", + "formidable": "^1.1.1" } }, - "node_modules/object-keys": { + "node_modules/last-run": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-path": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", - "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", - "engines": { - "node": ">= 10.12.0" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", "dependencies": { - "isobject": "^3.0.0" + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" + "readable-stream": "^2.0.5" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.6.3" } }, - "node_modules/object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" + "invert-kv": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", - "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", + "node_modules/lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", "dependencies": { - "array.prototype.reduce": "^1.0.4", - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.1" + "flush-write-stream": "^1.0.2" }, "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.10" } }, - "node_modules/object.getownpropertydescriptors/node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "peer": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "peer": true, "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "node_modules/liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", "dependencies": { - "isobject": "^3.0.1" + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "node_modules/liftoff/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "isobject": "^3.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "peer": true + }, + "node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dependencies": { - "ee-first": "1.1.1" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" + "node": ">=0.10.0" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/load-json-file/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dependencies": { - "mimic-fn": "^2.1.0" + "error-ex": "^1.2.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optimism": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.1.tgz", - "integrity": "sha512-64i+Uw3otrndfq5kaoGNoY7pvOhSsjFEN4bdEFh80MWVk/dbgJfMv7VFDeCT8LxNAlEVhQmdVEbfE7X2nWNIIg==", - "dependencies": { - "@wry/context": "^0.6.0", - "@wry/trie": "^0.3.0" - } - }, - "node_modules/ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "dependencies": { - "readable-stream": "^2.0.1" + "node": ">=0.10.0" } }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "node_modules/load-json-file/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "engines": { "node": ">=0.10.0" } }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dependencies": { - "lcid": "^1.0.0" + "is-utf8": "^0.2.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-event": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", - "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dependencies": { - "p-timeout": "^3.1.0" + "p-locate": "^4.1.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "engines": { - "node": ">=4" - } + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" + }, + "node_modules/loglevel": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", + "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", "engines": { - "node": ">=6" + "node": ">= 0.6.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" } }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dependencies": { - "p-limit": "^2.2.0" + "js-tokens": "^3.0.0 || ^4.0.0" }, - "engines": { - "node": ">=8" + "bin": { + "loose-envify": "cli.js" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "node_modules/loupe": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", + "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", "dependencies": { - "aggregate-error": "^3.0.0" + "get-func-name": "^2.0.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "peer": true, "dependencies": { - "p-finally": "^1.0.0" + "semver": "^6.0.0" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "peer": true, + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/paged-request": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/paged-request/-/paged-request-1.0.2.tgz", - "integrity": "sha512-2NXKpT0pWoVo31LQhGOfsqD8wViifq6Ml28H8WrqY0GbMvltvpDPx1YZ6jMeVXNbywjECdEhmC2/uFFS1MdMFQ==", - "dependencies": { - "needle": "^2.1.1" - }, - "engines": { - "node": ">=8" - } + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, - "node_modules/parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "node_modules/make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" + "kind-of": "^6.0.2" }, "engines": { - "node": ">=0.8" + "node": ">=0.10.0" } }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, + "node_modules/make-iterator/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/parse-link-header": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-1.0.1.tgz", - "integrity": "sha512-Z0gpfHmwCIKDr5rRzjypL+p93aHVWO7e+0rFcUl9E3sC67njjs+xHFenuboSXZGlvYtmQqRzRaE3iFpTUnLmFQ==", + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "peer": true, "dependencies": { - "xtend": "~4.0.1" + "tmpl": "1.0.5" } }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, - "node_modules/parse-passwd": { + "node_modules/map-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dependencies": { + "object-visit": "^1.0.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "node_modules/matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dependencies": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, "engines": { - "node": ">= 0.8" + "node": ">= 0.10.0" } }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "node_modules/matchdep/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "node_modules/matchdep/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dependencies": { - "process": "^0.11.1", - "util": "^0.10.3" + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - }, - "node_modules/path-exists": { + "node_modules/matchdep/node_modules/fill-range": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "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=", + "node_modules/matchdep/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "node_modules/matchdep/node_modules/findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", "dependencies": { - "path-root-regex": "^0.1.0" + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "node_modules/matchdep/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "engines": { "node": ">=0.10.0" } }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "engines": { - "node": "*" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "engines": { - "node": ">=8.6" + "node_modules/matchdep/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dependencies": { + "is-extglob": "^2.1.0" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "engines": { - "node": ">=4" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "engines": { "node": ">=0.10.0" } }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "node_modules/matchdep/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dependencies": { - "pinkie": "^2.0.0" + "kind-of": "^3.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/matchdep/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dependencies": { - "find-up": "^4.0.0" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/platform": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", - "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "node_modules/matchdep/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { "node": ">=0.10.0" } }, - "node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "node_modules/matchdep/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, "engines": { - "node": ">= 10" - } - }, - "node_modules/pretty-format/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==", - "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/pretty-format/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==", + "node_modules/matchdep/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dependencies": { - "color-convert": "^2.0.1" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/pretty-format/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==", - "dependencies": { - "color-name": "~1.1.4" - }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "engines": { - "node": ">=7.0.0" + "node": ">= 0.6" } }, - "node_modules/pretty-format/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==" + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, - "node_modules/pretty-format/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "engines": { - "node": ">= 0.8" + "node": ">= 8" } }, - "node_modules/private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "engines": { "node": ">= 0.6" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "node_modules/micro": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/micro/-/micro-9.4.1.tgz", + "integrity": "sha512-Lpjcbp6Y9GJIfewxDfTmu9eW0rt0MGo+Gs1d3yJLFa7mhErtKkCngGhDbA/O1gqUjEwsHh+jWPg8BJ0Bx4AgFA==", + "dependencies": { + "arg": "4.1.0", + "content-type": "1.0.4", + "raw-body": "2.4.1" + }, + "bin": { + "micro": "bin/micro.js" + }, "engines": { - "node": ">= 0.6.0" + "node": ">= 8.0.0" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "node_modules/micro/node_modules/arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==" }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, "engines": { - "node": ">=0.4.0" + "node": ">=8.6" } }, - "node_modules/prompt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.2.0.tgz", - "integrity": "sha512-iGerYRpRUg5ZyC+FJ/25G5PUKuWAGRjW1uOlhX7Pi3O5YygdK6R+KEaBjRbHSkU5vfS5PZCltSPZdDtUYwRCZA==", + "node_modules/microtime": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/microtime/-/microtime-3.1.1.tgz", + "integrity": "sha512-to1r7o24cDsud9IhN6/8wGmMx5R2kT0w2Xwm5okbYI3d1dk6Xv0m+Z+jg2vS9pt+ocgQHTCtgs/YuyJhySzxNg==", + "hasInstallScript": true, "dependencies": { - "async": "~0.9.0", - "colors": "^1.1.2", - "read": "1.0.x", - "revalidator": "0.1.x", - "winston": "2.x" + "node-addon-api": "^5.0.0", + "node-gyp-build": "^4.4.0" }, "engines": { - "node": ">= 0.6.6" + "node": ">= 14.13.0" } }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "node_modules/migrate": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/migrate/-/migrate-1.8.0.tgz", + "integrity": "sha512-K18j+/k0M/MWjhAwxc6t5WST9G4yAdbUEy04Y7XcTiTf62QQPDcMKcoxj5lpMvWjRJPG0QEnm0UPlmMoM0bRRQ==", "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "chalk": "^2.4.2", + "commander": "^2.20.3", + "dateformat": "^3.0.3", + "dotenv": "^16.0.0", + "inherits": "^2.0.3", + "minimatch": "^5.0.1", + "mkdirp": "^0.5.1", + "slug": "^5.3.0" + }, + "bin": { + "migrate": "bin/migrate", + "migrate-create": "bin/migrate-create", + "migrate-down": "bin/migrate-down", + "migrate-init": "bin/migrate-init", + "migrate-list": "bin/migrate-list", + "migrate-up": "bin/migrate-up" + }, + "engines": { + "node": ">= 0.4.x" } }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "node_modules/migrate/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==", "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">= 0.10" + "node": ">=4" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" - }, - "node_modules/pump": { + "node_modules/migrate/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "balanced-match": "^1.0.0" } }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "node_modules/migrate/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==", "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "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==", + "node_modules/migrate/node_modules/dotenv": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", + "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==", "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/puppeteer": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-16.1.0.tgz", - "integrity": "sha512-lhykJLbH2bbBaP3NfYI2Vj0T4ctrdfVdEVf8glZITPnLfqrJ0nfUzAYuIz5YcA79k5lmFKANIhEXex+jQChU3g==", - "hasInstallScript": true, + "node_modules/migrate/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", "dependencies": { - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.1019158", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.8.1" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=14.1.0" + "node": ">=10" } }, - "node_modules/puppeteer/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/migrate/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==", "dependencies": { - "ms": "2.1.2" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=6.0" + "node": ">=4" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "engines": { + "node": ">=4" } }, - "node_modules/puppeteer/node_modules/ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "node": ">= 0.6" } }, - "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { - "side-channel": "^1.0.4" + "mime-db": "1.52.0" }, "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.6" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/raw-body": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", - "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.3", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.6" + "node": "*" } }, - "node_modules/raw-body/node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "node_modules/raw-body/node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "engines": { - "node": ">=0.6" - } + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, - "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/react-cookie": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/react-cookie/-/react-cookie-4.1.1.tgz", - "integrity": "sha512-ffn7Y7G4bXiFbnE+dKhHhbP+b8I34mH9jqnm8Llhj89zF4nPxPutxHT1suUqMeCEhLDBI7InYwf1tpaSoK5w8A==", + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { - "@types/hoist-non-react-statics": "^3.0.1", - "hoist-non-react-statics": "^3.0.0", - "universal-cookie": "^4.0.0" + "minimist": "^1.2.6" }, - "peerDependencies": { - "react": ">= 16.3.0" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" }, - "node_modules/read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "node_modules/moesif-nodejs": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/moesif-nodejs/-/moesif-nodejs-3.2.2.tgz", + "integrity": "sha512-XP8ocHg/27jiEEQQpu6nJl04/H7Ivg45oVwoyXie4dR7fdujHH+r2/8TwWgM27QIFdHsk84xQB7pYD5hJN/JLA==", "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" + "bytes": "^3.1.1", + "card-validator": "^8.1.1", + "content-type": "^1.0.4", + "crypto-js": "^4.1.1", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "koa-body": "^4.2.0", + "lodash": "^4.17.19", + "moesifapi": "^2.0.10", + "raw-body": "^2.4.2", + "request-ip": "^2.1.3", + "uuid4": "^2.0.2" } }, - "node_modules/read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", - "dependencies": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - }, + "node_modules/moesif-nodejs/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "engines": { - "node": ">=6" + "node": ">= 0.8" } }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "node_modules/moesif-nodejs/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" } }, - "node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/moesif-nodejs/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dependencies": { - "safe-buffer": "~5.1.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/moesif-nodejs/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { - "picomatch": "^2.2.1" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=8.10.0" + "node": ">=0.10.0" } }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "node_modules/moesif-nodejs/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dependencies": { - "resolve": "^1.1.6" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.8" } }, - "node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "node_modules/moesif-nodejs/node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, + "node_modules/moesif-nodejs/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "node_modules/moesifapi": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/moesifapi/-/moesifapi-2.0.10.tgz", + "integrity": "sha512-ulN9tNqxEcjH3YMoelBOkIkSN3D2qF+qzNpvG7bhtUmGWP+/bHyBP24EtuGX30VAA+3jHL9XNin28RD8teriFA==", "dependencies": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" + "request": "^2.88.0" } }, - "node_modules/remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", - "dependencies": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - }, + "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==" + }, + "node_modules/mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", "engines": { "node": ">= 0.10" } }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "engines": { - "node": ">=0.10.0" - } + "node_modules/nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "optional": true }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, "engines": { - "node": ">=0.10" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "dependencies": { - "is-finite": "^1.0.0" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, - "node_modules/replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", - "dependencies": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "peer": true }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "node_modules/needle": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", + "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" }, "engines": { - "node": ">= 6" + "node": ">= 4.4.x" } }, - "node_modules/request-ip": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-2.2.0.tgz", - "integrity": "sha512-Hn4zUAr+XHbUs2RrfHur62t7+UhvtevqK32ordFewguEfNHUkhSdYgbG7PDGmXZEzqEXll9bei0+VMe6gkmuUQ==", + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dependencies": { - "is_js": "^0.9.0" + "ms": "^2.1.1" } }, - "node_modules/request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "engines": { - "node": ">=0.6" + "node": ">= 0.6" } }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "node_modules/next": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/next/-/next-12.2.5.tgz", + "integrity": "sha512-tBdjqX5XC/oFs/6gxrZhjmiq90YWizUYU6qOWAfat7zJwrwapJ+BYgX2PmiacunXMaRpeVT4vz5MSPSLgNkrpA==", + "peer": true, + "dependencies": { + "@next/env": "12.2.5", + "@swc/helpers": "0.4.3", + "caniuse-lite": "^1.0.30001332", + "postcss": "8.4.14", + "styled-jsx": "5.0.4", + "use-sync-external-store": "1.2.0" + }, "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "next": "dist/bin/next" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12.22.0" + }, + "optionalDependencies": { + "@next/swc-android-arm-eabi": "12.2.5", + "@next/swc-android-arm64": "12.2.5", + "@next/swc-darwin-arm64": "12.2.5", + "@next/swc-darwin-x64": "12.2.5", + "@next/swc-freebsd-x64": "12.2.5", + "@next/swc-linux-arm-gnueabihf": "12.2.5", + "@next/swc-linux-arm64-gnu": "12.2.5", + "@next/swc-linux-arm64-musl": "12.2.5", + "@next/swc-linux-x64-gnu": "12.2.5", + "@next/swc-linux-x64-musl": "12.2.5", + "@next/swc-win32-arm64-msvc": "12.2.5", + "@next/swc-win32-ia32-msvc": "12.2.5", + "@next/swc-win32-x64-msvc": "12.2.5" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^6.0.0 || ^7.0.0", + "react": "^17.0.2 || ^18.0.0-0", + "react-dom": "^17.0.2 || ^18.0.0-0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + } } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "node_modules/requires-port": { + "node_modules/next-tick": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "peer": true }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "node_modules/node-addon-api": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", + "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==" + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "node_modules/node-gyp-build": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "peer": true + }, + "node_modules/node-notifier": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", + "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", + "optional": true, + "peer": true, "dependencies": { - "value-or-function": "^3.0.0" - }, - "engines": { - "node": ">= 0.10" + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated" + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "peer": true }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "node_modules/nodemon": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", + "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", + "hasInstallScript": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, "engines": { - "node": ">=0.12" + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" } }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/revalidator": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", - "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "ms": "^2.1.1" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" + "node_modules/nodemon/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" } }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "node_modules/nodemon/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==", "dependencies": { - "tslib": "^1.9.0" + "has-flag": "^3.0.0" }, "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "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==" - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dependencies": { - "ret": "~0.1.10" + "node": ">=4" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", "dependencies": { - "lru-cache": "^6.0.0" + "abbrev": "1" }, "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", - "dependencies": { - "sver-compat": "^1.5.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "nopt": "bin/nopt.js" }, "engines": { - "node": ">= 0.8.0" + "node": "*" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dependencies": { - "ms": "2.0.0" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" } }, - "node_modules/send/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/send/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/normalize-url": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-7.0.3.tgz", + "integrity": "sha512-RiCOdwdPnzvwcBFJE4iI1ss3dMVRIrEzFpn8ftje6iBfzBInqlnRrNhxcLwBEKjPPXQKzm1Ptlxtaiv9wdcj5w==", "engines": { - "node": ">= 0.8" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" + "node": ">=12.20" }, - "engines": { - "node": ">= 0.8.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "node_modules/set-value": { + "node_modules/now-and-later": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "once": "^1.3.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "node_modules/npm": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-7.24.2.tgz", + "integrity": "sha512-120p116CE8VMMZ+hk8IAb1inCPk4Dj3VZw29/n2g6UI77urJKVYb7FZUDW8hY+EBnfsjI/2yrobBgFyzo7YpVQ==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/ci-detect", + "@npmcli/config", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/run-script", + "abbrev", + "ansicolors", + "ansistyles", + "archy", + "cacache", + "chalk", + "chownr", + "cli-columns", + "cli-table3", + "columnify", + "fastest-levenshtein", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minipass", + "minipass-pipeline", + "mkdirp", + "mkdirp-infer-owner", + "ms", + "node-gyp", + "nopt", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "npmlog", + "opener", + "pacote", + "parse-conflict-json", + "qrcode-terminal", + "read", + "read-package-json", + "read-package-json-fast", + "readdir-scoped-modules", + "rimraf", + "semver", + "ssri", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "@isaacs/string-locale-compare": "*", + "@npmcli/arborist": "*", + "@npmcli/ci-detect": "*", + "@npmcli/config": "*", + "@npmcli/map-workspaces": "*", + "@npmcli/package-json": "*", + "@npmcli/run-script": "*", + "abbrev": "*", + "ansicolors": "*", + "ansistyles": "*", + "archy": "*", + "cacache": "*", + "chalk": "*", + "chownr": "*", + "cli-columns": "*", + "cli-table3": "*", + "columnify": "*", + "fastest-levenshtein": "*", + "glob": "*", + "graceful-fs": "*", + "hosted-git-info": "*", + "ini": "*", + "init-package-json": "*", + "is-cidr": "*", + "json-parse-even-better-errors": "*", + "libnpmaccess": "*", + "libnpmdiff": "*", + "libnpmexec": "*", + "libnpmfund": "*", + "libnpmhook": "*", + "libnpmorg": "*", + "libnpmpack": "*", + "libnpmpublish": "*", + "libnpmsearch": "*", + "libnpmteam": "*", + "libnpmversion": "*", + "make-fetch-happen": "*", + "minipass": "*", + "minipass-pipeline": "*", + "mkdirp": "*", + "mkdirp-infer-owner": "*", + "ms": "*", + "node-gyp": "*", + "nopt": "*", + "npm-audit-report": "*", + "npm-install-checks": "*", + "npm-package-arg": "*", + "npm-pick-manifest": "*", + "npm-profile": "*", + "npm-registry-fetch": "*", + "npm-user-validate": "*", + "npmlog": "*", + "opener": "*", + "pacote": "*", + "parse-conflict-json": "*", + "qrcode-terminal": "*", + "read": "*", + "read-package-json": "*", + "read-package-json-fast": "*", + "readdir-scoped-modules": "*", + "rimraf": "*", + "semver": "*", + "ssri": "*", + "tar": "*", + "text-table": "*", + "tiny-relative-date": "*", + "treeverse": "*", + "validate-npm-package-name": "*", + "which": "*", + "write-file-atomic": "*" }, "bin": { - "sha.js": "bin.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==", - "dependencies": { - "shebang-regex": "^3.0.0" + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" }, "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==", - "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/shell-env": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/shell-env/-/shell-env-0.3.0.tgz", - "integrity": "sha512-VrC6OSm5riGAFWvlYExA80Rrlfi4STsztNXjyet9Jf20hbiVeeKvJIesb92gJk7zlmpQjB0wOZpy8ClzVdPVWQ==", + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dependencies": { - "default-shell": "^1.0.0", - "execa": "^0.5.0", - "strip-ansi": "^3.0.0" + "path-key": "^2.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/shell-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/shell-path/-/shell-path-2.1.0.tgz", - "integrity": "sha512-w+mbrnpA+r5jSFS4MgFfxZJ1Wx8qMKkR4gvQ+wgaZEoZCMMYZ6Yl/dcNjW/zLMfmx5a9IVIFwGAtUJcnDMmFrg==", - "dependencies": { - "shell-env": "^0.3.0" - }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "engines": { "node": ">=4" } }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/npm/node_modules/@gar/promisify": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT" }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" }, - "node_modules/simple-git": { - "version": "2.47.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.47.0.tgz", - "integrity": "sha512-+HfCpqPBEZTPWiW9fPdbiPJDslM22MLqrktfzNKyI2pWaJa6DhfNVx4Mds04KZzVv5vjC9/ksw3y5gVf8ECWDg==", + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "2.9.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "@kwsites/file-exists": "^1.1.1", - "@kwsites/promise-deferred": "^1.1.1", - "debug": "^4.3.2" - } - }, - "node_modules/simple-update-notifier": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", - "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", - "dependencies": { - "semver": "~7.0.0" + "@isaacs/string-locale-compare": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^1.0.2", + "@npmcli/metavuln-calculator": "^1.1.0", + "@npmcli/move-file": "^1.1.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^1.0.1", + "@npmcli/package-json": "^1.0.1", + "@npmcli/run-script": "^1.8.2", + "bin-links": "^2.2.1", + "cacache": "^15.0.3", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.1.5", + "npm-pick-manifest": "^6.1.0", + "npm-registry-fetch": "^11.0.0", + "pacote": "^11.3.5", + "parse-conflict-json": "^1.1.1", + "proc-log": "^1.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "ssri": "^8.0.1", + "treeverse": "^1.0.4", + "walk-up-path": "^1.0.0" }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "arborist": "bin/index.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/slug": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/slug/-/slug-5.3.0.tgz", - "integrity": "sha512-h7yD2UDVyMcQRv/WLSjq7HDH6ToO/22MB381zfx6/ebtdWUlGcyxpJNVHl6WFvKjIMHf5ZxANFp/srsy4mfT/w==" + "node_modules/npm/node_modules/@npmcli/ci-detect": { + "version": "1.3.0", + "inBundle": true, + "license": "ISC" }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "node_modules/npm/node_modules/@npmcli/config": { + "version": "2.3.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" + "ini": "^2.0.0", + "mkdirp-infer-owner": "^2.0.0", + "nopt": "^5.0.0", + "semver": "^7.3.4", + "walk-up-path": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "node_modules/npm/node_modules/@npmcli/disparity-colors": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "ansi-styles": "^4.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/snapdragon-node/node_modules/define-property": { + "node_modules/npm/node_modules/@npmcli/fs": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "inBundle": true, + "license": "ISC", "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" } }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "node_modules/npm/node_modules/@npmcli/git": { + "version": "2.1.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" } }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "inBundle": true, + "license": "ISC", "dependencies": { - "is-buffer": "^1.1.5" + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" + "node": ">= 10" } }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "1.0.4", + "inBundle": true, + "license": "ISC", "dependencies": { - "is-descriptor": "^0.1.0" + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^7.1.6", + "minimatch": "^3.0.4", + "read-package-json-fast": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "cacache": "^15.0.5", + "pacote": "^11.1.11", + "semver": "^7.3.2" } }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "node_modules/npm/node_modules/@npmcli/move-file": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "json-parse-even-better-errors": "^2.3.1" } }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "1.3.2", + "inBundle": true, + "license": "ISC", "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" + "infer-owner": "^1.0.4" } }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "1.8.6", + "inBundle": true, + "license": "ISC", "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^7.1.0", + "read-package-json-fast": "^2.0.1" } }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, + "node_modules/npm/node_modules/@tootallnate/once": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "node_modules/npm/node_modules/abbrev": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/agent-base": { + "version": "6.0.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 6.0.0" } }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "node_modules/npm/node_modules/agentkeepalive": { + "version": "4.1.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8.0.0" } }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "node_modules/npm/node_modules/ajv": { + "version": "6.12.6", + "inBundle": true, + "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "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/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/npm/node_modules/ansi-regex": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated" - }, - "node_modules/sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "node_modules/npm/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">= 0.10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/spawn-args": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/spawn-args/-/spawn-args-0.2.0.tgz", - "integrity": "sha1-+30L0dcP1DFr2ePew4nmX51jYbs=" + "node_modules/npm/node_modules/ansicolors": { + "version": "0.3.2", + "inBundle": true, + "license": "MIT" }, - "node_modules/spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=" + "node_modules/npm/node_modules/ansistyles": { + "version": "0.1.3", + "inBundle": true, + "license": "MIT" }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "node_modules/npm/node_modules/are-we-there-yet": { + "version": "1.1.6", + "inBundle": true, + "license": "ISC", "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", - "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==" + "node_modules/npm/node_modules/asap": { + "version": "2.0.6", + "inBundle": true, + "license": "MIT" }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "node_modules/npm/node_modules/asn1": { + "version": "0.2.4", + "inBundle": true, + "license": "MIT", "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" + "safer-buffer": "~2.1.0" } }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, + "node_modules/npm/node_modules/assert-plus": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.8" } }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "node_modules/npm/node_modules/asynckit": { + "version": "0.4.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/aws-sign2": { + "version": "0.7.0", + "inBundle": true, + "license": "Apache-2.0", "engines": { "node": "*" } }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "node_modules/npm/node_modules/aws4": { + "version": "1.11.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "inBundle": true, + "license": "BSD-3-Clause", "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "tweetnacl": "^0.14.3" } }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/npm/node_modules/bin-links": { + "version": "2.2.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "is-descriptor": "^0.1.0" + "cmd-shim": "^4.0.1", + "mkdirp": "^1.0.3", + "npm-normalize-package-bin": "^1.0.0", + "read-cmd-shim": "^2.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^3.0.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dependencies": { - "kind-of": "^3.0.2" - }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/npm/node_modules/brace-expansion": { + "version": "1.1.11", + "inBundle": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "node_modules/npm/node_modules/builtins": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/cacache": { + "version": "15.3.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "kind-of": "^3.0.2" + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/npm/node_modules/caseless": { + "version": "0.12.0", + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/npm/node_modules/chalk": { + "version": "4.1.2", + "inBundle": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "3.1.1", + "inBundle": true, + "license": "BSD-2-Clause", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "ip-regex": "^4.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/stoppable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", - "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", + "node_modules/npm/node_modules/cli-columns": { + "version": "3.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^2.0.0", + "strip-ansi": "^3.0.1" + }, "engines": { - "node": ">=4", - "npm": ">=6" + "node": ">= 4" } }, - "node_modules/stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" + "node_modules/npm/node_modules/cli-table3": { + "version": "0.6.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "node_modules/npm/node_modules/cli-table3/node_modules/ansi-regex": { + "version": "5.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA==", + "node_modules/npm/node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/npm/node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.2", + "inBundle": true, + "license": "MIT", "dependencies": { - "safe-buffer": "~5.2.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "node_modules/npm/node_modules/cli-table3/node_modules/strip-ansi": { + "version": "6.0.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "ansi-regex": "^5.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "node_modules/npm/node_modules/clone": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.8" } }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/npm/node_modules/cmd-shim": { + "version": "4.1.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^4.1.0" + "mkdirp-infer-owner": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "node_modules/npm/node_modules/code-point-at": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "color-name": "~1.1.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/string.prototype.trimend/node_modules/define-properties": { + "node_modules/npm/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/color-support": { + "version": "1.1.3", + "inBundle": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/npm/node_modules/colors": { + "version": "1.4.0", + "inBundle": true, + "license": "MIT", + "optional": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.1.90" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "node_modules/npm/node_modules/columnify": { + "version": "1.5.4", + "inBundle": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" } }, - "node_modules/string.prototype.trimstart/node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "node_modules/npm/node_modules/combined-stream": { + "version": "1.0.8", + "inBundle": true, + "license": "MIT", "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/concat-map": { + "version": "0.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/console-control-strings": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/core-util-is": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/dashdash": { + "version": "1.14.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "assert-plus": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.10" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "node_modules/npm/node_modules/debug": { + "version": "4.3.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/debuglog": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/subscriptions-transport-ws": { - "version": "0.9.19", - "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz", - "integrity": "sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw==", - "deprecated": "The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md", + "node_modules/npm/node_modules/defaults": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", "dependencies": { - "backo2": "^1.0.2", - "eventemitter3": "^3.1.0", - "iterall": "^1.2.1", - "symbol-observable": "^1.0.4", - "ws": "^5.2.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependencies": { - "graphql": ">=0.10.0" + "clone": "^1.0.2" } }, - "node_modules/subscriptions-transport-ws/node_modules/symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "node_modules/npm/node_modules/delayed-stream": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.4.0" } }, - "node_modules/supports-color": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz", - "integrity": "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==", + "node_modules/npm/node_modules/delegates": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/depd": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">= 0.6" } }, - "node_modules/sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "node_modules/npm/node_modules/dezalgo": { + "version": "1.0.3", + "inBundle": true, + "license": "ISC", "dependencies": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" + "asap": "^2.0.0", + "wrappy": "1" } }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "node_modules/npm/node_modules/diff": { + "version": "5.0.0", + "inBundle": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=0.10" + "node": ">=0.3.1" } }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "node_modules/npm/node_modules/ecc-jsbn": { + "version": "0.1.2", + "inBundle": true, + "license": "MIT", "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/tar-fs/node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "inBundle": true, + "license": "MIT", + "optional": true, "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "iconv-lite": "^0.6.2" } }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "inBundle": true, + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "inBundle": true, + "license": "MIT" }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + "node_modules/npm/node_modules/extend": { + "version": "3.0.2", + "inBundle": true, + "license": "MIT" }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } + "node_modules/npm/node_modules/extsprintf": { + "version": "1.3.0", + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT" }, - "node_modules/through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } + "node_modules/npm/node_modules/fast-deep-equal": { + "version": "3.1.3", + "inBundle": true, + "license": "MIT" }, - "node_modules/time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "node_modules/npm/node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.12", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/forever-agent": { + "version": "0.6.1", + "inBundle": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/timeout-as-promise": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/timeout-as-promise/-/timeout-as-promise-1.0.0.tgz", - "integrity": "sha1-c2foEfyZKs/Nzaq/LlDfr4shV28=" - }, - "node_modules/to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "node_modules/npm/node_modules/fs-minipass": { + "version": "2.1.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", - "engines": { - "node": ">=0.10.0" - } + "node_modules/npm/node_modules/fs.realpath": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC" }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "node_modules/npm/node_modules/function-bind": { + "version": "1.1.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/gauge": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "kind-of": "^3.0.2" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1 || ^2.0.0", + "strip-ansi": "^3.0.1 || ^4.0.0", + "wide-align": "^1.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/npm/node_modules/getpass": { + "version": "0.1.7", + "inBundle": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "assert-plus": "^1.0.0" } }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "node_modules/npm/node_modules/glob": { + "version": "7.2.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.8", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/har-schema": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/har-validator": { + "version": "5.1.5", + "inBundle": true, + "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "ajv": "^6.12.3", + "har-schema": "^2.0.0" }, "engines": { - "node": ">=8.0" + "node": ">=6" } }, - "node_modules/to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "node_modules/npm/node_modules/has": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", "dependencies": { - "through2": "^2.0.3" + "function-bind": "^1.1.1" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4.0" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "node_modules/npm/node_modules/has-flag": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.6" + "node": ">=8" } }, - "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "4.0.2", + "inBundle": true, + "license": "ISC", "dependencies": { - "nopt": "~1.0.10" + "lru-cache": "^6.0.0" }, - "bin": { - "nodetouch": "bin/nodetouch.js" + "engines": { + "node": ">=10" } }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.0", + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "4.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=0.8" + "node": ">= 6" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", + "node_modules/npm/node_modules/http-signature": { + "version": "1.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8", + "npm": ">=1.3.7" } }, - "node_modules/ts-invariant": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", - "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "5.0.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "tslib": "^2.1.0" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/ts-jest": { - "version": "26.5.6", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.6.tgz", - "integrity": "sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==", + "node_modules/npm/node_modules/humanize-ms": { + "version": "1.2.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "bs-logger": "0.x", - "buffer-from": "1.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^26.1.0", - "json5": "2.x", - "lodash": "4.x", - "make-error": "1.x", - "mkdirp": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "jest": ">=26 <27", - "typescript": ">=3.8 <5.0" + "ms": "^2.0.0" } }, - "node_modules/ts-jest/node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "bin": { - "json5": "lib/cli.js" + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/ts-jest/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" + "node_modules/npm/node_modules/ignore-walk": { + "version": "3.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^3.0.4" } }, - "node_modules/ts-jest/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.8.19" } }, - "node_modules/ts-node": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", - "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", - "dependencies": { - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "typescript": ">=2.7" + "node": ">=8" } }, - "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "node_modules/npm/node_modules/infer-owner": { + "version": "1.0.4", + "inBundle": true, + "license": "ISC" }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "node_modules/npm/node_modules/inflight": { + "version": "1.0.6", + "inBundle": true, + "license": "ISC", "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + "node_modules/npm/node_modules/inherits": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC" }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "node_modules/npm/node_modules/ini": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "node_modules/npm/node_modules/init-package-json": { + "version": "2.0.5", + "inBundle": true, + "license": "ISC", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "npm-package-arg": "^8.1.5", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "^4.1.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "node_modules/npm/node_modules/ip": { + "version": "1.1.5", + "inBundle": true, + "license": "MIT" }, - "node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, + "node_modules/npm/node_modules/ip-regex": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=4.2.0" + "node": ">=8" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "node_modules/npm/node_modules/is-cidr": { + "version": "4.0.2", + "inBundle": true, + "license": "BSD-2-Clause", "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "cidr-regex": "^3.1.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10" } }, - "node_modules/unbox-primitive/node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" + "node_modules/npm/node_modules/is-core-module": { + "version": "2.7.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/unbzip2-stream/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT" }, - "node_modules/unc-path-regex": { + "node_modules/npm/node_modules/is-typedarray": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/isstream": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + "node_modules/npm/node_modules/jsbn": { + "version": "0.1.1", + "inBundle": true, + "license": "MIT" }, - "node_modules/undertaker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", - "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", - "dependencies": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "inBundle": true, + "license": "MIT" }, - "node_modules/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", - "engines": { - "node": ">= 0.10" - } + "node_modules/npm/node_modules/json-schema": { + "version": "0.2.3", + "inBundle": true }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/npm/node_modules/json-schema-traverse": { + "version": "0.4.1", + "inBundle": true, + "license": "MIT" }, - "node_modules/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/uniqid": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.4.0.tgz", - "integrity": "sha512-38JRbJ4Fj94VmnC7G/J/5n5SC7Ab46OM5iNtSstB/ko3l1b5g7ALt4qzHFgGciFkyiRNtDXtLNb+VsxtMSE77A==" + "node_modules/npm/node_modules/json-stringify-safe": { + "version": "5.0.1", + "inBundle": true, + "license": "ISC" }, - "node_modules/unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dependencies": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" }, - "node_modules/universal-cookie": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-4.0.4.tgz", - "integrity": "sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw==", + "node_modules/npm/node_modules/jsprim": { + "version": "1.4.1", + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT", "dependencies": { - "@types/cookie": "^0.3.3", - "cookie": "^0.4.0" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" } }, - "node_modules/universal-cookie/node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" - } + "node_modules/npm/node_modules/just-diff": { + "version": "3.1.1", + "inBundle": true, + "license": "MIT" }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } + "node_modules/npm/node_modules/just-diff-apply": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT" }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "node_modules/npm/node_modules/libnpmaccess": { + "version": "4.0.3", + "inBundle": true, + "license": "ISC", "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "node_modules/npm/node_modules/libnpmdiff": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC", "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" + "@npmcli/disparity-colors": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "binary-extensions": "^2.2.0", + "diff": "^5.0.0", + "minimatch": "^3.0.4", + "npm-package-arg": "^8.1.4", + "pacote": "^11.3.4", + "tar": "^6.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "node_modules/npm/node_modules/libnpmexec": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "isarray": "1.0.0" + "@npmcli/arborist": "^2.3.0", + "@npmcli/ci-detect": "^1.3.0", + "@npmcli/run-script": "^1.8.4", + "chalk": "^4.1.0", + "mkdirp-infer-owner": "^2.0.0", + "npm-package-arg": "^8.1.2", + "pacote": "^11.3.1", + "proc-log": "^1.0.0", + "read": "^1.0.7", + "read-package-json-fast": "^2.0.2", + "walk-up-path": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "engines": { - "node": ">=0.10.0" + "node_modules/npm/node_modules/libnpmfund": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^2.5.0" } }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "node_modules/npm/node_modules/libnpmhook": { + "version": "6.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, "engines": { - "node": ">=4", - "yarn": "*" + "node": ">=10" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "node_modules/npm/node_modules/libnpmorg": { + "version": "2.0.3", + "inBundle": true, + "license": "ISC", "dependencies": { - "punycode": "^2.1.0" + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated" - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "node_modules/npm/node_modules/libnpmpack": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/run-script": "^1.8.3", + "npm-package-arg": "^8.1.0", + "pacote": "^11.2.6" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "node_modules/npm/node_modules/libnpmpublish": { + "version": "4.0.2", + "inBundle": true, + "license": "ISC", "dependencies": { - "inherits": "2.0.3" + "normalize-package-data": "^3.0.2", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0", + "semver": "^7.1.3", + "ssri": "^8.0.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/util.promisify": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", - "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", + "node_modules/npm/node_modules/libnpmsearch": { + "version": "3.1.2", + "inBundle": true, + "license": "ISC", "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "for-each": "^0.3.3", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.1" + "npm-registry-fetch": "^11.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10" } }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "node_modules/npm/node_modules/libnpmteam": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, "engines": { - "node": ">= 0.4.0" + "node": ">=10" } }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/npm/node_modules/libnpmversion": { + "version": "1.2.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^2.0.7", + "@npmcli/run-script": "^1.8.4", + "json-parse-even-better-errors": "^2.3.1", + "semver": "^7.3.5", + "stringify-package": "^1.0.1" } }, - "node_modules/uuid4": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid4/-/uuid4-2.0.3.tgz", - "integrity": "sha512-CTpAkEVXMNJl2ojgtpLXHgz23dh8z81u6/HEPiQFOvBc/c2pde6TVHmH4uwY0d/GLF3tb7+VDAj4+2eJaQSdZQ==" - }, - "node_modules/v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "node_modules/npm/node_modules/lru-cache": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "homedir-polyfill": "^1.0.1" + "yallist": "^4.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=10" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "9.1.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" } }, - "node_modules/value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "node_modules/npm/node_modules/mime-db": { + "version": "1.49.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 0.6" } }, - "node_modules/value-or-promise": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", - "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", + "node_modules/npm/node_modules/mime-types": { + "version": "2.1.32", + "inBundle": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.49.0" + }, "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "node_modules/npm/node_modules/minimatch": { + "version": "3.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">= 0.8" + "node": "*" } }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "engines": [ - "node >=0.6.0" - ], + "node_modules/npm/node_modules/minipass": { + "version": "3.1.5", + "inBundle": true, + "license": "ISC", "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/verror/node_modules/core-util-is": { + "node_modules/npm/node_modules/minipass-collect": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - }, - "node_modules/vinyl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", - "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "inBundle": true, + "license": "ISC", "dependencies": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 8" } }, - "node_modules/vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "node_modules/npm/node_modules/minipass-fetch": { + "version": "1.4.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" } }, - "node_modules/vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "inBundle": true, + "license": "ISC", "dependencies": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 8" } }, - "node_modules/vinyl-sourcemap/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "node_modules/npm/node_modules/minipass-json-stream": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" } }, - "node_modules/wait-on": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", - "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "inBundle": true, + "license": "ISC", "dependencies": { - "axios": "^0.25.0", - "joi": "^17.6.0", - "lodash": "^4.17.21", - "minimist": "^1.2.5", - "rxjs": "^7.5.4" - }, - "bin": { - "wait-on": "bin/wait-on" + "minipass": "^3.0.0" }, "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/wait-on/node_modules/axios": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", - "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", - "dependencies": { - "follow-redirects": "^1.14.7" + "node": ">=8" } }, - "node_modules/wait-on/node_modules/rxjs": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", - "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "inBundle": true, + "license": "ISC", "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "minipass": "^3.0.0" + }, "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "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==", + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "engines": { "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10" } }, - "node_modules/which-module": { + "node_modules/npm/node_modules/mkdirp-infer-owner": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "node_modules/winston": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.5.tgz", - "integrity": "sha512-TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A==", + "inBundle": true, + "license": "ISC", "dependencies": { - "async": "~1.0.0", - "colors": "1.0.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "stack-trace": "0.0.x" + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" }, "engines": { - "node": ">= 0.10.0" + "node": ">=10" } }, - "node_modules/winston/node_modules/async": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", - "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "inBundle": true, + "license": "MIT" }, - "node_modules/winston/node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "node_modules/npm/node_modules/mute-stream": { + "version": "0.0.8", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.2", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.1.90" + "node": ">= 0.6" } }, - "node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "node_modules/npm/node_modules/node-gyp": { + "version": "7.1.2", + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">=6" + "node": ">= 10.12.0" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "engines": { - "node": ">=6" + "node_modules/npm/node_modules/node-gyp/node_modules/aproba": { + "version": "1.2.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { + "version": "2.7.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, - "node_modules/wrap-ansi/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==", + "node_modules/npm/node_modules/node-gyp/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "number-is-nan": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { + "version": "4.1.2", + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, - "node_modules/wrappy": { + "node_modules/npm/node_modules/node-gyp/node_modules/string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "inBundle": true, + "license": "MIT", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "engines": { + "node": ">=0.10.0" } }, - "node_modules/xss": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz", - "integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==", + "node_modules/npm/node_modules/nopt": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "commander": "^2.20.3", - "cssfilter": "0.0.10" + "abbrev": "1" }, "bin": { - "xss": "bin/xss" + "nopt": "bin/nopt.js" }, "engines": { - "node": ">= 0.10.0" + "node": ">=6" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "node_modules/npm/node_modules/normalize-package-data": { + "version": "3.0.3", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, "engines": { - "node": ">=0.4" + "node": ">=10" } }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "node_modules/npm/node_modules/npm-audit-report": { + "version": "2.1.5", + "inBundle": true, + "license": "ISC", "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "node_modules/npm/node_modules/npm-bundled": { + "version": "1.1.2", + "inBundle": true, + "license": "ISC", "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "npm-normalize-package-bin": "^1.0.1" } }, - "node_modules/yargs/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/npm/node_modules/npm-install-checks": { + "version": "4.0.0", + "inBundle": true, + "license": "BSD-2-Clause", "dependencies": { - "locate-path": "^3.0.0" + "semver": "^7.1.1" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/yargs/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "8.1.5", + "inBundle": true, + "license": "ISC", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/yargs/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/npm/node_modules/npm-packlist": { + "version": "2.2.2", + "inBundle": true, + "license": "ISC", "dependencies": { - "p-limit": "^2.0.0" + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "npm-packlist": "bin/index.js" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/yargs/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "engines": { - "node": ">=4" + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "6.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" } }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "node_modules/npm/node_modules/npm-profile": { + "version": "5.0.4", + "inBundle": true, + "license": "ISC", "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "11.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/zen-observable": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" + "node_modules/npm/node_modules/npm-user-validate": { + "version": "1.0.1", + "inBundle": true, + "license": "BSD-2-Clause" }, - "node_modules/zen-observable-ts": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", - "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", + "node_modules/npm/node_modules/npmlog": { + "version": "5.0.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "zen-observable": "0.8.15" - } - } - }, - "dependencies": { - "@apollo/client": { - "version": "3.6.9", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.6.9.tgz", - "integrity": "sha512-Y1yu8qa2YeaCUBVuw08x8NHenFi0sw2I3KCu7Kw9mDSu86HmmtHJkCAifKVrN2iPgDTW/BbP3EpSV8/EQCcxZA==", - "requires": { - "@graphql-typed-document-node/core": "^3.1.1", - "@wry/context": "^0.6.0", - "@wry/equality": "^0.5.0", - "@wry/trie": "^0.3.0", - "graphql-tag": "^2.12.6", - "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.16.1", - "prop-types": "^15.7.2", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.10.3", - "tslib": "^2.3.0", - "zen-observable-ts": "^1.2.5" + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" } }, - "@apollo/protobufjs": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.2.tgz", - "integrity": "sha512-vF+zxhPiLtkwxONs6YanSt1EpwpGilThpneExUN5K3tCymuxNnVq2yojTvnpRjv2QfsEIt/n7ozPIIzBLwGIDQ==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" + "node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/number-is-nan": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/oauth-sign": { + "version": "0.9.0", + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/object-assign": { + "version": "4.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/once": { + "version": "1.4.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" - } + "wrappy": "1" } }, - "@apollo/react-hooks": { + "node_modules/npm/node_modules/opener": { + "version": "1.5.2", + "inBundle": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/npm/node_modules/p-map": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@apollo/react-hooks/-/react-hooks-4.0.0.tgz", - "integrity": "sha512-fCu0cbne3gbUl0QbA8X4L33iuuFVQbC5Jo2MIKRK8CyawR6PoxDpFdFA1kc6033ODZuZZ9Eo4RdeJFlFIIYcLA==", - "requires": { - "@apollo/client": "latest" - }, + "inBundle": true, + "license": "MIT", "dependencies": { - "@apollo/client": { - "version": "3.6.9", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.6.9.tgz", - "integrity": "sha512-Y1yu8qa2YeaCUBVuw08x8NHenFi0sw2I3KCu7Kw9mDSu86HmmtHJkCAifKVrN2iPgDTW/BbP3EpSV8/EQCcxZA==", - "requires": { - "@graphql-typed-document-node/core": "^3.1.1", - "@wry/context": "^0.6.0", - "@wry/equality": "^0.5.0", - "@wry/trie": "^0.3.0", - "graphql-tag": "^2.12.6", - "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.16.1", - "prop-types": "^15.7.2", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.10.3", - "tslib": "^2.3.0", - "zen-observable-ts": "^1.2.5" - } - } + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@apollo/utils.dropunuseddefinitions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz", - "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==", - "requires": {} - }, - "@apollo/utils.keyvaluecache": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.1.tgz", - "integrity": "sha512-nLgYLomqjVimEzQ4cdvVQkcryi970NDvcRVPfd0OPeXhBfda38WjBq+WhQFk+czSHrmrSp34YHBxpat0EtiowA==", - "requires": { - "@apollo/utils.logger": "^1.0.0", - "lru-cache": "^7.10.1" + "node_modules/npm/node_modules/pacote": { + "version": "11.3.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.8.2", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + }, + "bin": { + "pacote": "lib/bin.js" }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==" - } + "json-parse-even-better-errors": "^2.3.0", + "just-diff": "^3.0.1", + "just-diff-apply": "^3.0.0" } }, - "@apollo/utils.logger": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.0.tgz", - "integrity": "sha512-dx9XrjyisD2pOa+KsB5RcDbWIAdgC91gJfeyLCgy0ctJMjQe7yZK5kdWaWlaOoCeX0z6YI9iYlg7vMPyMpQF3Q==" + "node_modules/npm/node_modules/path-is-absolute": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "@apollo/utils.printwithreducedwhitespace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz", - "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==", - "requires": {} + "node_modules/npm/node_modules/performance-now": { + "version": "2.1.0", + "inBundle": true, + "license": "MIT" }, - "@apollo/utils.removealiases": { + "node_modules/npm/node_modules/proc-log": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz", - "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==", - "requires": {} + "inBundle": true, + "license": "ISC" }, - "@apollo/utils.sortast": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz", - "integrity": "sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA==", - "requires": { - "lodash.sortby": "^4.7.0" + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "@apollo/utils.stripsensitiveliterals": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz", - "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==", - "requires": {} + "node_modules/npm/node_modules/promise-call-limit": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "@apollo/utils.usagereporting": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.0.tgz", - "integrity": "sha512-5PL7hJMkTPmdo3oxPtigRrIyPxDk/ddrUryHPDaezL1lSFExpNzsDd2f1j0XJoHOg350GRd3LyD64caLA2PU1w==", - "requires": { - "@apollo/utils.dropunuseddefinitions": "^1.1.0", - "@apollo/utils.printwithreducedwhitespace": "^1.1.0", - "@apollo/utils.removealiases": "1.0.0", - "@apollo/utils.sortast": "^1.1.0", - "@apollo/utils.stripsensitiveliterals": "^1.2.0", - "apollo-reporting-protobuf": "^3.3.1" + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "0.3.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "@apollo/protobufjs": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", - "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - } - }, - "@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" - }, - "apollo-reporting-protobuf": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", - "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", - "requires": { - "@apollo/protobufjs": "1.2.4" - } - } + "read": "1" } }, - "@apollographql/apollo-tools": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz", - "integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==", - "requires": {} + "node_modules/npm/node_modules/psl": { + "version": "1.8.0", + "inBundle": true, + "license": "MIT" }, - "@apollographql/graphql-playground-html": { - "version": "1.6.27", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.27.tgz", - "integrity": "sha512-tea2LweZvn6y6xFV11K0KC8ETjmm52mQrW+ezgB2O/aTQf8JGyFmMcRPFgUaQZeHbWdm8iisDC6EjOKsXu0nfw==", - "requires": { - "xss": "^1.0.8" + "node_modules/npm/node_modules/punycode": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" } }, - "@apollographql/graphql-upload-8-fork": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-upload-8-fork/-/graphql-upload-8-fork-8.1.3.tgz", - "integrity": "sha512-ssOPUT7euLqDXcdVv3Qs4LoL4BPtfermW1IOouaqEmj36TpHYDmYDIbKoSQxikd9vtMumFnP87OybH7sC9fJ6g==", - "requires": { - "@types/express": "*", - "@types/fs-capacitor": "*", - "@types/koa": "*", - "busboy": "^0.3.1", - "fs-capacitor": "^2.0.4", - "http-errors": "^1.7.3", - "object-path": "^0.11.4" + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" } }, - "@deep-foundation/deeplinks": { - "version": "0.0.93", - "resolved": "https://registry.npmjs.org/@deep-foundation/deeplinks/-/deeplinks-0.0.93.tgz", - "integrity": "sha512-UIvVax1+QlM94ehM0oSeRRQHwBzq8cV3Ec/jMMFl7j+QXIr8QRqKf7TYipNRt+faFTlfK25wEbDGQJi0elTRPQ==", - "requires": { - "@apollo/client": "^3.5.8", - "@deep-foundation/hasura": "0.0.17", - "@deep-foundation/materialized-path": "^0.0.11", - "@deep-foundation/react-hasura": "0.0.5", - "@deep-foundation/store": "0.0.6", - "@types/jest": "^26.0.22", - "@types/node": "^14.17.34", - "@types/react": "^17.0.19", - "apollo-boost": "^0.4.9", - "apollo-server": "^2.21.0", - "apollo-server-core": "^3.6.1", - "apollo-server-express": "^3.5.0", - "atob": "^2.1.2", - "axios": "^0.24.0", - "body-parser": "^1.19.0", - "buffer": "^6.0.3", - "chai": "^4.3.4", - "cross-env": "^7.0.3", - "debug": "^4.3.3", - "dotenv": "^8.2.0", - "fix-path": "^3.0.0", - "get-port": "^5.1.1", - "gists": "^2.0.0", - "graphql": "^15.5.0", - "graphql-playground-middleware-express": "^1.7.23", - "graphql-tag": "^2.11.0", - "http-proxy-middleware": "^2.0.1", - "internal-ip": "^6.2.0", - "jsonwebtoken": "^8.5.1", - "microtime": "^3.0.0", - "moesif-nodejs": "^3.1.19", - "nodemon": "^2.0.15", - "rimraf": "^3.0.2", - "supports-color": "^9.2.1", - "ts-jest": "^26.5.4", - "uniqid": "^5.3.0", - "wait-on": "^6.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - } + "node_modules/npm/node_modules/qs": { + "version": "6.5.2", + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" } }, - "@deep-foundation/hasura": { - "version": "0.0.17", - "resolved": "https://registry.npmjs.org/@deep-foundation/hasura/-/hasura-0.0.17.tgz", - "integrity": "sha512-rtB7gG8/fsX9k6ykLo7/p1zQlD7XcVNv0MetDPjW5Flq65UZsSdT6xaqo4TmdhF7bWTOku6u3f8SW4xOoFgIRw==", - "requires": { - "@apollo/client": "^3.5.5", - "@apollo/react-hooks": "^4.0.0", - "@types/node": "^14.17.14", - "@types/react": "^17.0.19", - "apollo-boost": "^0.4.9", - "apollo-link": "^1.2.14", - "apollo-link-ws": "^1.0.20", - "apollo-server-micro": "^2.21.0", - "axios": "^0.21.1", - "babel-register": "^6.26.0", - "cors": "^2.8.5", - "debug": "^4.3.1", - "dotenv": "^8.2.0", - "express": "^4.17.1", - "migrate": "^1.7.0", - "node-fetch": "^2.6.1", - "normalize-url": "^7.0.2", - "path": "^0.12.7", - "react": "^17.0.1", - "rimraf": "^3.0.2", - "ts-node": "^9.1.1", - "ws": "^7.5.6" - }, + "node_modules/npm/node_modules/read": { + "version": "1.0.7", + "inBundle": true, + "license": "ISC", "dependencies": { - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "requires": { - "follow-redirects": "^1.14.0" - } - } + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" } }, - "@deep-foundation/materialized-path": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/@deep-foundation/materialized-path/-/materialized-path-0.0.11.tgz", - "integrity": "sha512-VUiqjTRRwWTm+JZd03w5czSwAOzmKN8Y0h0Hse1jtRFz277qWQqPCL2T40QsQODddn8mEMpiHg2eDS7atBKkhA==", - "requires": { - "@types/jest": "^26.0.22", - "@types/node": "^14.0.23", - "@types/react": "^17.0.2", - "benchmark": "^2.1.4", - "chance": "^1.1.7", - "graphql": "^15.5.3", - "microtime": "^3.0.0", - "ts-jest": "^26.5.4", - "typescript": "^3.9.7" - }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/read-package-json": { + "version": "4.1.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==" - } + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + }, + "engines": { + "node": ">=10" } }, - "@deep-foundation/react-hasura": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@deep-foundation/react-hasura/-/react-hasura-0.0.5.tgz", - "integrity": "sha512-3ah7heyiamk3TzEIJ+wA9GLFcarph3e9qjWb/pGIdmZer9aaIOE5hXPba26g4Q7raKmevZK4QC7Cou2/uwbXMA==", - "requires": { - "@apollo/react-hooks": "^4.0.0", - "debug": "^4.3.1" + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "2.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" } }, - "@deep-foundation/store": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@deep-foundation/store/-/store-0.0.6.tgz", - "integrity": "sha512-KBpyvl9S4Pkl71oAnC6c0pQg3uTQGRN3GMclkinM6OR1UVFXMGMSXKk6DQ8QWWEKJ0KW7evUR2Ha0CW2aW1ptA==", - "requires": { - "debug": "^4.1.1", - "lodash": "^4.17.19", - "react-cookie": "^4.0.3", - "universal-cookie": "^4.0.3" + "node_modules/npm/node_modules/readable-stream": { + "version": "3.6.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "@graphql-tools/merge": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.3.tgz", - "integrity": "sha512-EfULshN2s2s2mhBwbV9WpGnoehRLe7eIMdZrKfHhxlBWOvtNUd3KSCN0PUdAMd7lj1jXUW9KYdn624JrVn6qzg==", - "requires": { - "@graphql-tools/utils": "8.10.0", - "tslib": "^2.4.0" + "node_modules/npm/node_modules/readdir-scoped-modules": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" } }, - "@graphql-tools/mock": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.7.3.tgz", - "integrity": "sha512-U9e3tZenFvSTf0TAaFgwqO84cGNEbgzWXvboqJPth873dMag8sOlLyOBZceVzAZP7ptwfLbhm3S0Qq4ffI7mCw==", - "requires": { - "@graphql-tools/schema": "9.0.1", - "@graphql-tools/utils": "8.10.0", - "fast-json-stable-stringify": "^2.1.0", - "tslib": "^2.4.0" - }, + "node_modules/npm/node_modules/request": { + "version": "2.88.2", + "inBundle": true, + "license": "Apache-2.0", "dependencies": { - "@graphql-tools/schema": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.1.tgz", - "integrity": "sha512-Y6apeiBmvXEz082IAuS/ainnEEQrzMECP1MRIV72eo2WPa6ZtLYPycvIbd56Z5uU2LKP4XcWRgK6WUbCyN16Rw==", - "requires": { - "@graphql-tools/merge": "8.3.3", - "@graphql-tools/utils": "8.10.0", - "tslib": "^2.4.0", - "value-or-promise": "1.0.11" - } - } + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" } }, - "@graphql-tools/schema": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz", - "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==", - "requires": { - "@graphql-tools/merge": "8.3.1", - "@graphql-tools/utils": "8.9.0", - "tslib": "^2.4.0", - "value-or-promise": "1.0.11" - }, + "node_modules/npm/node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "inBundle": true, + "license": "MIT", "dependencies": { - "@graphql-tools/merge": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz", - "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==", - "requires": { - "@graphql-tools/utils": "8.9.0", - "tslib": "^2.4.0" - } - }, - "@graphql-tools/utils": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", - "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", - "requires": { - "tslib": "^2.4.0" - } - } + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" } }, - "@graphql-tools/utils": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.10.0.tgz", - "integrity": "sha512-yI+V373FdXQbYfqdarehn9vRWDZZYuvyQ/xwiv5ez2BbobHrqsexF7qs56plLRaQ8ESYpVAjMQvJWe9s23O0Jg==", - "requires": { - "tslib": "^2.4.0" + "node_modules/npm/node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", + "inBundle": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" } }, - "@graphql-typed-document-node/core": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", - "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", - "requires": {} - }, - "@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "requires": { - "@hapi/hoek": "^9.0.0" + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" } }, - "@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, + "node_modules/npm/node_modules/rimraf": { + "version": "3.0.2", + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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==", - "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==" + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "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==", - "requires": { - "has-flag": "^4.0.0" - } + { + "type": "consulting", + "url": "https://feross.org/support" } - } + ], + "inBundle": true, + "license": "MIT" }, - "@josephg/resolvable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", - "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==" + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT" }, - "@kwsites/file-exists": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", - "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", - "requires": { - "debug": "^4.1.1" + "node_modules/npm/node_modules/semver": { + "version": "7.3.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "@kwsites/promise-deferred": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", - "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==" + "node_modules/npm/node_modules/set-blocking": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "node_modules/npm/node_modules/signal-exit": { + "version": "3.0.3", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" } }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "node_modules/npm/node_modules/socks": { + "version": "2.6.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" } }, - "@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "6.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } }, - "@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.1.1", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } }, - "@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.3.0", + "inBundle": true, + "license": "CC-BY-3.0" }, - "@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.10", + "inBundle": true, + "license": "CC0-1.0" }, - "@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + "node_modules/npm/node_modules/sshpk": { + "version": "1.16.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } }, - "@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + "node_modules/npm/node_modules/ssri": { + "version": "8.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } }, - "@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + "node_modules/npm/node_modules/string_decoder": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } }, - "@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "requires": { - "@hapi/hoek": "^9.0.0" + "node_modules/npm/node_modules/string-width": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" } }, - "@sideway/formula": { + "node_modules/npm/node_modules/string-width/node_modules/ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + "node_modules/npm/node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } }, - "@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", - "requires": { - "@types/node": "*" + "node_modules/npm/node_modules/stringify-package": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "requires": { - "@types/connect": "*", - "@types/node": "*" + "node_modules/npm/node_modules/supports-color": { + "version": "7.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "requires": { - "@types/node": "*" + "node_modules/npm/node_modules/tar": { + "version": "6.1.11", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" } }, - "@types/content-disposition": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", - "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==" + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "inBundle": true, + "license": "MIT" }, - "@types/cookie": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz", - "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==" + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT" }, - "@types/cookies": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", - "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", - "requires": { - "@types/connect": "*", - "@types/express": "*", - "@types/keygrip": "*", - "@types/node": "*" - } + "node_modules/npm/node_modules/treeverse": { + "version": "1.0.4", + "inBundle": true, + "license": "ISC" }, - "@types/cors": { - "version": "2.8.10", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", - "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==" + "node_modules/npm/node_modules/tunnel-agent": { + "version": "0.6.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } }, - "@types/expect": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", - "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==" + "node_modules/npm/node_modules/tweetnacl": { + "version": "0.14.5", + "inBundle": true, + "license": "Unlicense" }, - "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" + "node_modules/npm/node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" } }, - "@types/express-serve-static-core": { - "version": "4.17.30", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", - "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" + "node_modules/npm/node_modules/unique-filename": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^2.0.0" } }, - "@types/formidable": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.5.tgz", - "integrity": "sha512-zu3mQJa4hDNubEMViSj937602XdDGzK7Q5pJ5QmLUbNxclbo9tZGt5jtwM352ssZ+pqo5V4H14TBvT/ALqQQcA==", - "requires": { - "@types/node": "*" + "node_modules/npm/node_modules/unique-slug": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" } }, - "@types/fs-capacitor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz", - "integrity": "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==", - "requires": { - "@types/node": "*" + "node_modules/npm/node_modules/uri-js": { + "version": "4.4.1", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" } }, - "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" }, - "@types/glob-stream": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-6.1.1.tgz", - "integrity": "sha512-AGOUTsTdbPkRS0qDeyeS+6KypmfVpbT5j23SN8UPG63qjKXNKjXn6V9wZUr8Fin0m9l8oGYaPK8b2WUMF8xI1A==", - "requires": { - "@types/glob": "*", - "@types/node": "*" + "node_modules/npm/node_modules/uuid": { + "version": "3.4.0", + "inBundle": true, + "license": "MIT", + "bin": { + "uuid": "bin/uuid" } }, - "@types/gulp": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.9.tgz", - "integrity": "sha512-zzT+wfQ8uwoXjDhRK9Zkmmk09/fbLLmN/yDHFizJiEKIve85qutOnXcP/TM2sKPBTU+Jc16vfPbOMkORMUBN7Q==", - "requires": { - "@types/undertaker": "*", - "@types/vinyl-fs": "*", - "chokidar": "^3.3.1" + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "requires": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "builtins": "^1.0.3" } }, - "@types/http-assert": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", - "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==" - }, - "@types/http-errors": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", - "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==" - }, - "@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", - "requires": { - "@types/node": "*" + "node_modules/npm/node_modules/verror": { + "version": "1.10.0", + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" } }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + "node_modules/npm/node_modules/walk-up-path": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC" }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "requires": { - "@types/istanbul-lib-coverage": "*" + "node_modules/npm/node_modules/wcwidth": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" } }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "requires": { - "@types/istanbul-lib-report": "*" + "node_modules/npm/node_modules/which": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "@types/jest": { - "version": "26.0.24", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", - "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", - "requires": { - "jest-diff": "^26.0.0", - "pretty-format": "^26.0.0" + "node_modules/npm/node_modules/wide-align": { + "version": "1.1.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2" } }, - "@types/keygrip": { + "node_modules/npm/node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", - "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" + "inBundle": true, + "license": "ISC" }, - "@types/koa": { - "version": "2.13.5", - "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz", - "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==", - "requires": { - "@types/accepts": "*", - "@types/content-disposition": "*", - "@types/cookies": "*", - "@types/http-assert": "*", - "@types/http-errors": "*", - "@types/keygrip": "*", - "@types/koa-compose": "*", - "@types/node": "*" + "node_modules/npm/node_modules/write-file-atomic": { + "version": "3.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, - "@types/koa-compose": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", - "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", - "requires": { - "@types/koa": "*" - } + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC" }, - "@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" - }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" - }, - "@types/node": { - "version": "14.18.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.18.tgz", - "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig==" - }, - "@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - }, - "@types/react": { - "version": "17.0.48", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.48.tgz", - "integrity": "sha512-zJ6IYlJ8cYYxiJfUaZOQee4lh99mFihBoqkOSEGV+dFi9leROW6+PgstzQ+w3gWTnUfskALtQPGHK6dYmPj+2A==", - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "engines": { + "node": ">=0.10.0" } }, - "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + "node_modules/nwsapi": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", + "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==", + "peer": true }, - "@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "requires": { - "@types/mime": "*", - "@types/node": "*" + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" } }, - "@types/undertaker": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.7.tgz", - "integrity": "sha512-xuY7nBwo1zSRoY2aitp/HArHfTulFAKql2Fr4b4mWbBBP+F50n7Jm6nwISTTMaDk2xvl92O10TTejVF0Q9mInw==", - "requires": { - "@types/node": "*", - "@types/undertaker-registry": "*", - "async-done": "~1.3.2" + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" } }, - "@types/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==" - }, - "@types/vinyl": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", - "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", - "requires": { - "@types/expect": "^1.20.4", - "@types/node": "*" + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" } }, - "@types/vinyl-fs": { - "version": "2.4.12", - "resolved": "https://registry.npmjs.org/@types/vinyl-fs/-/vinyl-fs-2.4.12.tgz", - "integrity": "sha512-LgBpYIWuuGsihnlF+OOWWz4ovwCYlT03gd3DuLwex50cYZLmX3yrW+sFF9ndtmh7zcZpS6Ri47PrIu+fV+sbXw==", - "requires": { - "@types/glob-stream": "*", - "@types/node": "*", - "@types/vinyl": "*" + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", - "requires": { - "@types/node": "*" + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", - "requires": { - "@types/yargs-parser": "*" + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" - }, - "@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "optional": true, - "requires": { - "@types/node": "*" + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@types/zen-observable": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz", - "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==" - }, - "@wry/context": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.6.1.tgz", - "integrity": "sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw==", - "requires": { - "tslib": "^2.3.0" + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" } }, - "@wry/equality": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.3.tgz", - "integrity": "sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g==", - "requires": { - "tslib": "^2.3.0" + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, - "@wry/trie": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.2.tgz", - "integrity": "sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ==", - "requires": { - "tslib": "^2.3.0" + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "abbrev": { + "node_modules/object-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } }, - "accept": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/accept/-/accept-3.1.3.tgz", - "integrity": "sha512-OgOEAidVEOKPup+Gv2+2wdH2AgVKI9LxsJ4hicdJ6cY0faUuZdZoi56kkXWlHp9qicN1nWQLmW5ZRGk+SBS5xg==", - "requires": { - "boom": "7.x.x", - "hoek": "6.x.x" + "node_modules/object-path": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", + "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", + "engines": { + "node": ">= 10.12.0" } }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "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" + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", + "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", + "dependencies": { + "array.prototype.reduce": "^1.0.4", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "requires": { - "ansi-wrap": "^0.1.0" + "node_modules/object.getownpropertydescriptors/node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "requires": { - "ansi-wrap": "0.1.0" + "node_modules/object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" + "node_modules/object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" } }, - "apollo-boost": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/apollo-boost/-/apollo-boost-0.4.9.tgz", - "integrity": "sha512-05y5BKcDaa8w47f8d81UVwKqrAjn8uKLv6QM9fNdldoNzQ+rnOHgFlnrySUZRz9QIT3vPftQkEz2UEASp1Mi5g==", - "requires": { - "apollo-cache": "^1.3.5", - "apollo-cache-inmemory": "^1.6.6", - "apollo-client": "^2.6.10", - "apollo-link": "^1.0.6", - "apollo-link-error": "^1.0.3", - "apollo-link-http": "^1.3.1", - "graphql-tag": "^2.4.2", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0" + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optimism": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.1.tgz", + "integrity": "sha512-64i+Uw3otrndfq5kaoGNoY7pvOhSsjFEN4bdEFh80MWVk/dbgJfMv7VFDeCT8LxNAlEVhQmdVEbfE7X2nWNIIg==", "dependencies": { - "ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "requires": { - "tslib": "^1.9.3" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "@wry/context": "^0.6.0", + "@wry/trie": "^0.3.0" } }, - "apollo-cache": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.5.tgz", - "integrity": "sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA==", - "requires": { - "apollo-utilities": "^1.3.4", - "tslib": "^1.10.0" + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "peer": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/optionator/node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "peer": true + }, + "node_modules/ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "readable-stream": "^2.0.1" } }, - "apollo-cache-control": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.14.0.tgz", - "integrity": "sha512-qN4BCq90egQrgNnTRMUHikLZZAprf3gbm8rC5Vwmc6ZdLolQ7bFsa769Hqi6Tq/lS31KLsXBLTOsRbfPHph12w==", - "requires": { - "apollo-server-env": "^3.1.0", - "apollo-server-plugin-base": "^0.13.0" + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "engines": { + "node": ">=0.10.0" } }, - "apollo-cache-inmemory": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6.tgz", - "integrity": "sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A==", - "requires": { - "apollo-cache": "^1.3.5", - "apollo-utilities": "^1.3.4", - "optimism": "^0.10.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0" - }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dependencies": { - "@wry/context": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.4.4.tgz", - "integrity": "sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==", - "requires": { - "@types/node": ">=6", - "tslib": "^1.9.3" - } - }, - "optimism": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.10.3.tgz", - "integrity": "sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw==", - "requires": { - "@wry/context": "^0.4.0" - } - }, - "ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "requires": { - "tslib": "^1.9.3" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "apollo-client": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.6.10.tgz", - "integrity": "sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA==", - "requires": { - "@types/zen-observable": "^0.8.0", - "apollo-cache": "1.3.5", - "apollo-link": "^1.0.0", - "apollo-utilities": "1.3.4", - "symbol-observable": "^1.0.2", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0", - "zen-observable": "^0.8.0" + "lcid": "^1.0.0" }, - "dependencies": { - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" - }, - "ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "requires": { - "tslib": "^1.9.3" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "engines": { + "node": ">=0.10.0" } }, - "apollo-datasource": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.9.0.tgz", - "integrity": "sha512-y8H99NExU1Sk4TvcaUxTdzfq2SZo6uSj5dyh75XSQvbpH6gdAXIW9MaBcvlNC7n0cVPsidHmOcHOWxJ/pTXGjA==", - "requires": { - "apollo-server-caching": "^0.7.0", - "apollo-server-env": "^3.1.0" + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "engines": { + "node": ">=0.10.0" } }, - "apollo-graphql": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.9.7.tgz", - "integrity": "sha512-bezL9ItUWUGHTm1bI/XzIgiiZbhXpsC7uxk4UxFPmcVJwJsDc3ayZ99oXxAaK+3Rbg/IoqrHckA6CwmkCsbaSA==", - "requires": { - "core-js-pure": "^3.10.2", - "lodash.sortby": "^4.7.0", - "sha.js": "^2.4.11" + "node_modules/p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "apollo-link": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz", - "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==", - "requires": { - "apollo-utilities": "^1.3.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.9.3", - "zen-observable-ts": "^0.8.21" - }, + "node_modules/p-event": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", + "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", "dependencies": { - "ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "requires": { - "tslib": "^1.9.3" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "zen-observable-ts": { - "version": "0.8.21", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz", - "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==", - "requires": { - "tslib": "^1.9.3", - "zen-observable": "^0.8.0" - } - } + "p-timeout": "^3.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "apollo-link-error": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.13.tgz", - "integrity": "sha512-jAZOOahJU6bwSqb2ZyskEK1XdgUY9nkmeclCrW7Gddh1uasHVqmoYc4CKdb0/H0Y1J9lvaXKle2Wsw/Zx1AyUg==", - "requires": { - "apollo-link": "^1.2.14", - "apollo-link-http-common": "^0.2.16", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" } }, - "apollo-link-http": { - "version": "1.5.17", - "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.17.tgz", - "integrity": "sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg==", - "requires": { - "apollo-link": "^1.2.14", - "apollo-link-http-common": "^0.2.16", - "tslib": "^1.9.3" - }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "apollo-link-http-common": { - "version": "0.2.16", - "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz", - "integrity": "sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg==", - "requires": { - "apollo-link": "^1.2.14", - "ts-invariant": "^0.4.0", - "tslib": "^1.9.3" - }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dependencies": { - "ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "requires": { - "tslib": "^1.9.3" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "apollo-link-ws": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/apollo-link-ws/-/apollo-link-ws-1.0.20.tgz", - "integrity": "sha512-mjSFPlQxmoLArpHBeUb2Xj+2HDYeTaJqFGOqQ+I8NVJxgL9lJe84PDWcPah/yMLv3rB7QgBDSuZ0xoRFBPlySw==", - "requires": { - "apollo-link": "^1.2.14", - "tslib": "^1.9.3" + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" } }, - "apollo-reporting-protobuf": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-0.8.0.tgz", - "integrity": "sha512-B3XmnkH6Y458iV6OsA7AhfwvTgeZnFq9nPVjbxmLKnvfkEl8hYADtz724uPa0WeBiD7DSFcnLtqg9yGmCkBohg==", - "requires": { - "@apollo/protobufjs": "1.2.2" + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" } }, - "apollo-server": { + "node_modules/paged-request": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/paged-request/-/paged-request-1.0.2.tgz", + "integrity": "sha512-2NXKpT0pWoVo31LQhGOfsqD8wViifq6Ml28H8WrqY0GbMvltvpDPx1YZ6jMeVXNbywjECdEhmC2/uFFS1MdMFQ==", + "dependencies": { + "needle": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-link-header": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-1.0.1.tgz", + "integrity": "sha512-Z0gpfHmwCIKDr5rRzjypL+p93aHVWO7e+0rFcUl9E3sC67njjs+xHFenuboSXZGlvYtmQqRzRaE3iFpTUnLmFQ==", + "dependencies": { + "xtend": "~4.0.1" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "peer": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "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=", + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "engines": { + "node": "*" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "peer": true + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "peer": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/platform": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "peer": true, + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/pretty-format/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-format/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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/pretty-format/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==" + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/prompt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.2.0.tgz", + "integrity": "sha512-iGerYRpRUg5ZyC+FJ/25G5PUKuWAGRjW1uOlhX7Pi3O5YygdK6R+KEaBjRbHSkU5vfS5PZCltSPZdDtUYwRCZA==", + "dependencies": { + "async": "~0.9.0", + "colors": "^1.1.2", + "read": "1.0.x", + "revalidator": "0.1.x", + "winston": "2.x" + }, + "engines": { + "node": ">= 0.6.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "peer": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, + "node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/puppeteer": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-16.1.0.tgz", + "integrity": "sha512-lhykJLbH2bbBaP3NfYI2Vj0T4ctrdfVdEVf8glZITPnLfqrJ0nfUzAYuIz5YcA79k5lmFKANIhEXex+jQChU3g==", + "hasInstallScript": true, + "dependencies": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1019158", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "pkg-dir": "4.2.0", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.8.1" + }, + "engines": { + "node": ">=14.1.0" + } + }, + "node_modules/puppeteer/node_modules/debug": { + "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" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/puppeteer/node_modules/ws": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", + "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.3", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body/node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "node_modules/raw-body/node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-cookie": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/react-cookie/-/react-cookie-4.1.1.tgz", + "integrity": "sha512-ffn7Y7G4bXiFbnE+dKhHhbP+b8I34mH9jqnm8Llhj89zF4nPxPutxHT1suUqMeCEhLDBI7InYwf1tpaSoK5w8A==", + "dependencies": { + "@types/hoist-non-react-statics": "^3.0.1", + "hoist-non-react-statics": "^3.0.0", + "universal-cookie": "^4.0.0" + }, + "peerDependencies": { + "react": ">= 16.3.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "dependencies": { + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "peer": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "peer": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dependencies": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dependencies": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", + "dependencies": { + "is-finite": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "dependencies": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request-ip": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-2.2.0.tgz", + "integrity": "sha512-Hn4zUAr+XHbUs2RrfHur62t7+UhvtevqK32ordFewguEfNHUkhSdYgbG7PDGmXZEzqEXll9bei0+VMe6gkmuUQ==", + "dependencies": { + "is_js": "^0.9.0" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "peer": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "dependencies": { + "value-or-function": "^3.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated" + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/revalidator": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", + "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/rimraf": { + "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" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "peer": true, + "engines": { + "node": "6.* || >= 7.*" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "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==" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", + "peer": true, + "dependencies": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "bin": { + "sane": "src/cli.js" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/sane/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "peer": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/sane/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "peer": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "peer": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "peer": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/sane/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "peer": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sane/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "peer": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "peer": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "peer": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sane/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "peer": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "peer": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "peer": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "peer": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/sane/node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "peer": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/sane/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/sane/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "peer": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "peer": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "peer": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "dependencies": { + "sver-compat": "^1.5.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.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==", + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-env": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shell-env/-/shell-env-0.3.0.tgz", + "integrity": "sha512-VrC6OSm5riGAFWvlYExA80Rrlfi4STsztNXjyet9Jf20hbiVeeKvJIesb92gJk7zlmpQjB0wOZpy8ClzVdPVWQ==", + "dependencies": { + "default-shell": "^1.0.0", + "execa": "^0.5.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shell-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/shell-path/-/shell-path-2.1.0.tgz", + "integrity": "sha512-w+mbrnpA+r5jSFS4MgFfxZJ1Wx8qMKkR4gvQ+wgaZEoZCMMYZ6Yl/dcNjW/zLMfmx5a9IVIFwGAtUJcnDMmFrg==", + "dependencies": { + "shell-env": "^0.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "optional": true, + "peer": true + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-git": { + "version": "2.47.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.47.0.tgz", + "integrity": "sha512-+HfCpqPBEZTPWiW9fPdbiPJDslM22MLqrktfzNKyI2pWaJa6DhfNVx4Mds04KZzVv5vjC9/ksw3y5gVf8ECWDg==", + "dependencies": { + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.1.1", + "debug": "^4.3.2" + } + }, + "node_modules/simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "peer": true + }, + "node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/slug": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/slug/-/slug-5.3.0.tgz", + "integrity": "sha512-h7yD2UDVyMcQRv/WLSjq7HDH6ToO/22MB381zfx6/ebtdWUlGcyxpJNVHl6WFvKjIMHf5ZxANFp/srsy4mfT/w==" + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated" + }, + "node_modules/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/spawn-args": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/spawn-args/-/spawn-args-0.2.0.tgz", + "integrity": "sha1-+30L0dcP1DFr2ePew4nmX51jYbs=" + }, + "node_modules/spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=" + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", + "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==" + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "peer": true + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "engines": { + "node": "*" + } + }, + "node_modules/stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "peer": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stoppable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", + "engines": { + "node": ">=4", + "npm": ">=6" + } + }, + "node_modules/stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "node_modules/streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "peer": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-length/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==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-length/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==", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend/node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart/node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/styled-jsx": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.4.tgz", + "integrity": "sha512-sDFWLbg4zR+UkNzfk5lPilyIgtpddfxXEULxhujorr5jtePTUqiPDc5BC0v1NRqTr/WaFBGQQUoYToGlF4B2KQ==", + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/subscriptions-transport-ws": { + "version": "0.9.19", + "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz", + "integrity": "sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw==", + "deprecated": "The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md", + "dependencies": { + "backo2": "^1.0.2", + "eventemitter3": "^3.1.0", + "iterall": "^1.2.1", + "symbol-observable": "^1.0.4", + "ws": "^5.2.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependencies": { + "graphql": ">=0.10.0" + } + }, + "node_modules/subscriptions-transport-ws/node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz", + "integrity": "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/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==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/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==", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "dependencies": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "peer": true + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-fs/node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "peer": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "peer": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "peer": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/timeout-as-promise": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/timeout-as-promise/-/timeout-as-promise-1.0.0.tgz", + "integrity": "sha1-c2foEfyZKs/Nzaq/LlDfr4shV28=" + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "peer": true + }, + "node_modules/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dependencies": { + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ts-invariant": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", + "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-jest": { + "version": "26.5.6", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.6.tgz", + "integrity": "sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==", + "dependencies": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^26.1.0", + "json5": "2.x", + "lodash": "4.x", + "make-error": "1.x", + "mkdirp": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "jest": ">=26 <27", + "typescript": ">=3.8 <5.0" + } + }, + "node_modules/ts-jest/node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ts-jest/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "dependencies": { + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": ">=2.7" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "peer": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "peer": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive/node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/unbzip2-stream/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, + "node_modules/undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "dependencies": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uniqid": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.4.0.tgz", + "integrity": "sha512-38JRbJ4Fj94VmnC7G/J/5n5SC7Ab46OM5iNtSstB/ko3l1b5g7ALt4qzHFgGciFkyiRNtDXtLNb+VsxtMSE77A==" + }, + "node_modules/unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dependencies": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "node_modules/universal-cookie": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-4.0.4.tgz", + "integrity": "sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw==", + "dependencies": { + "@types/cookie": "^0.3.3", + "cookie": "^0.4.0" + } + }, + "node_modules/universal-cookie/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "peer": true, + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "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" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated" + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peer": true, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/util.promisify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", + "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "for-each": "^0.3.3", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/uuid4": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid4/-/uuid4-2.0.3.tgz", + "integrity": "sha512-CTpAkEVXMNJl2ojgtpLXHgz23dh8z81u6/HEPiQFOvBc/c2pde6TVHmH4uwY0d/GLF3tb7+VDAj4+2eJaQSdZQ==" + }, + "node_modules/v8-to-istanbul": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", + "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/value-or-promise": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", + "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dependencies": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dependencies": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "peer": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "peer": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/wait-on": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", + "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", + "dependencies": { + "axios": "^0.25.0", + "joi": "^17.6.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^7.5.4" + }, + "bin": { + "wait-on": "bin/wait-on" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/wait-on/node_modules/axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dependencies": { + "follow-redirects": "^1.14.7" + } + }, + "node_modules/wait-on/node_modules/rxjs": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", + "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "peer": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "peer": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "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" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "node_modules/winston": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.5.tgz", + "integrity": "sha512-TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A==", + "dependencies": { + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/winston/node_modules/async": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" + }, + "node_modules/winston/node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/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==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "peer": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "peer": true + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "peer": true + }, + "node_modules/xss": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz", + "integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==", + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "bin": { + "xss": "bin/xss" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "engines": { + "node": ">=4" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/zen-observable": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" + }, + "node_modules/zen-observable-ts": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", + "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", + "dependencies": { + "zen-observable": "0.8.15" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "peer": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@apollo/client": { + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.6.9.tgz", + "integrity": "sha512-Y1yu8qa2YeaCUBVuw08x8NHenFi0sw2I3KCu7Kw9mDSu86HmmtHJkCAifKVrN2iPgDTW/BbP3EpSV8/EQCcxZA==", + "requires": { + "@graphql-typed-document-node/core": "^3.1.1", + "@wry/context": "^0.6.0", + "@wry/equality": "^0.5.0", + "@wry/trie": "^0.3.0", + "graphql-tag": "^2.12.6", + "hoist-non-react-statics": "^3.3.2", + "optimism": "^0.16.1", + "prop-types": "^15.7.2", + "symbol-observable": "^4.0.0", + "ts-invariant": "^0.10.3", + "tslib": "^2.3.0", + "zen-observable-ts": "^1.2.5" + } + }, + "@apollo/protobufjs": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.2.tgz", + "integrity": "sha512-vF+zxhPiLtkwxONs6YanSt1EpwpGilThpneExUN5K3tCymuxNnVq2yojTvnpRjv2QfsEIt/n7ozPIIzBLwGIDQ==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + } + } + }, + "@apollo/react-hooks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@apollo/react-hooks/-/react-hooks-4.0.0.tgz", + "integrity": "sha512-fCu0cbne3gbUl0QbA8X4L33iuuFVQbC5Jo2MIKRK8CyawR6PoxDpFdFA1kc6033ODZuZZ9Eo4RdeJFlFIIYcLA==", + "requires": { + "@apollo/client": "latest" + }, + "dependencies": { + "@apollo/client": { + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.6.9.tgz", + "integrity": "sha512-Y1yu8qa2YeaCUBVuw08x8NHenFi0sw2I3KCu7Kw9mDSu86HmmtHJkCAifKVrN2iPgDTW/BbP3EpSV8/EQCcxZA==", + "requires": { + "@graphql-typed-document-node/core": "^3.1.1", + "@wry/context": "^0.6.0", + "@wry/equality": "^0.5.0", + "@wry/trie": "^0.3.0", + "graphql-tag": "^2.12.6", + "hoist-non-react-statics": "^3.3.2", + "optimism": "^0.16.1", + "prop-types": "^15.7.2", + "symbol-observable": "^4.0.0", + "ts-invariant": "^0.10.3", + "tslib": "^2.3.0", + "zen-observable-ts": "^1.2.5" + } + } + } + }, + "@apollo/utils.dropunuseddefinitions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz", + "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==", + "requires": {} + }, + "@apollo/utils.keyvaluecache": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.1.tgz", + "integrity": "sha512-nLgYLomqjVimEzQ4cdvVQkcryi970NDvcRVPfd0OPeXhBfda38WjBq+WhQFk+czSHrmrSp34YHBxpat0EtiowA==", + "requires": { + "@apollo/utils.logger": "^1.0.0", + "lru-cache": "^7.10.1" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==" + } + } + }, + "@apollo/utils.logger": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.0.tgz", + "integrity": "sha512-dx9XrjyisD2pOa+KsB5RcDbWIAdgC91gJfeyLCgy0ctJMjQe7yZK5kdWaWlaOoCeX0z6YI9iYlg7vMPyMpQF3Q==" + }, + "@apollo/utils.printwithreducedwhitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz", + "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==", + "requires": {} + }, + "@apollo/utils.removealiases": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz", + "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==", + "requires": {} + }, + "@apollo/utils.sortast": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz", + "integrity": "sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA==", + "requires": { + "lodash.sortby": "^4.7.0" + } + }, + "@apollo/utils.stripsensitiveliterals": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz", + "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==", + "requires": {} + }, + "@apollo/utils.usagereporting": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.0.tgz", + "integrity": "sha512-5PL7hJMkTPmdo3oxPtigRrIyPxDk/ddrUryHPDaezL1lSFExpNzsDd2f1j0XJoHOg350GRd3LyD64caLA2PU1w==", + "requires": { + "@apollo/utils.dropunuseddefinitions": "^1.1.0", + "@apollo/utils.printwithreducedwhitespace": "^1.1.0", + "@apollo/utils.removealiases": "1.0.0", + "@apollo/utils.sortast": "^1.1.0", + "@apollo/utils.stripsensitiveliterals": "^1.2.0", + "apollo-reporting-protobuf": "^3.3.1" + }, + "dependencies": { + "@apollo/protobufjs": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", + "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + } + }, + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "apollo-reporting-protobuf": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", + "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", + "requires": { + "@apollo/protobufjs": "1.2.4" + } + } + } + }, + "@apollographql/apollo-tools": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz", + "integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==", + "requires": {} + }, + "@apollographql/graphql-playground-html": { + "version": "1.6.27", + "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.27.tgz", + "integrity": "sha512-tea2LweZvn6y6xFV11K0KC8ETjmm52mQrW+ezgB2O/aTQf8JGyFmMcRPFgUaQZeHbWdm8iisDC6EjOKsXu0nfw==", + "requires": { + "xss": "^1.0.8" + } + }, + "@apollographql/graphql-upload-8-fork": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@apollographql/graphql-upload-8-fork/-/graphql-upload-8-fork-8.1.3.tgz", + "integrity": "sha512-ssOPUT7euLqDXcdVv3Qs4LoL4BPtfermW1IOouaqEmj36TpHYDmYDIbKoSQxikd9vtMumFnP87OybH7sC9fJ6g==", + "requires": { + "@types/express": "*", + "@types/fs-capacitor": "*", + "@types/koa": "*", + "busboy": "^0.3.1", + "fs-capacitor": "^2.0.4", + "http-errors": "^1.7.3", + "object-path": "^0.11.4" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "peer": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", + "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", + "peer": true + }, + "@babel/core": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", + "peer": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.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" + }, + "dependencies": { + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "peer": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "peer": true + } + } + }, + "@babel/generator": { + "version": "7.18.12", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", + "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", + "peer": true, + "requires": { + "@babel/types": "^7.18.10", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "peer": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "peer": true + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "peer": true, + "requires": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "peer": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "peer": true + }, + "@babel/helper-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "peer": true, + "requires": { + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "peer": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "peer": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "peer": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "peer": true + }, + "@babel/helper-simple-access": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "peer": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "peer": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "peer": true + }, + "@babel/helper-validator-identifier": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "peer": true + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "peer": true + }, + "@babel/helpers": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", + "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", + "peer": true, + "requires": { + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "peer": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "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==", + "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==", + "peer": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "peer": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.18.11", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz", + "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==", + "peer": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "peer": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.18.11", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.11.tgz", + "integrity": "sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==", + "peer": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.11", + "@babel/types": "^7.18.10", + "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==", + "peer": true + } + } + }, + "@babel/types": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", + "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", + "peer": true, + "requires": { + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "peer": true + } + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "peer": true + }, + "@capacitor/core": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-4.0.1.tgz", + "integrity": "sha512-gita0j7UPoGyHejAUsrW1OrkyDSp7gfHn45fkeQclHRSz7UWLF4hqE1R/6INsVmIFu/amIApxfHed8h3m/Fm7g==", + "peer": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "peer": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@deep-foundation/deeplinks": { + "version": "0.0.93", + "resolved": "https://registry.npmjs.org/@deep-foundation/deeplinks/-/deeplinks-0.0.93.tgz", + "integrity": "sha512-UIvVax1+QlM94ehM0oSeRRQHwBzq8cV3Ec/jMMFl7j+QXIr8QRqKf7TYipNRt+faFTlfK25wEbDGQJi0elTRPQ==", + "requires": { + "@apollo/client": "^3.5.8", + "@deep-foundation/hasura": "0.0.17", + "@deep-foundation/materialized-path": "^0.0.11", + "@deep-foundation/react-hasura": "0.0.5", + "@deep-foundation/store": "0.0.6", + "@types/jest": "^26.0.22", + "@types/node": "^14.17.34", + "@types/react": "^17.0.19", + "apollo-boost": "^0.4.9", + "apollo-server": "^2.21.0", + "apollo-server-core": "^3.6.1", + "apollo-server-express": "^3.5.0", + "atob": "^2.1.2", + "axios": "^0.24.0", + "body-parser": "^1.19.0", + "buffer": "^6.0.3", + "chai": "^4.3.4", + "cross-env": "^7.0.3", + "debug": "^4.3.3", + "dotenv": "^8.2.0", + "fix-path": "^3.0.0", + "get-port": "^5.1.1", + "gists": "^2.0.0", + "graphql": "^15.5.0", + "graphql-playground-middleware-express": "^1.7.23", + "graphql-tag": "^2.11.0", + "http-proxy-middleware": "^2.0.1", + "internal-ip": "^6.2.0", + "jsonwebtoken": "^8.5.1", + "microtime": "^3.0.0", + "moesif-nodejs": "^3.1.19", + "nodemon": "^2.0.15", + "rimraf": "^3.0.2", + "supports-color": "^9.2.1", + "ts-jest": "^26.5.4", + "uniqid": "^5.3.0", + "wait-on": "^6.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + } + } + }, + "@deep-foundation/hasura": { + "version": "0.0.17", + "resolved": "https://registry.npmjs.org/@deep-foundation/hasura/-/hasura-0.0.17.tgz", + "integrity": "sha512-rtB7gG8/fsX9k6ykLo7/p1zQlD7XcVNv0MetDPjW5Flq65UZsSdT6xaqo4TmdhF7bWTOku6u3f8SW4xOoFgIRw==", + "requires": { + "@apollo/client": "^3.5.5", + "@apollo/react-hooks": "^4.0.0", + "@types/node": "^14.17.14", + "@types/react": "^17.0.19", + "apollo-boost": "^0.4.9", + "apollo-link": "^1.2.14", + "apollo-link-ws": "^1.0.20", + "apollo-server-micro": "^2.21.0", + "axios": "^0.21.1", + "babel-register": "^6.26.0", + "cors": "^2.8.5", + "debug": "^4.3.1", + "dotenv": "^8.2.0", + "express": "^4.17.1", + "migrate": "^1.7.0", + "node-fetch": "^2.6.1", + "normalize-url": "^7.0.2", + "path": "^0.12.7", + "react": "^17.0.1", + "rimraf": "^3.0.2", + "ts-node": "^9.1.1", + "ws": "^7.5.6" + }, + "dependencies": { + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + }, + "react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "@deep-foundation/materialized-path": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/@deep-foundation/materialized-path/-/materialized-path-0.0.11.tgz", + "integrity": "sha512-VUiqjTRRwWTm+JZd03w5czSwAOzmKN8Y0h0Hse1jtRFz277qWQqPCL2T40QsQODddn8mEMpiHg2eDS7atBKkhA==", + "requires": { + "@types/jest": "^26.0.22", + "@types/node": "^14.0.23", + "@types/react": "^17.0.2", + "benchmark": "^2.1.4", + "chance": "^1.1.7", + "graphql": "^15.5.3", + "microtime": "^3.0.0", + "ts-jest": "^26.5.4", + "typescript": "^3.9.7" + }, + "dependencies": { + "typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==" + } + } + }, + "@deep-foundation/react-hasura": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@deep-foundation/react-hasura/-/react-hasura-0.0.5.tgz", + "integrity": "sha512-3ah7heyiamk3TzEIJ+wA9GLFcarph3e9qjWb/pGIdmZer9aaIOE5hXPba26g4Q7raKmevZK4QC7Cou2/uwbXMA==", + "requires": { + "@apollo/react-hooks": "^4.0.0", + "debug": "^4.3.1" + } + }, + "@deep-foundation/store": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@deep-foundation/store/-/store-0.0.6.tgz", + "integrity": "sha512-KBpyvl9S4Pkl71oAnC6c0pQg3uTQGRN3GMclkinM6OR1UVFXMGMSXKk6DQ8QWWEKJ0KW7evUR2Ha0CW2aW1ptA==", + "requires": { + "debug": "^4.1.1", + "lodash": "^4.17.19", + "react-cookie": "^4.0.3", + "universal-cookie": "^4.0.3" + } + }, + "@graphql-tools/merge": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.3.tgz", + "integrity": "sha512-EfULshN2s2s2mhBwbV9WpGnoehRLe7eIMdZrKfHhxlBWOvtNUd3KSCN0PUdAMd7lj1jXUW9KYdn624JrVn6qzg==", + "requires": { + "@graphql-tools/utils": "8.10.0", + "tslib": "^2.4.0" + } + }, + "@graphql-tools/mock": { + "version": "8.7.3", + "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.7.3.tgz", + "integrity": "sha512-U9e3tZenFvSTf0TAaFgwqO84cGNEbgzWXvboqJPth873dMag8sOlLyOBZceVzAZP7ptwfLbhm3S0Qq4ffI7mCw==", + "requires": { + "@graphql-tools/schema": "9.0.1", + "@graphql-tools/utils": "8.10.0", + "fast-json-stable-stringify": "^2.1.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@graphql-tools/schema": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.1.tgz", + "integrity": "sha512-Y6apeiBmvXEz082IAuS/ainnEEQrzMECP1MRIV72eo2WPa6ZtLYPycvIbd56Z5uU2LKP4XcWRgK6WUbCyN16Rw==", + "requires": { + "@graphql-tools/merge": "8.3.3", + "@graphql-tools/utils": "8.10.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + } + } + } + }, + "@graphql-tools/schema": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz", + "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==", + "requires": { + "@graphql-tools/merge": "8.3.1", + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "dependencies": { + "@graphql-tools/merge": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz", + "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==", + "requires": { + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0" + } + }, + "@graphql-tools/utils": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", + "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", + "requires": { + "tslib": "^2.4.0" + } + } + } + }, + "@graphql-tools/utils": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.10.0.tgz", + "integrity": "sha512-yI+V373FdXQbYfqdarehn9vRWDZZYuvyQ/xwiv5ez2BbobHrqsexF7qs56plLRaQ8ESYpVAjMQvJWe9s23O0Jg==", + "requires": { + "tslib": "^2.4.0" + } + }, + "@graphql-typed-document-node/core": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", + "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", + "requires": {} + }, + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "peer": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "peer": true + }, + "@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "peer": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": 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==", + "peer": 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==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": 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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "peer": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "peer": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": 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==", + "peer": 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==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "peer": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "peer": true, + "requires": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" + } + }, + "@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "peer": true, + "requires": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + } + }, + "@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "peer": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + } + }, + "@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "peer": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "node-notifier": "^8.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": 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==", + "peer": 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==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "peer": 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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "peer": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "peer": true + } + } + }, + "@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "peer": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "peer": true, + "requires": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + } + }, + "@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "peer": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": 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==", + "peer": 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==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "peer": 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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@josephg/resolvable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", + "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==" + }, + "@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==", + "peer": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "peer": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "peer": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "peer": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "peer": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "requires": { + "debug": "^4.1.1" + } + }, + "@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==" + }, + "@next/env": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/env/-/env-12.2.5.tgz", + "integrity": "sha512-vLPLV3cpPGjUPT3PjgRj7e3nio9t6USkuew3JE/jMeon/9Mvp1WyR18v3iwnCuX7eUAm1HmAbJHHLAbcu/EJcw==", + "peer": true + }, + "@next/swc-android-arm-eabi": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.5.tgz", + "integrity": "sha512-cPWClKxGhgn2dLWnspW+7psl3MoLQUcNqJqOHk2BhNcou9ARDtC0IjQkKe5qcn9qg7I7U83Gp1yh2aesZfZJMA==", + "optional": true, + "peer": true + }, + "@next/swc-android-arm64": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.2.5.tgz", + "integrity": "sha512-vMj0efliXmC5b7p+wfcQCX0AfU8IypjkzT64GiKJD9PgiA3IILNiGJr1fw2lyUDHkjeWx/5HMlMEpLnTsQslwg==", + "optional": true, + "peer": true + }, + "@next/swc-darwin-arm64": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.5.tgz", + "integrity": "sha512-VOPWbO5EFr6snla/WcxUKtvzGVShfs302TEMOtzYyWni6f9zuOetijJvVh9CCTzInnXAZMtHyNhefijA4HMYLg==", + "optional": true, + "peer": true + }, + "@next/swc-darwin-x64": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.5.tgz", + "integrity": "sha512-5o8bTCgAmtYOgauO/Xd27vW52G2/m3i5PX7MUYePquxXAnX73AAtqA3WgPXBRitEB60plSKZgOTkcpqrsh546A==", + "optional": true, + "peer": true + }, + "@next/swc-freebsd-x64": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.5.tgz", + "integrity": "sha512-yYUbyup1JnznMtEBRkK4LT56N0lfK5qNTzr6/DEyDw5TbFVwnuy2hhLBzwCBkScFVjpFdfiC6SQAX3FrAZzuuw==", + "optional": true, + "peer": true + }, + "@next/swc-linux-arm-gnueabihf": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.5.tgz", + "integrity": "sha512-2ZE2/G921Acks7UopJZVMgKLdm4vN4U0yuzvAMJ6KBavPzqESA2yHJlm85TV/K9gIjKhSk5BVtauIUntFRP8cg==", + "optional": true, + "peer": true + }, + "@next/swc-linux-arm64-gnu": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.5.tgz", + "integrity": "sha512-/I6+PWVlz2wkTdWqhlSYYJ1pWWgUVva6SgX353oqTh8njNQp1SdFQuWDqk8LnM6ulheVfSsgkDzxrDaAQZnzjQ==", + "optional": true, + "peer": true + }, + "@next/swc-linux-arm64-musl": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.5.tgz", + "integrity": "sha512-LPQRelfX6asXyVr59p5sTpx5l+0yh2Vjp/R8Wi4X9pnqcayqT4CUJLiHqCvZuLin3IsFdisJL0rKHMoaZLRfmg==", + "optional": true, + "peer": true + }, + "@next/swc-linux-x64-gnu": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.5.tgz", + "integrity": "sha512-0szyAo8jMCClkjNK0hknjhmAngUppoRekW6OAezbEYwHXN/VNtsXbfzgYOqjKWxEx3OoAzrT3jLwAF0HdX2MEw==", + "optional": true, + "peer": true + }, + "@next/swc-linux-x64-musl": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.5.tgz", + "integrity": "sha512-zg/Y6oBar1yVnW6Il1I/08/2ukWtOG6s3acdJdEyIdsCzyQi4RLxbbhkD/EGQyhqBvd3QrC6ZXQEXighQUAZ0g==", + "optional": true, + "peer": true + }, + "@next/swc-win32-arm64-msvc": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.5.tgz", + "integrity": "sha512-3/90DRNSqeeSRMMEhj4gHHQlLhhKg5SCCoYfE3kBjGpE63EfnblYUqsszGGZ9ekpKL/R4/SGB40iCQr8tR5Jiw==", + "optional": true, + "peer": true + }, + "@next/swc-win32-ia32-msvc": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.5.tgz", + "integrity": "sha512-hGLc0ZRAwnaPL4ulwpp4D2RxmkHQLuI8CFOEEHdzZpS63/hMVzv81g8jzYA0UXbb9pus/iTc3VRbVbAM03SRrw==", + "optional": true, + "peer": true + }, + "@next/swc-win32-x64-msvc": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.5.tgz", + "integrity": "sha512-7h5/ahY7NeaO2xygqVrSG/Y8Vs4cdjxIjowTZ5W6CKoTKn7tmnuxlUc2h74x06FKmbhAd9agOjr/AOKyxYYm9Q==", + "optional": true, + "peer": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "peer": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "peer": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@swc/helpers": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.3.tgz", + "integrity": "sha512-6JrF+fdUK2zbGpJIlN7G3v966PQjyx/dPt1T9km2wj+EUBqgrxCk3uX4Kct16MIm9gGxfKRcfax2hVf5jvlTzA==", + "peer": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "peer": true + }, + "@types/accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "peer": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "peer": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "peer": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.0.tgz", + "integrity": "sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw==", + "peer": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/content-disposition": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", + "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==" + }, + "@types/cookie": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz", + "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==" + }, + "@types/cookies": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", + "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", + "requires": { + "@types/connect": "*", + "@types/express": "*", + "@types/keygrip": "*", + "@types/node": "*" + } + }, + "@types/cors": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==" + }, + "@types/expect": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==" + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.30", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", + "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/formidable": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.5.tgz", + "integrity": "sha512-zu3mQJa4hDNubEMViSj937602XdDGzK7Q5pJ5QmLUbNxclbo9tZGt5jtwM352ssZ+pqo5V4H14TBvT/ALqQQcA==", + "requires": { + "@types/node": "*" + } + }, + "@types/fs-capacitor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz", + "integrity": "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/glob-stream": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-6.1.1.tgz", + "integrity": "sha512-AGOUTsTdbPkRS0qDeyeS+6KypmfVpbT5j23SN8UPG63qjKXNKjXn6V9wZUr8Fin0m9l8oGYaPK8b2WUMF8xI1A==", + "requires": { + "@types/glob": "*", + "@types/node": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "peer": true, + "requires": { + "@types/node": "*" + } + }, + "@types/gulp": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.9.tgz", + "integrity": "sha512-zzT+wfQ8uwoXjDhRK9Zkmmk09/fbLLmN/yDHFizJiEKIve85qutOnXcP/TM2sKPBTU+Jc16vfPbOMkORMUBN7Q==", + "requires": { + "@types/undertaker": "*", + "@types/vinyl-fs": "*", + "chokidar": "^3.3.1" + } + }, + "@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "requires": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "@types/http-assert": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", + "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==" + }, + "@types/http-errors": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", + "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==" + }, + "@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "26.0.24", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", + "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", + "requires": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, + "@types/keygrip": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", + "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" + }, + "@types/koa": { + "version": "2.13.5", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz", + "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==", + "requires": { + "@types/accepts": "*", + "@types/content-disposition": "*", + "@types/cookies": "*", + "@types/http-assert": "*", + "@types/http-errors": "*", + "@types/keygrip": "*", + "@types/koa-compose": "*", + "@types/node": "*" + } + }, + "@types/koa-compose": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", + "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", + "requires": { + "@types/koa": "*" + } + }, + "@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" + }, + "@types/node": { + "version": "14.18.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.18.tgz", + "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig==" + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "peer": true + }, + "@types/prettier": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz", + "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==", + "peer": true + }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "@types/react": { + "version": "17.0.48", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.48.tgz", + "integrity": "sha512-zJ6IYlJ8cYYxiJfUaZOQee4lh99mFihBoqkOSEGV+dFi9leROW6+PgstzQ+w3gWTnUfskALtQPGHK6dYmPj+2A==", + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "requires": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "peer": true + }, + "@types/undertaker": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.7.tgz", + "integrity": "sha512-xuY7nBwo1zSRoY2aitp/HArHfTulFAKql2Fr4b4mWbBBP+F50n7Jm6nwISTTMaDk2xvl92O10TTejVF0Q9mInw==", + "requires": { + "@types/node": "*", + "@types/undertaker-registry": "*", + "async-done": "~1.3.2" + } + }, + "@types/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==" + }, + "@types/vinyl": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", + "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", + "requires": { + "@types/expect": "^1.20.4", + "@types/node": "*" + } + }, + "@types/vinyl-fs": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/@types/vinyl-fs/-/vinyl-fs-2.4.12.tgz", + "integrity": "sha512-LgBpYIWuuGsihnlF+OOWWz4ovwCYlT03gd3DuLwex50cYZLmX3yrW+sFF9ndtmh7zcZpS6Ri47PrIu+fV+sbXw==", + "requires": { + "@types/glob-stream": "*", + "@types/node": "*", + "@types/vinyl": "*" + } + }, + "@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "requires": { + "@types/node": "*" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + }, + "@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "@types/zen-observable": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz", + "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==" + }, + "@wry/context": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.6.1.tgz", + "integrity": "sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@wry/equality": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.3.tgz", + "integrity": "sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@wry/trie": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.2.tgz", + "integrity": "sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "peer": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accept": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/accept/-/accept-3.1.3.tgz", + "integrity": "sha512-OgOEAidVEOKPup+Gv2+2wdH2AgVKI9LxsJ4hicdJ6cY0faUuZdZoi56kkXWlHp9qicN1nWQLmW5ZRGk+SBS5xg==", + "requires": { + "boom": "7.x.x", + "hoek": "6.x.x" + } + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "peer": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "peer": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "peer": true + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "peer": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "peer": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "apollo-boost": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/apollo-boost/-/apollo-boost-0.4.9.tgz", + "integrity": "sha512-05y5BKcDaa8w47f8d81UVwKqrAjn8uKLv6QM9fNdldoNzQ+rnOHgFlnrySUZRz9QIT3vPftQkEz2UEASp1Mi5g==", + "requires": { + "apollo-cache": "^1.3.5", + "apollo-cache-inmemory": "^1.6.6", + "apollo-client": "^2.6.10", + "apollo-link": "^1.0.6", + "apollo-link-error": "^1.0.3", + "apollo-link-http": "^1.3.1", + "graphql-tag": "^2.4.2", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0" + }, + "dependencies": { + "ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "requires": { + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "apollo-cache": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.5.tgz", + "integrity": "sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA==", + "requires": { + "apollo-utilities": "^1.3.4", + "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "apollo-cache-control": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.14.0.tgz", + "integrity": "sha512-qN4BCq90egQrgNnTRMUHikLZZAprf3gbm8rC5Vwmc6ZdLolQ7bFsa769Hqi6Tq/lS31KLsXBLTOsRbfPHph12w==", + "requires": { + "apollo-server-env": "^3.1.0", + "apollo-server-plugin-base": "^0.13.0" + } + }, + "apollo-cache-inmemory": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6.tgz", + "integrity": "sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A==", + "requires": { + "apollo-cache": "^1.3.5", + "apollo-utilities": "^1.3.4", + "optimism": "^0.10.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0" + }, + "dependencies": { + "@wry/context": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.4.4.tgz", + "integrity": "sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==", + "requires": { + "@types/node": ">=6", + "tslib": "^1.9.3" + } + }, + "optimism": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.10.3.tgz", + "integrity": "sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw==", + "requires": { + "@wry/context": "^0.4.0" + } + }, + "ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "requires": { + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "apollo-client": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.6.10.tgz", + "integrity": "sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA==", + "requires": { + "@types/zen-observable": "^0.8.0", + "apollo-cache": "1.3.5", + "apollo-link": "^1.0.0", + "apollo-utilities": "1.3.4", + "symbol-observable": "^1.0.2", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0", + "zen-observable": "^0.8.0" + }, + "dependencies": { + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, + "ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "requires": { + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "apollo-datasource": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.9.0.tgz", + "integrity": "sha512-y8H99NExU1Sk4TvcaUxTdzfq2SZo6uSj5dyh75XSQvbpH6gdAXIW9MaBcvlNC7n0cVPsidHmOcHOWxJ/pTXGjA==", + "requires": { + "apollo-server-caching": "^0.7.0", + "apollo-server-env": "^3.1.0" + } + }, + "apollo-graphql": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.9.7.tgz", + "integrity": "sha512-bezL9ItUWUGHTm1bI/XzIgiiZbhXpsC7uxk4UxFPmcVJwJsDc3ayZ99oXxAaK+3Rbg/IoqrHckA6CwmkCsbaSA==", + "requires": { + "core-js-pure": "^3.10.2", + "lodash.sortby": "^4.7.0", + "sha.js": "^2.4.11" + } + }, + "apollo-link": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz", + "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==", + "requires": { + "apollo-utilities": "^1.3.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.9.3", + "zen-observable-ts": "^0.8.21" + }, + "dependencies": { + "ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "requires": { + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "zen-observable-ts": { + "version": "0.8.21", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz", + "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==", + "requires": { + "tslib": "^1.9.3", + "zen-observable": "^0.8.0" + } + } + } + }, + "apollo-link-error": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.13.tgz", + "integrity": "sha512-jAZOOahJU6bwSqb2ZyskEK1XdgUY9nkmeclCrW7Gddh1uasHVqmoYc4CKdb0/H0Y1J9lvaXKle2Wsw/Zx1AyUg==", + "requires": { + "apollo-link": "^1.2.14", + "apollo-link-http-common": "^0.2.16", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "apollo-link-http": { + "version": "1.5.17", + "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.17.tgz", + "integrity": "sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg==", + "requires": { + "apollo-link": "^1.2.14", + "apollo-link-http-common": "^0.2.16", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "apollo-link-http-common": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz", + "integrity": "sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg==", + "requires": { + "apollo-link": "^1.2.14", + "ts-invariant": "^0.4.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "requires": { + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "apollo-link-ws": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/apollo-link-ws/-/apollo-link-ws-1.0.20.tgz", + "integrity": "sha512-mjSFPlQxmoLArpHBeUb2Xj+2HDYeTaJqFGOqQ+I8NVJxgL9lJe84PDWcPah/yMLv3rB7QgBDSuZ0xoRFBPlySw==", + "requires": { + "apollo-link": "^1.2.14", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "apollo-reporting-protobuf": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-0.8.0.tgz", + "integrity": "sha512-B3XmnkH6Y458iV6OsA7AhfwvTgeZnFq9nPVjbxmLKnvfkEl8hYADtz724uPa0WeBiD7DSFcnLtqg9yGmCkBohg==", + "requires": { + "@apollo/protobufjs": "1.2.2" + } + }, + "apollo-server": { "version": "2.25.4", "resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-2.25.4.tgz", "integrity": "sha512-CNvaSd0wkacfsvprSI843qTLKfBQpLik9e0y77On+OhdObkmq1ij8qkpF8awNg0iJPG5+RYBGNC7c/PA6vO53A==", @@ -15968,6 +22556,15 @@ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "peer": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -16247,6 +22844,79 @@ "babel-template": "^6.24.1" } }, + "babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "peer": true, + "requires": { + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": 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==", + "peer": 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==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": 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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "babel-messages": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", @@ -16255,6 +22925,52 @@ "babel-runtime": "^6.22.0" } }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "dependencies": { + "istanbul-lib-instrument": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "peer": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "peer": true + } + } + }, + "babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "peer": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, "babel-plugin-transform-runtime": { "version": "6.15.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.15.0.tgz", @@ -16263,6 +22979,36 @@ "babel-runtime": "^6.9.0" } }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "peer": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "peer": true, + "requires": { + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, "babel-register": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", @@ -16569,6 +23315,24 @@ "fill-range": "^7.0.1" } }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "peer": true + }, + "browserslist": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "peer": true, + "requires": { + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" + } + }, "bs-logger": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", @@ -16577,6 +23341,15 @@ "fast-json-stable-stringify": "2.x" } }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "peer": true, + "requires": { + "node-int64": "^0.4.0" + } + }, "buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -16644,11 +23417,32 @@ "get-intrinsic": "^1.0.2" } }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "peer": true + }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, + "caniuse-lite": { + "version": "1.0.30001378", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001378.tgz", + "integrity": "sha512-JVQnfoO7FK7WvU4ZkBRbPjaot4+YqxogSDosHv0Hv5mWpUESmN+UubMU6L/hGz8QlQ2aY5U0vR6MOs6j/CXpNA==", + "peer": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "peer": true, + "requires": { + "rsvp": "^4.8.4" + } + }, "card-validator": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/card-validator/-/card-validator-8.1.1.tgz", @@ -16700,6 +23494,12 @@ "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.8.tgz", "integrity": "sha512-v7fi5Hj2VbR6dJEGRWLmJBA83LJMS47pkAbmROFxHWd9qmE1esHRZW8Clf1Fhzr3rjxnNZVCjOEv/ivFxeIMtg==" }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "peer": true + }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -16730,6 +23530,12 @@ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" }, + "cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "peer": true + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -16852,6 +23658,12 @@ "readable-stream": "^2.3.5" } }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "peer": true + }, "co-body": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz", @@ -16868,6 +23680,12 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "peer": true + }, "collection-map": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", @@ -17125,6 +23943,29 @@ "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "peer": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "peer": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "peer": true + } + } + }, "csstype": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", @@ -17152,6 +23993,51 @@ "assert-plus": "^1.0.0" } }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "peer": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "dependencies": { + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "peer": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "peer": true + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "peer": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "peer": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + } + } + }, "date-fns": { "version": "2.25.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz", @@ -17175,6 +24061,12 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "decimal.js": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.0.tgz", + "integrity": "sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg==", + "peer": true + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -17188,6 +24080,18 @@ "type-detect": "^4.0.0" } }, + "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==", + "peer": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "peer": true + }, "default-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", @@ -17322,6 +24226,12 @@ "repeating": "^2.0.0" } }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "peer": true + }, "devtools-protocol": { "version": "0.0.1019158", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", @@ -17353,11 +24263,33 @@ "path-type": "^4.0.0" } }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "peer": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "peer": true + } + } + }, "dotenv": { "version": "8.6.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" }, + "dotenv-expand": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.3.tgz", + "integrity": "sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==" + }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -17410,6 +24342,18 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, + "electron-to-chromium": { + "version": "1.4.224", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.224.tgz", + "integrity": "sha512-dOujC5Yzj0nOVE23iD5HKqrRSDj2SD7RazpZS/b/WX85MtO6/LzKDF4TlYZTBteB+7fvSg5JpWh0sN7fImNF8w==", + "peer": true + }, + "emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "peer": true + }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", @@ -17528,6 +24472,12 @@ "es6-symbol": "^3.1.1" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "peer": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -17538,6 +24488,40 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "peer": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "peer": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "peer": true + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "peer": true + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -17553,6 +24537,12 @@ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" }, + "exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "peer": true + }, "execa": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", @@ -17600,6 +24590,12 @@ } } }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "peer": true + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -17704,6 +24700,46 @@ "homedir-polyfill": "^1.0.1" } }, + "expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "peer": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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==", + "peer": 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==", + "peer": true + } + } + }, "express": { "version": "4.18.1", "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", @@ -17937,6 +24973,15 @@ "reusify": "^1.0.4" } }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "peer": true, + "requires": { + "bser": "2.1.1" + } + }, "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -18279,6 +25324,12 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, + "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==", + "peer": true + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -18299,6 +25350,12 @@ "has-symbols": "^1.0.1" } }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "peer": true + }, "get-port": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", @@ -18770,6 +25827,13 @@ } } }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", + "optional": true, + "peer": true + }, "gulp": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", @@ -18955,706 +26019,1979 @@ "resolved": "https://registry.npmjs.org/gulp-run-command/-/gulp-run-command-0.0.10.tgz", "integrity": "sha512-i6o4XRqoadZB2doWCqkrCe7FmFwqPZ0Fxx74FGt83/KT5wKRRaKiFh598W64HE0Br9es6Oyq+nA+/AWbCfeSYQ==", "requires": { - "babel-plugin-transform-runtime": "6.15.0", - "cross-spawn": "4.0.0", - "spawn-args": "0.2.0", - "timeout-as-promise": "^1.0.0" + "babel-plugin-transform-runtime": "6.15.0", + "cross-spawn": "4.0.0", + "spawn-args": "0.2.0", + "timeout-as-promise": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.0.tgz", + "integrity": "sha1-glR3SrR4a4xbPPTfumbOVjkywlI=", + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "requires": { + "glogg": "^1.0.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, + "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==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hoek": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", + "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "peer": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "peer": true + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "dependencies": { - "cross-spawn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.0.tgz", - "integrity": "sha1-glR3SrR4a4xbPPTfumbOVjkywlI=", - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" } } }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "peer": true, "requires": { - "glogg": "^1.0.0" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" } }, - "har-schema": { + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + }, + "i": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", + "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==" + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "peer": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "peer": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "inflation": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", + "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==" }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "has": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "internal-ip": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", + "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", + "requires": { + "default-gateway": "^6.0.0", + "ipaddr.js": "^1.9.1", + "is-ip": "^3.1.0", + "p-event": "^4.2.0" + } + }, + "internal-slot": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", "requires": { - "function-bind": "^1.1.1" + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is_js": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/is_js/-/is_js-0.9.0.tgz", + "integrity": "sha512-8Y5EHSH+TonfUHX2g3pMJljdbGavg55q4jmHzghJCdqYDbdNROC8uw/YFQwIRCRqRJT1EY3pJefz+kglw+o7sg==" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "requires": { - "ansi-regex": "^2.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, - "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==" + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "requires": { - "get-intrinsic": "^1.1.1" + "ci-info": "^2.0.0" } }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "requires": { + "has": "^1.0.3" + } }, - "has-tostringtag": { + "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "has-symbols": "^1.0.2" + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } } }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "has-tostringtag": "^1.0.0" } }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" }, "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "optional": true, + "peer": true + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "is-buffer": "^1.1.5" + "isobject": "^3.0.1" } } } }, - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "peer": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "requires": { - "react-is": "^16.7.0" + "is-extglob": "^2.1.1" } }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", + "is-ip": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", + "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" + "ip-regex": "^4.0.0" } }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "requires": { - "parse-passwd": "^1.0.0" + "has-tostringtag": "^1.0.0" } }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" }, - "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "peer": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "dependencies": { - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - } + "is-unc-path": "^1.0.0" } }, - "http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "requires": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "call-bind": "^1.0.2" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "has-tostringtag": "^1.0.0" } }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "requires": { - "agent-base": "6", - "debug": "4" + "has-symbols": "^1.0.2" } }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - }, - "i": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", - "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==" + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "unc-path-regex": "^0.1.2" } }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==" + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } }, - "inflation": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", - "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==" + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "optional": true, + "peer": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "is-docker": "^2.0.0" } }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, - "internal-ip": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", - "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "peer": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "peer": true, "requires": { - "default-gateway": "^6.0.0", - "ipaddr.js": "^1.9.1", - "is-ip": "^3.1.0", - "p-event": "^4.2.0" + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "peer": true + } } }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "peer": true, "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": 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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "peer": true, "requires": { - "loose-envify": "^1.0.0" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "peer": true + } } }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==" + "istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "peer": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + "iterall": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", + "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" }, - "is_js": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/is_js/-/is_js-0.9.0.tgz", - "integrity": "sha512-8Y5EHSH+TonfUHX2g3pMJljdbGavg55q4jmHzghJCdqYDbdNROC8uw/YFQwIRCRqRJT1EY3pJefz+kglw+o7sg==" + "jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", + "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "peer": true, + "requires": { + "@jest/core": "^26.6.3", + "import-local": "^3.0.2", + "jest-cli": "^26.6.3" + } }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "peer": true, "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, + "dependencies": { + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "peer": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "peer": true, + "requires": { + "pump": "^3.0.0" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "peer": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "peer": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "peer": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "peer": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "peer": true, "requires": { - "kind-of": "^6.0.0" + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" }, "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "peer": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "peer": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.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==", + "peer": 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==", + "peer": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "peer": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "peer": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "peer": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "peer": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "peer": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "peer": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "peer": true, "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": 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==", + "peer": 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==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": 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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", "requires": { - "ci-info": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "peer": true, "requires": { - "has": "^1.0.3" + "detect-newline": "^3.0.0" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "peer": true, "requires": { - "kind-of": "^6.0.0" + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" }, "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": 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==", + "peer": 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==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": 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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "peer": true, "requires": { - "has-tostringtag": "^1.0.0" + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "peer": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" } }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "peer": true, "requires": { - "is-plain-object": "^2.0.4" + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "peer": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" }, "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, "requires": { - "isobject": "^3.0.1" + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": 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==", + "peer": 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==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": 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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" } } } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", - "requires": { - "ip-regex": "^4.0.0" - } - }, - "is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "peer": true, "requires": { - "has-tostringtag": "^1.0.0" + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" } }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" - }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "peer": true, "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": 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==", + "peer": 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==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": 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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "peer": true, "requires": { - "is-unc-path": "^1.0.0" + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": 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==", + "peer": 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==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": 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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "peer": true, "requires": { - "call-bind": "^1.0.2" + "@jest/types": "^26.6.2", + "@types/node": "*" } }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "peer": true, + "requires": {} }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "peer": true + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "peer": true, "requires": { - "has-tostringtag": "^1.0.0" + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": 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==", + "peer": 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==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": 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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "peer": true, "requires": { - "has-symbols": "^1.0.2" + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + "jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "peer": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": 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==", + "peer": 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==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": 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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "peer": true, "requires": { - "unc-path-regex": "^0.1.2" + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "peer": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "peer": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.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==", + "peer": 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==", + "peer": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "peer": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "peer": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "peer": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "peer": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "peer": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "peer": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "peer": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } } }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "peer": true, "requires": { - "call-bind": "^1.0.2" + "@types/node": "*", + "graceful-fs": "^4.2.4" } }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "iterall": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", - "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" - }, - "jest-diff": { + "jest-snapshot": { "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "peer": true, "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" }, "dependencies": { "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -19663,6 +28000,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -19672,6 +28010,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -19679,28 +28018,26 @@ "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==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": 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==", + "peer": true, "requires": { "has-flag": "^4.0.0" } } } }, - "jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" - }, "jest-util": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", @@ -19759,6 +28096,171 @@ } } }, + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "peer": true, + "requires": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "peer": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": 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==", + "peer": 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==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": 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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "peer": true, + "requires": { + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": 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==", + "peer": 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==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": 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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "peer": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": 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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "joi": { "version": "17.6.0", "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", @@ -19776,11 +28278,112 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "peer": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" }, + "jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "peer": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "peer": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "peer": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "peer": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "peer": true + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "peer": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "peer": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + } + } + }, "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", @@ -19791,6 +28394,12 @@ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "peer": true + }, "json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", @@ -19880,6 +28489,12 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "peer": true + }, "koa-body": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/koa-body/-/koa-body-4.2.0.tgz", @@ -19920,7 +28535,23 @@ "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", "requires": { - "flush-write-stream": "^1.0.2" + "flush-write-stream": "^1.0.2" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "peer": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "peer": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, "liftoff": { @@ -19948,6 +28579,12 @@ } } }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "peer": true + }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -20070,6 +28707,23 @@ "yallist": "^4.0.0" } }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "peer": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "peer": true + } + } + }, "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -20090,6 +28744,15 @@ } } }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "peer": true, + "requires": { + "tmpl": "1.0.5" + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -20528,6 +29191,12 @@ "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", "optional": true }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "peer": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -20553,6 +29222,12 @@ } } }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "peer": true + }, "needle": { "version": "2.9.1", "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", @@ -20578,11 +29253,44 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, + "next": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/next/-/next-12.2.5.tgz", + "integrity": "sha512-tBdjqX5XC/oFs/6gxrZhjmiq90YWizUYU6qOWAfat7zJwrwapJ+BYgX2PmiacunXMaRpeVT4vz5MSPSLgNkrpA==", + "peer": true, + "requires": { + "@next/env": "12.2.5", + "@next/swc-android-arm-eabi": "12.2.5", + "@next/swc-android-arm64": "12.2.5", + "@next/swc-darwin-arm64": "12.2.5", + "@next/swc-darwin-x64": "12.2.5", + "@next/swc-freebsd-x64": "12.2.5", + "@next/swc-linux-arm-gnueabihf": "12.2.5", + "@next/swc-linux-arm64-gnu": "12.2.5", + "@next/swc-linux-arm64-musl": "12.2.5", + "@next/swc-linux-x64-gnu": "12.2.5", + "@next/swc-linux-x64-musl": "12.2.5", + "@next/swc-win32-arm64-msvc": "12.2.5", + "@next/swc-win32-ia32-msvc": "12.2.5", + "@next/swc-win32-x64-msvc": "12.2.5", + "@swc/helpers": "0.4.3", + "caniuse-lite": "^1.0.30001332", + "postcss": "8.4.14", + "styled-jsx": "5.0.4", + "use-sync-external-store": "1.2.0" + } + }, "next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "peer": true + }, "node-addon-api": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", @@ -20601,6 +29309,33 @@ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==" }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "peer": true + }, + "node-notifier": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", + "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", + "optional": true, + "peer": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "peer": true + }, "nodemon": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", @@ -22535,6 +31270,12 @@ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, + "nwsapi": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", + "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==", + "peer": true + }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -22732,6 +31473,28 @@ "@wry/trie": "^0.3.0" } }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "peer": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "dependencies": { + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "peer": true + } + } + }, "ordered-read-streams": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", @@ -22758,6 +31521,12 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" }, + "p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "peer": true + }, "p-event": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", @@ -22853,6 +31622,12 @@ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "peer": true + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -22935,6 +31710,12 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "peer": true + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -22958,6 +31739,12 @@ "pinkie": "^2.0.0" } }, + "pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "peer": true + }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -22976,6 +31763,23 @@ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, + "postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "peer": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "peer": true + }, "pretty-format": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", @@ -23057,6 +31861,16 @@ "winston": "2.x" } }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "peer": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, "prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -23209,12 +32023,12 @@ } }, "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "peer": true, "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "react-cookie": { @@ -23227,6 +32041,16 @@ "universal-cookie": "^4.0.0" } }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -23250,6 +32074,57 @@ "pify": "^3.0.0" } }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "peer": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "peer": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "peer": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "peer": true + } + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "peer": true + } + } + }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -23328,216 +32203,491 @@ "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", "requires": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==" + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "request-ip": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-2.2.0.tgz", + "integrity": "sha512-Hn4zUAr+XHbUs2RrfHur62t7+UhvtevqK32ordFewguEfNHUkhSdYgbG7PDGmXZEzqEXll9bei0+VMe6gkmuUQ==", + "requires": { + "is_js": "^0.9.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "peer": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "peer": true + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "requires": { + "value-or-function": "^3.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "revalidator": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", + "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" - }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "peer": true }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "requires": { - "is-finite": "^1.0.0" + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, - "replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==" + "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==" }, - "replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "requires": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" + "ret": "~0.1.10" } }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "peer": true, "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" }, "dependencies": { - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "peer": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "peer": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "peer": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "peer": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "peer": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "peer": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "peer": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "peer": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "peer": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "peer": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "peer": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "peer": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "peer": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "peer": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "peer": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "peer": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "peer": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "peer": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "peer": true + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "peer": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "peer": true, + "requires": { + "isexe": "^2.0.0" + } } } }, - "request-ip": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-2.2.0.tgz", - "integrity": "sha512-Hn4zUAr+XHbUs2RrfHur62t7+UhvtevqK32ordFewguEfNHUkhSdYgbG7PDGmXZEzqEXll9bei0+VMe6gkmuUQ==", - "requires": { - "is_js": "^0.9.0" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", - "requires": { - "value-or-function": "^3.0.0" - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, - "revalidator": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", - "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=" - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "requires": { - "queue-microtask": "^1.2.2" - } + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "peer": true, "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "xmlchars": "^2.2.0" } }, - "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==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "peer": true, "requires": { - "ret": "~0.1.10" + "loose-envify": "^1.1.0" } }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, "semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -23713,6 +32863,13 @@ "shell-env": "^0.3.0" } }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "optional": true, + "peer": true + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -23753,6 +32910,12 @@ } } }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "peer": true + }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -23903,6 +33066,12 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "peer": true + }, "source-map-resolve": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", @@ -23987,6 +33156,12 @@ "extend-shallow": "^3.0.0" } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "peer": true + }, "sshpk": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", @@ -24008,6 +33183,23 @@ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" }, + "stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "peer": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "peer": true + } + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -24113,6 +33305,33 @@ } } }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "peer": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "peer": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "peer": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -24188,6 +33407,12 @@ "ansi-regex": "^2.0.0" } }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "peer": true + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -24198,6 +33423,13 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" }, + "styled-jsx": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.4.tgz", + "integrity": "sha512-sDFWLbg4zR+UkNzfk5lPilyIgtpddfxXEULxhujorr5jtePTUqiPDc5BC0v1NRqTr/WaFBGQQUoYToGlF4B2KQ==", + "peer": true, + "requires": {} + }, "subscriptions-transport-ws": { "version": "0.9.19", "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz", @@ -24222,6 +33454,33 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz", "integrity": "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==" }, + "supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "peer": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": 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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "sver-compat": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", @@ -24236,6 +33495,12 @@ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==" }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "peer": true + }, "tar-fs": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", @@ -24282,6 +33547,33 @@ } } }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "peer": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "peer": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "peer": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -24315,6 +33607,12 @@ "resolved": "https://registry.npmjs.org/timeout-as-promise/-/timeout-as-promise-1.0.0.tgz", "integrity": "sha1-c2foEfyZKs/Nzaq/LlDfr4shV28=" }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "peer": true + }, "to-absolute-glob": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", @@ -24489,11 +33787,26 @@ "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "peer": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "peer": true + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -24508,6 +33821,15 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "peer": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, "typescript": { "version": "4.4.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", @@ -24631,6 +33953,12 @@ } } }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "peer": true + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -24677,6 +34005,16 @@ "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" }, + "update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "peer": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -24695,6 +34033,13 @@ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, + "use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peer": true, + "requires": {} + }, "util": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", @@ -24742,6 +34087,25 @@ "resolved": "https://registry.npmjs.org/uuid4/-/uuid4-2.0.3.tgz", "integrity": "sha512-CTpAkEVXMNJl2ojgtpLXHgz23dh8z81u6/HEPiQFOvBc/c2pde6TVHmH4uwY0d/GLF3tb7+VDAj4+2eJaQSdZQ==" }, + "v8-to-istanbul": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", + "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "peer": true + } + } + }, "v8flags": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", @@ -24852,6 +34216,24 @@ } } }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "peer": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "peer": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, "wait-on": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", @@ -24882,11 +34264,29 @@ } } }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "peer": true, + "requires": { + "makeerror": "1.0.12" + } + }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "peer": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, "whatwg-mimetype": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", @@ -24951,6 +34351,12 @@ } } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "peer": true + }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", @@ -24989,12 +34395,36 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "peer": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "requires": {} }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "peer": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "peer": true + }, "xss": { "version": "1.0.14", "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz", diff --git a/package.json b/package.json index 2438b517..fea22056 100644 --- a/package.json +++ b/package.json @@ -75,6 +75,7 @@ "concurrently": "^5.3.0", "cross-env": "^7.0.3", "del": "^6.0.0", + "dotenv-expand": "^8.0.3", "gulp": "^4.0.2", "gulp-run-command": "^0.0.10", "i": "^0.3.6", From 13c1c63d7dbcf1a18fd7cf98cf7a6d5e16f78571 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 14:48:30 +0600 Subject: [PATCH 135/683] Update route handler --- payments-eacq.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index ec22e664..db1dfeb7 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1018,14 +1018,13 @@ const f = async () => { type_id: SyncTextFile, string: { data: { - value: ` + value: /*javascript*/` async ( req, res, next, { deep, require, gql } ) => { - console.log({req}); const errorsConverter = { 7: 'Покупатель не найден', 53: 'Обратитесь к продавцу', @@ -1115,6 +1114,7 @@ const f = async () => { }; } }; + console.log({req.Status}); if (req.Status == 'AUTORIZED') { await confirm({ TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", From a3d1cd6185e129c49d4dab00c06b14c56dd89c31 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 14:52:40 +0600 Subject: [PATCH 136/683] Fix typo --- payments-eacq.cjs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index db1dfeb7..f1e75001 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1114,7 +1114,8 @@ const f = async () => { }; } }; - console.log({req.Status}); + const status = req.Status; + console.log({status}); if (req.Status == 'AUTORIZED') { await confirm({ TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", From 289389207b434a5f22e6be04a33f755ff55dca8f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 15:09:41 +0600 Subject: [PATCH 137/683] Add console logs --- payments-eacq.cjs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f1e75001..5fa02edd 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1210,6 +1210,7 @@ const f = async () => { }; const callTests = async () => { + console.log('callTests-start'); const PPayment = await deep.id(packageName, 'Payment'); const PObject = await deep.id(packageName, 'Object'); const PSum = await deep.id(packageName, 'Sum'); @@ -1348,7 +1349,7 @@ const f = async () => { }; const testFinishAuthorize = async () => { - console.log('testFinishAuthorize'); + console.log('testFinishAuthorize-start'); await testInit(); const { data: [ @@ -1368,14 +1369,13 @@ const f = async () => { page, url, }); + console.log('testFinishAuthorize-end'); }; const testConfirm = async () => { - console.log('testConfirm'); + console.log('testConfirm-start'); await testFinishAuthorize(); - await sleep(2000); - const { data } = await deep.select({ type_id: PPayed, }); @@ -1383,9 +1383,11 @@ const f = async () => { if (data.length === 0) { throw new Error('Payment is not confirmed'); } + console.log('testConfirm-end') }; const testCancel = async () => { + console.log('testCancel-end'); const testCancelAfterPay = async () => { const testCancelBeforeConfirmFullPrice = async () => {}; const testCancelBeforeConfirmCustomPriceX2 = async () => {}; @@ -1393,10 +1395,11 @@ const f = async () => { const testCancelAfterConfirmCustomPriceX2 = async () => {}; }; const testCancelBeforePay = async () => {}; + console.log('testCancel-end'); }; const testGetState = async () => { - console.log('testGetState'); + console.log('testGetState-end'); await testFinishAuthorize(); const payId = await deep.select({ type_id: PPay }); @@ -1426,10 +1429,11 @@ const f = async () => { const result = await getState(options); expect(result.error).to.equal(undefined); + console.log('testGetState-end'); }; const testGetCardList = async () => { - console.log('testGetCardList'); + console.log('testGetCardList-end'); await testFinishAuthorize(); const noTokenGetCardListData = { @@ -1445,6 +1449,7 @@ const f = async () => { const result = await getCardList(options); expect(result.error).to.equal(undefined); + console.log('testGetCardList-end'); }; await testInit(); From 2d45f25c86cde39a40bf81a0dffa672a63f96c37 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 15:11:03 +0600 Subject: [PATCH 138/683] Wait for PPayed --- payments-eacq.cjs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 5fa02edd..b19d688c 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1380,6 +1380,13 @@ const f = async () => { type_id: PPayed, }); + for (let i = 0; i < 4; i++) { + if(data.length > 0) { + break; + } + await sleep(5000); + } + if (data.length === 0) { throw new Error('Payment is not confirmed'); } From 964212e83b3b358da4c709ddbc8e043113d45b15 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 15:11:36 +0600 Subject: [PATCH 139/683] Add test console log --- payments-eacq.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index b19d688c..072ff291 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1025,6 +1025,7 @@ const f = async () => { next, { deep, require, gql } ) => { + console.log('helloSomeText'); const errorsConverter = { 7: 'Покупатель не найден', 53: 'Обратитесь к продавцу', From dc261ded2c9af4b3d1c58ed723f398c73992d787 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 15:12:33 +0600 Subject: [PATCH 140/683] Update doenvExpand call --- payments-eacq.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 072ff291..c46cd77d 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2,8 +2,8 @@ require('react'); require('graphql'); require('lodash'); require('subscriptions-transport-ws'); -var dotenv = require('dotenv'); -var dotenvExpand = require('dotenv-expand'); +const dotenv = require('dotenv'); +const dotenvExpand = require('dotenv-expand'); const { generateApolloClient } = require('@deep-foundation/hasura/client'); const { DeepClient } = require('@deep-foundation/deeplinks/imports/client'); const { @@ -16,7 +16,7 @@ const axios = require('axios'); const uniqid = require('uniqid'); var myEnv = dotenv.config(); -dotenvExpand(myEnv); +dotenvExpand.expand(myEnv); const packageName = '@deep-foundation/payments-eacq'; From 5f7d7e906a7a78bc7d65078b841093e5f7ef1087 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 15:13:37 +0600 Subject: [PATCH 141/683] Update console logs --- payments-eacq.cjs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index c46cd77d..16703762 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1262,7 +1262,7 @@ const f = async () => { console.log({ product: productId }); const testInit = async () => { - console.log('testInit'); + console.log('testInit-start'); const { data: [{ id: paymentId }], } = await deep.insert({ @@ -1347,6 +1347,7 @@ const f = async () => { if (!hasUrl) { throw new Error('Url not found.'); } + console.log('testInit-end'); }; const testFinishAuthorize = async () => { From 873c1b8bf66ff60c337a51060ff53318c6b77696 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 15:15:52 +0600 Subject: [PATCH 142/683] Get status from req.body --- payments-eacq.cjs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 16703762..41e73b05 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1115,9 +1115,9 @@ const f = async () => { }; } }; - const status = req.Status; + const status = req.body.Status; console.log({status}); - if (req.Status == 'AUTORIZED') { + if (status == 'AUTORIZED') { await confirm({ TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", PaymentId: req.PaymentId, @@ -1125,7 +1125,7 @@ const f = async () => { Token: req.Token, Receipt: req.Receipt, }); - } else if (req.Status == 'CONFIRMED') { + } else if (status == 'CONFIRMED') { await deep.insert({ type_id: ${PPayed}, to_id: req.OrderId, @@ -1138,7 +1138,7 @@ const f = async () => { ], }, }); - } else if (req.Status == 'CANCELED') { + } else if (status == 'CANCELED') { await deep.insert({ type_id: ${PError}, from_id: ${tinkoffProviderId}, From 5f5c265fcd12e790da8ff5435d12ecd3baa64227 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 15:23:54 +0600 Subject: [PATCH 143/683] Format handlers, put them in consts --- payments-eacq.cjs | 2600 ++++++++++++++++++++++----------------------- 1 file changed, 1294 insertions(+), 1306 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 41e73b05..3a18c2d5 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -7,8 +7,8 @@ const dotenvExpand = require('dotenv-expand'); const { generateApolloClient } = require('@deep-foundation/hasura/client'); const { DeepClient } = require('@deep-foundation/deeplinks/imports/client'); const { - minilinks, - Link, + minilinks, + Link, } = require('@deep-foundation/deeplinks/imports/minilinks'); const puppeteer = require('puppeteer'); const crypto = require('crypto'); @@ -18,7 +18,6 @@ const uniqid = require('uniqid'); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); - const packageName = '@deep-foundation/payments-eacq'; const PRICE = 5500; @@ -26,107 +25,663 @@ const PRICE = 5500; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const payInBrowser = async ({ page, browser, url }) => { - await page.goto(url, { waitUntil: 'networkidle2' }); - await sleep(3000); - const oldForm = await page.evaluate(() => { - return !!document.querySelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - }); - if (oldForm) { - console.log('OLD FORM!!!!!!!'); - // Старая форма используется на тестовом сервере - const cvc1 = await page.evaluate(() => { - return !!document.querySelector( - 'button[automation-id="pay-card__submit"]' - ); - }); - if (cvc1) { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_TEST_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_TEST_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-card__submit"]'); // submit button - } else { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_E2C_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_E2C_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-wallet__submit"]'); // submit button - await sleep(300); - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(1000); - } - // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен - await sleep(1000); - } else { - console.log('NEW FORM!!!!!!!'); - await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number - await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date - await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code - await page.click('button[type=submit]'); // submit button - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(3000); - } - await browser.close(); + await page.goto(url, { waitUntil: 'networkidle2' }); + await sleep(3000); + const oldForm = await page.evaluate(() => { + return !!document.querySelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + }); + if (oldForm) { + console.log('OLD FORM!!!!!!!'); + // Старая форма используется на тестовом сервере + const cvc1 = await page.evaluate(() => { + return !!document.querySelector( + 'button[automation-id="pay-card__submit"]' + ); + }); + if (cvc1) { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_TEST_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_TEST_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-card__submit"]'); // submit button + } else { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_E2C_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_E2C_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-wallet__submit"]'); // submit button + await sleep(300); + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(1000); + } + // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен + await sleep(1000); + } else { + console.log('NEW FORM!!!!!!!'); + await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number + await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date + await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code + await page.click('button[type=submit]'); // submit button + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(3000); + } + await browser.close(); }; const f = async () => { - const apolloClient = generateApolloClient({ - path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE - ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') - ? false - : true, - // admin token in prealpha deep secret key - // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', - }); - - const unloginedDeep = new DeepClient({ apolloClient }); - + const apolloClient = generateApolloClient({ + path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE + ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') + ? false + : true, + // admin token in prealpha deep secret key + // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', + }); + + const unloginedDeep = new DeepClient({ apolloClient }); + + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + + const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + return hash; + }; + + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + ...restData, + Password: process.env.PAYMENT_EACQ_TERMINAL_PASSWORD, + }; + return _generateToken(dataWithPassword); + }; + + const getUrl = (method) => + `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; + const getMarketUrl = (method) => + `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; + + const getState = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetState'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getCardList = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCardList'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode || '0'); + + const d = { + error, + request: options, + response: response.data, + }; + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const init = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Init'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + + options?.log && options.log(d); + + return d; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const sendInit = async (noTokenData) => { + const options = { + ...noTokenData, + Token: generateToken(noTokenData), + }; + + return init(options); + }; + + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const guest = await unloginedDeep.guest(); + const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); + const admin = await guestDeep.login({ + linkId: await guestDeep.id('deep', 'admin'), + }); + const deep = new DeepClient({ deep: guestDeep, ...admin }); + + const User = await deep.id('@deep-foundation/core', 'User'); + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + const Join = await deep.id('@deep-foundation/core', 'Join'); + const Contain = await deep.id('@deep-foundation/core', 'Contain'); + const Value = await deep.id('@deep-foundation/core', 'Value'); + const String = await deep.id('@deep-foundation/core', 'String'); + const Package = await deep.id('@deep-foundation/core', 'Package'); + + const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); + const dockerSupportsJs = await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ); + const Handler = await deep.id('@deep-foundation/core', 'Handler'); + const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); + const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); + + const Tree = await deep.id('@deep-foundation/core', 'Tree'); + const TreeIncludeNode = await deep.id( + '@deep-foundation/core', + 'TreeIncludeNode' + ); + const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); + const TreeIncludeDown = await deep.id( + '@deep-foundation/core', + 'TreeIncludeDown' + ); + + const Rule = await deep.id('@deep-foundation/core', 'Rule'); + const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); + const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); + const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); + const Selector = await deep.id('@deep-foundation/core', 'Selector'); + const SelectorInclude = await deep.id( + '@deep-foundation/core', + 'SelectorInclude' + ); + const SelectorExclude = await deep.id( + '@deep-foundation/core', + 'SelectorExclude' + ); + const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); + const containTree = await deep.id('@deep-foundation/core', 'containTree'); + const AllowInsertType = await deep.id( + '@deep-foundation/core', + 'AllowInsertType' + ); + const AllowDeleteType = await deep.id( + '@deep-foundation/core', + 'AllowDeleteType' + ); + const SelectorFilter = await deep.id( + '@deep-foundation/core', + 'SelectorFilter' + ); + const Query = await deep.id('@deep-foundation/core', 'Query'); + const usersId = await deep.id('deep', 'users'); + + const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); + const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); + const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); + const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); + const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); + const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); + const BaseError = await deep.id('@deep-foundation/payments', 'Error'); + + const { + data: [{ id: packageId }], + } = await deep.insert({ + type_id: Package, + string: { data: { value: packageName } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + out: { + data: [ + { + type_id: Join, + to_id: await deep.id('deep', 'users', 'packages'), + }, + { + type_id: Join, + to_id: await deep.id('deep', 'admin'), + }, + ], + }, + }); + + console.log({ packageId }); + + const { + data: [{ id: PPayment }], + } = await deep.insert({ + type_id: BasePayment, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Payment' } }, + }, + }, + }); + + console.log({ PPayment: PPayment }); + + const { + data: [{ id: PObject }], + } = await deep.insert({ + type_id: BaseObject, + from_id: PPayment, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Object' } }, + }, + }, + }); + + console.log({ PObject: PObject }); + + const { + data: [{ id: PSum }], + } = await deep.insert({ + type_id: BaseSum, + from_id: Any, + to_id: PPayment, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Sum' } }, + }, + }, + }); + + console.log({ PSum: PSum }); + + const { + data: [{ id: PPay }], + } = await deep.insert({ + type_id: BasePay, + from_id: Any, + to_id: PSum, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Pay' } }, + }, + }, + }); + + console.log({ PPay: PPay }); + + const { + data: [{ id: PUrl }], + } = await deep.insert({ + type_id: BaseUrl, + from_id: Any, + to_id: PPay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Url' } }, + }, + }, + }); + + console.log({ PUrl: PUrl }); + + const { + data: [{ id: PPayed }], + } = await deep.insert({ + type_id: BasePayed, + from_id: Any, + to_id: PUrl, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Payed' } }, + }, + }, + }); + + console.log({ PPayed: PPayed }); + + const { + data: [{ id: PError }], + } = await deep.insert({ + type_id: BaseError, + from_id: Any, + to_id: PPay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Error' } }, + }, + }, + }); + + console.log({ PError: PError }); + + const { + data: [{ id: paymentTreeId }], + } = await deep.insert({ + type_id: Tree, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'paymentTree' } }, + }, + }, + out: { + data: [ + { + type_id: TreeIncludeNode, + to_id: PPayment, + }, + { + type_id: TreeIncludeUp, + to_id: PSum, + }, + { + type_id: TreeIncludeDown, + to_id: PObject, + }, + { + type_id: TreeIncludeUp, + to_id: PError, + }, + { + type_id: TreeIncludeUp, + to_id: PPayed, + }, + { + type_id: TreeIncludeUp, + to_id: PPay, + }, + { + type_id: TreeIncludeUp, + to_id: PUrl, + }, + ], + }, + }); + + const { + data: [{ id: PSumProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'SumProvider' } }, + }, + }, + }); + + console.log({ PSumProvider: PSumProvider }); + + const { + data: [{ id: PTinkoffProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'TinkoffProvider' } }, + }, + }, + }); + + console.log({ PTinkoffProvider }); + + const { + data: [{ id: tinkoffProviderId }], + } = await deep.insert({ + type_id: PTinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ tinkoffProviderId }); + + const { + data: [{ id: sumProviderId }], + } = await deep.insert({ + type_id: PSumProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ sumProviderId }); + + const payInsertHandler = /*javascript*/` +async ({ deep, require, data: { newLink: {id: payId} } }) => { + const crypto = require('crypto'); + const axios = require('axios'); const errorsConverter = { 7: 'Покупатель не найден', 53: 'Обратитесь к продавцу', @@ -183,98 +738,26 @@ const f = async () => { 1096: 'Повторите попытку позже', 9999: 'Внутренняя ошибка системы', }; - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + const getUrl = (method) => + "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; const _generateToken = (dataWithPassword) => { const dataString = Object.keys(dataWithPassword) .sort((a, b) => a.localeCompare(b)) .map((key) => dataWithPassword[key]) - .reduce((acc, item) => `${acc}${item}`, ''); + .reduce((acc, item) => acc.toString() + item.toString(), ''); const hash = crypto.createHash('sha256').update(dataString).digest('hex'); return hash; }; - const generateToken = (data) => { const { Receipt, DATA, Shops, ...restData } = data; const dataWithPassword = { ...restData, - Password: process.env.PAYMENT_EACQ_TERMINAL_PASSWORD, + Password: "${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}", }; return _generateToken(dataWithPassword); - }; - - const getUrl = (method) => - `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; - const getMarketUrl = (method) => - `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; - - const getState = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetState'), - data: options, - }); - - const error = getError(response.data.ErrorCode); - - const d = { - error, - request: options, - response: response.data, - }; - options?.log && options.log(d); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCardList = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCardList'), - headers: { - 'Content-Type': 'application/json', - }, - data: options, - }); - - const error = getError(response.data.ErrorCode || '0'); - - const d = { - error, - request: options, - response: response.data, - }; - options?.log && options.log(d); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - + }; const init = async (options) => { try { const response = await axios({ @@ -315,875 +798,225 @@ const f = async () => { return init(options); }; - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: options, - }); - - const error = getError(response.data.ErrorCode); - - const d = { - error, - request: options, - response: response.data, - }; - options?.log && options.log(d); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const guest = await unloginedDeep.guest(); - const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); - const admin = await guestDeep.login({ - linkId: await guestDeep.id('deep', 'admin'), - }); - const deep = new DeepClient({ deep: guestDeep, ...admin }); - - const User = await deep.id('@deep-foundation/core', 'User'); - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); - const Join = await deep.id('@deep-foundation/core', 'Join'); - const Contain = await deep.id('@deep-foundation/core', 'Contain'); - const Value = await deep.id('@deep-foundation/core', 'Value'); - const String = await deep.id('@deep-foundation/core', 'String'); - const Package = await deep.id('@deep-foundation/core', 'Package'); - - const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); - const dockerSupportsJs = await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ); - const Handler = await deep.id('@deep-foundation/core', 'Handler'); - const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); - const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); - - const Tree = await deep.id('@deep-foundation/core', 'Tree'); - const TreeIncludeNode = await deep.id( - '@deep-foundation/core', - 'TreeIncludeNode' - ); - const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); - const TreeIncludeDown = await deep.id( - '@deep-foundation/core', - 'TreeIncludeDown' - ); - - const Rule = await deep.id('@deep-foundation/core', 'Rule'); - const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); - const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); - const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); - const Selector = await deep.id('@deep-foundation/core', 'Selector'); - const SelectorInclude = await deep.id( - '@deep-foundation/core', - 'SelectorInclude' - ); - const SelectorExclude = await deep.id( - '@deep-foundation/core', - 'SelectorExclude' - ); - const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); - const containTree = await deep.id('@deep-foundation/core', 'containTree'); - const AllowInsertType = await deep.id( - '@deep-foundation/core', - 'AllowInsertType' - ); - const AllowDeleteType = await deep.id( - '@deep-foundation/core', - 'AllowDeleteType' - ); - const SelectorFilter = await deep.id( - '@deep-foundation/core', - 'SelectorFilter' - ); - const Query = await deep.id('@deep-foundation/core', 'Query'); - const usersId = await deep.id('deep', 'users'); - - const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); - const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); - const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); - const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); - const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); - const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); - const BaseError = await deep.id('@deep-foundation/payments', 'Error'); - - const { - data: [{ id: packageId }], - } = await deep.insert({ - type_id: Package, - string: { data: { value: packageName } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - out: { - data: [ - { - type_id: Join, - to_id: await deep.id('deep', 'users', 'packages'), - }, - { - type_id: Join, - to_id: await deep.id('deep', 'admin'), - }, - ], - }, - }); - - console.log({ packageId }); - - const { - data: [{ id: PPayment }], - } = await deep.insert({ - type_id: BasePayment, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Payment' } }, - }, - }, - }); - - console.log({ PPayment: PPayment }); - - const { - data: [{ id: PObject }], - } = await deep.insert({ - type_id: BaseObject, - from_id: PPayment, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Object' } }, - }, - }, - }); - - console.log({ PObject: PObject }); - - const { - data: [{ id: PSum }], - } = await deep.insert({ - type_id: BaseSum, - from_id: Any, - to_id: PPayment, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Sum' } }, - }, + const mpDownPay = await deep.select({ + down: { + link_id: { _eq: payId }, + tree_id: { _eq: ${paymentTreeId} }, }, }); - console.log({ PSum: PSum }); - - const { - data: [{ id: PPay }], - } = await deep.insert({ - type_id: BasePay, - from_id: Any, - to_id: PSum, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Pay' } }, - }, - }, - }); - - console.log({ PPay: PPay }); - - const { - data: [{ id: PUrl }], - } = await deep.insert({ - type_id: BaseUrl, - from_id: Any, - to_id: PPay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Url' } }, - }, - }, - }); - - console.log({ PUrl: PUrl }); - - const { - data: [{ id: PPayed }], - } = await deep.insert({ - type_id: BasePayed, - from_id: Any, - to_id: PUrl, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Payed' } }, - }, - }, - }); - - console.log({ PPayed: PPayed }); - - const { - data: [{ id: PError }], - } = await deep.insert({ - type_id: BaseError, - from_id: Any, - to_id: PPay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Error' } }, - }, - }, - }); - - console.log({ PError: PError }); - - const { - data: [{ id: paymentTreeId }], - } = await deep.insert({ - type_id: Tree, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'paymentTree' } }, - }, - }, - out: { - data: [ - { - type_id: TreeIncludeNode, - to_id: PPayment, - }, - { - type_id: TreeIncludeUp, - to_id: PSum, - }, - { - type_id: TreeIncludeDown, - to_id: PObject, - }, - { - type_id: TreeIncludeUp, - to_id: PError, - }, - { - type_id: TreeIncludeUp, - to_id: PPayed, - }, - { - type_id: TreeIncludeUp, - to_id: PPay, - }, - { - type_id: TreeIncludeUp, - to_id: PUrl, - }, - ], + console.log({mpDownPay}); + + const paymentLink = mpDownPay.data.find(link => link.type_id == ${PPayment}); + const sum = mpDownPay.data.find(link => link.type_id == ${PSum}).value.value; + + console.log({paymentLink}); + console.log({sum}); + + const options = { + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + OrderId: paymentLink.value.value ?? paymentLink.id, + CustomerKey: ${deep.linkId}, + NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", + PayType: 'T', + Amount: ${PRICE}, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: "${process.env.PAYMENT_TEST_EMAIL}", + Phone: "${process.env.PAYMENT_TEST_PHONE}", }, - }); + Receipt: { + Items: [{ + Name: 'Test item', + Price: sum, + Quantity: 1, + Amount: ${PRICE}, + PaymentMethod: 'prepayment', + PaymentObject: 'service', + Tax: 'none', + }], + Email: "${process.env.PAYMENT_TEST_EMAIL}", + Phone: "${process.env.PAYMENT_TEST_PHONE}", + Taxation: 'usn_income', + } + }; - const { - data: [{ id: PSumProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'SumProvider' } }, - }, - }, - }); + console.log({options}); - console.log({ PSumProvider: PSumProvider }); - - const { - data: [{ id: PTinkoffProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'TinkoffProvider' } }, - }, - }, - }); - - console.log({ PTinkoffProvider }); - - const { - data: [{ id: tinkoffProviderId }], - } = await deep.insert({ - type_id: PTinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, + let initResult = await sendInit({ + ...options }); - console.log({ tinkoffProviderId }); - - const { - data: [{ id: sumProviderId }], - } = await deep.insert({ - type_id: PSumProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); + console.log({initResult}); - console.log({ sumProviderId }); - - const insertHandlerDependencies = ` - const errorsConverter = ${JSON.stringify(errorsConverter)}; - const getError = ${getError}; - const getUrl = ${getUrl}; - const _generateToken = ${_generateToken}; - const generateToken = ${generateToken}; - const init = ${init}; - const sendInit = ${sendInit}; - const Contain = ${Contain}; - const paymentTreeId = ${paymentTreeId}; - const PError = ${PError}; - const crypto = require('crypto'); - const axios = require('axios'); - `; - - const { - data: [{ id: payInsertHandlerId }], - } = await deep.insert({ - type_id: SyncTextFile, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'joinInsertHandlerFile' } }, - }, - { - from_id: dockerSupportsJs, - type_id: Handler, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'joinInsertHandler' } }, - }, - { - type_id: HandleInsert, - from_id: PPay, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'joinInsertHandle' } }, - }, - ], - }, - }, - ], + if (initResult.error != undefined) { + console.log('initResult.error:', initResult.error); + const { + data: [{ id: error }], + } = await deep.insert({ + type_id: ${PError}, + from_id: ${tinkoffProviderId}, + to_id: payId, + string: { data: { value: initResult.error } }, + in: { + data: [ + { + type_id: ${Contain}, + from_id: ${deep.linkId}, }, - }, - ], - }, - string: { - data: { - value: /*javascript*/ ` - async ({ deep, require, data: { newLink: {id: payId} } }) => { - const crypto = require('crypto'); - const axios = require('axios'); - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - const getUrl = (method) => - "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; - const _generateToken = (dataWithPassword) => { - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => acc.toString() + item.toString(), ''); - const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - return hash; - }; - const generateToken = (data) => { - const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { - ...restData, - Password: "${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}", - }; - return _generateToken(dataWithPassword); - }; - const init = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Init'), - headers: { - 'Content-Type': 'application/json', - }, - data: options, - }); - - const error = getError(response.data.ErrorCode); - - const d = { - error, - request: options, - response: response.data, - }; - - options?.log && options.log(d); - - return d; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const sendInit = async (noTokenData) => { - const options = { - ...noTokenData, - Token: generateToken(noTokenData), - }; - - return init(options); - }; - - const mpDownPay = await deep.select({ - down: { - link_id: { _eq: payId }, - tree_id: { _eq: ${paymentTreeId} }, - }, - }); - - console.log({mpDownPay}); - - const paymentLink = mpDownPay.data.find(link => link.type_id == ${PPayment}); - const sum = mpDownPay.data.find(link => link.type_id == ${PSum}).value.value; - - console.log({paymentLink}); - console.log({sum}); - - const options = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - OrderId: paymentLink.value.value ?? paymentLink.id, - CustomerKey: ${deep.linkId}, - NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", - PayType: 'T', - Amount: ${PRICE}, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: "${process.env.PAYMENT_TEST_EMAIL}", - Phone: "${process.env.PAYMENT_TEST_PHONE}", - }, - Receipt: { - Items: [{ - Name: 'Test item', - Price: sum, - Quantity: 1, - Amount: ${PRICE}, - PaymentMethod: 'prepayment', - PaymentObject: 'service', - Tax: 'none', - }], - Email: "${process.env.PAYMENT_TEST_EMAIL}", - Phone: "${process.env.PAYMENT_TEST_PHONE}", - Taxation: 'usn_income', - } - }; - - console.log({options}); - - let initResult = await sendInit({ - ...options - }); - - console.log({initResult}); - - if (initResult.error != undefined) { - console.log('initResult.error:', initResult.error); - const { - data: [{ id: error }], - } = await deep.insert({ - type_id: ${PError}, - from_id: ${tinkoffProviderId}, - to_id: payId, - string: { data: { value: initResult.error } }, - in: { - data: [ - { - type_id: ${Contain}, - from_id: ${deep.linkId}, - }, - ], - }, - }); - console.log({ error }); - } else { - console.log('Payment URL:', initResult.response.PaymentURL); - const { - data: [{ id: urlId }], - } = await deep.insert({ - type_id: ${PUrl}, - from_id: ${tinkoffProviderId}, - to_id: payId, - string: { data: { value: initResult.response.PaymentURL } }, - in: { - data: [ - { - type_id: ${Contain}, - from_id: ${deep.linkId}, - }, - ], - }, - }); - console.log({ urlId }); - } - - // return initResult; - return {data: "dataString"}; - }; - `, - }, - }, - }); - - console.log({ payInsertHandlerId }); - - await deep.insert( - { - type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { - data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, + ], }, + }); + console.log({ error }); + } else { + console.log('Payment URL:', initResult.response.PaymentURL); + const { + data: [{ id: urlId }], + } = await deep.insert({ + type_id: ${PUrl}, + from_id: ${tinkoffProviderId}, + to_id: payId, + string: { data: { value: initResult.response.PaymentURL } }, in: { - data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), - in: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'RouterStringUse' - ), - string: { - data: { - value: - process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, - }, - }, - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), - out: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'HandleRoute' - ), - to: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'Handler' - ), - from_id: await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ), - in: { - data: { - type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - to: { - data: { - type_id: SyncTextFile, - string: { - data: { - value: /*javascript*/` - async ( - req, - res, - next, - { deep, require, gql } - ) => { - console.log('helloSomeText'); - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - const getUrl = (method) => - "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: options, - }); - - const error = getError(response.data.ErrorCode); - - const d = { - error, - request: options, - response: response.data, - }; - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - const status = req.body.Status; - console.log({status}); - if (status == 'AUTORIZED') { - await confirm({ - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentId: req.PaymentId, - Amount: req.Amount, - Token: req.Token, - Receipt: req.Receipt, - }); - } else if (status == 'CONFIRMED') { - await deep.insert({ - type_id: ${PPayed}, - to_id: req.OrderId, - in: { - data: [ - { - type_id: ${Contain}, - from_id: ${tinkoffProviderId}, - }, - ], - }, - }); - } else if (status == 'CANCELED') { - await deep.insert({ - type_id: ${PError}, - from_id: ${tinkoffProviderId}, - to_id: req.OrderId, - in: { - data: [ - { - type_id: ${Contain}, - from_id: ${tinkoffProviderId}, - string: { data: { value: getError(req.ErrorCode) } }, - }, - ], - }, - }); - } - res.send('ok'); - }; - `, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, + data: [ + { + type_id: ${Contain}, + from_id: ${deep.linkId}, }, - }, + ], }, - }, - { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - } - ); + }); + console.log({ urlId }); + } - const cancel = async (options) => { + // return initResult; + return {data: "dataString"}; +}; +` + + const { + data: [{ id: payInsertHandlerId }], + } = await deep.insert({ + type_id: SyncTextFile, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'joinInsertHandlerFile' } }, + }, + { + from_id: dockerSupportsJs, + type_id: Handler, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'joinInsertHandler' } }, + }, + { + type_id: HandleInsert, + from_id: PPay, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'joinInsertHandle' } }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + string: { + data: { + value: payInsertHandler, + }, + }, + }); + + console.log({ payInsertHandlerId }); + + const tinkoffNotificationHandler = /*javascript*/ ` +async ( + req, + res, + next, + { deep, require, gql } +) => { + console.log('helloSomeText'); + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + const getUrl = (method) => + "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; + const confirm = async (options) => { try { const response = await axios({ method: 'post', - url: getUrl('Cancel'), + url: getUrl('Confirm'), data: options, }); @@ -1194,7 +1027,6 @@ const f = async () => { request: options, response: response.data, }; - options?.log && options.log(d); return { error, @@ -1209,296 +1041,452 @@ const f = async () => { }; } }; - - const callTests = async () => { - console.log('callTests-start'); - const PPayment = await deep.id(packageName, 'Payment'); - const PObject = await deep.id(packageName, 'Object'); - const PSum = await deep.id(packageName, 'Sum'); - const PPay = await deep.id(packageName, 'Pay'); - const PUrl = await deep.id(packageName, 'Url'); - const PPayed = await deep.id(packageName, 'Payed'); - const PError = await deep.id(packageName, 'Error'); - - const paymentTreeId = await deep.id(packageName, 'paymentTree'); - - console.log({ paymentTreeId }); - - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); - - const { - data: [{ id: Product }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, + const status = req.body.Status; + console.log({status}); + if (status == 'AUTORIZED') { + await confirm({ + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + PaymentId: req.PaymentId, + Amount: req.Amount, + Token: req.Token, + Receipt: req.Receipt, + }); + } else if (status == 'CONFIRMED') { + await deep.insert({ + type_id: ${PPayed}, + to_id: req.OrderId, in: { data: [ { - type_id: Contain, - from_id: deep.linkId, + type_id: ${Contain}, + from_id: ${tinkoffProviderId}, }, ], }, }); - - console.log({ Product }); - - const { - data: [{ id: productId }], - } = await deep.insert({ - type_id: Product, + } else if (status == 'CANCELED') { + await deep.insert({ + type_id: ${PError}, + from_id: ${tinkoffProviderId}, + to_id: req.OrderId, in: { data: [ { - type_id: Contain, - from_id: deep.linkId, + type_id: ${Contain}, + from_id: ${tinkoffProviderId}, + string: { data: { value: getError(req.ErrorCode) } }, }, ], }, }); - - console.log({ product: productId }); - - const testInit = async () => { - console.log('testInit-start'); - const { - data: [{ id: paymentId }], - } = await deep.insert({ - type_id: PPayment, - string: {data: {value: uniqid()}}, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ paymentId }); - - const { - data: [{ id: sumId }], - } = await deep.insert({ - type_id: PSum, - from_id: sumProviderId, - to_id: paymentId, - number: { data: { value: 150 } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ sum: sumId }); - - const { - data: [{ id: objectId }], - } = await deep.insert({ - type_id: PObject, - from_id: paymentId, - to_id: productId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ object: objectId }); - - const { - data: [{ id: payId }], - } = await deep.insert({ - type_id: PPay, - from_id: deep.linkId, - to_id: sumId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ pay: payId }); - - await sleep(9000); - - const urlQuery = await deep.select({ - type_id: PUrl, - to_id: payId, - }); - - console.log({ urlQuery }); - - const hasUrl = urlQuery.data.length > 0; - if (!hasUrl) { - throw new Error('Url not found.'); - } - console.log('testInit-end'); - }; - - const testFinishAuthorize = async () => { - console.log('testFinishAuthorize-start'); - await testInit(); - const { - data: [ - { - value: { value: url }, - }, - ], - } = await deep.select({ - type_id: PUrl, - }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - await payInBrowser({ - browser, - page, - url, - }); - console.log('testFinishAuthorize-end'); - }; - - const testConfirm = async () => { - console.log('testConfirm-start'); - await testFinishAuthorize(); - - const { data } = await deep.select({ - type_id: PPayed, - }); - - for (let i = 0; i < 4; i++) { - if(data.length > 0) { - break; - } - await sleep(5000); - } - - if (data.length === 0) { - throw new Error('Payment is not confirmed'); - } - console.log('testConfirm-end') - }; - - const testCancel = async () => { - console.log('testCancel-end'); - const testCancelAfterPay = async () => { - const testCancelBeforeConfirmFullPrice = async () => {}; - const testCancelBeforeConfirmCustomPriceX2 = async () => {}; - const testCancelAfterConfirmFullPrice = async () => {}; - const testCancelAfterConfirmCustomPriceX2 = async () => {}; - }; - const testCancelBeforePay = async () => {}; - console.log('testCancel-end'); - }; - - const testGetState = async () => { - console.log('testGetState-end'); - await testFinishAuthorize(); - - const payId = await deep.select({ type_id: PPay }); - const { - data: [{ id: paymentId }], - } = await deep.select({ - up: { - tree_id: paymentTreeId, - link_id: payId, - }, - }); - - const noTokenGetStateData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - }; - - const newGetStateData = { - ...noTokenGetStateData, - PaymentId: paymentId, - }; - - const options = { - ...newGetStateData, - Token: generateToken(newGetStateData), - }; - - const result = await getState(options); - - expect(result.error).to.equal(undefined); - console.log('testGetState-end'); - }; - - const testGetCardList = async () => { - console.log('testGetCardList-end'); - await testFinishAuthorize(); - - const noTokenGetCardListData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: customerKey, - }; - - const options = { - ...noTokenGetCardListData, - Token: generateToken(noTokenGetStateData), - }; - - const result = await getCardList(options); - - expect(result.error).to.equal(undefined); - console.log('testGetCardList-end'); - }; - - await testInit(); - await testConfirm(); - await testGetState(); - await testGetCardList(); - }; - - try { - await callTests(); - } catch (error) { - throw error; - } finally { - const cancelAllPayments = async () => { - console.log('cancelAllPayments'); - const { data: paymentLinks } = await deep.select({ - type_id: PPayment, - }); - - for (const { id: paymentId } of paymentLinks) { - const newCancelData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: paymentId, - }; - - const options = { - ...newCancelData, - Token: generateToken(newCancelData), - }; - - console.log({ options }); - - const cancelResponse = await cancel(options); - - console.log({ cancelResponse }); - } - }; - - // await cancelAllPayments(); } + res.send('ok'); +}; +`; + + await deep.insert( + { + type_id: await deep.id('@deep-foundation/core', 'Port'), + number: { + data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, + }, + in: { + data: { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'RouterStringUse' + ), + string: { + data: { + value: + process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, + }, + }, + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + out: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'HandleRoute' + ), + to: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'Handler' + ), + from_id: await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ), + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + to: { + data: { + type_id: SyncTextFile, + string: { + data: { + value: tinkoffNotificationHandler, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + } + ); + + const cancel = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Cancel'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + const d = { + error, + request: options, + response: response.data, + }; + options?.log && options.log(d); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const callTests = async () => { + console.log('callTests-start'); + const PPayment = await deep.id(packageName, 'Payment'); + const PObject = await deep.id(packageName, 'Object'); + const PSum = await deep.id(packageName, 'Sum'); + const PPay = await deep.id(packageName, 'Pay'); + const PUrl = await deep.id(packageName, 'Url'); + const PPayed = await deep.id(packageName, 'Payed'); + const PError = await deep.id(packageName, 'Error'); + + const paymentTreeId = await deep.id(packageName, 'paymentTree'); + + console.log({ paymentTreeId }); + + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ Product }); + + const { + data: [{ id: productId }], + } = await deep.insert({ + type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ product: productId }); + + const testInit = async () => { + console.log('testInit-start'); + const { + data: [{ id: paymentId }], + } = await deep.insert({ + type_id: PPayment, + string: { data: { value: uniqid() } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ paymentId }); + + const { + data: [{ id: sumId }], + } = await deep.insert({ + type_id: PSum, + from_id: sumProviderId, + to_id: paymentId, + number: { data: { value: 150 } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ sum: sumId }); + + const { + data: [{ id: objectId }], + } = await deep.insert({ + type_id: PObject, + from_id: paymentId, + to_id: productId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ object: objectId }); + + const { + data: [{ id: payId }], + } = await deep.insert({ + type_id: PPay, + from_id: deep.linkId, + to_id: sumId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ pay: payId }); + + await sleep(9000); + + const urlQuery = await deep.select({ + type_id: PUrl, + to_id: payId, + }); + + console.log({ urlQuery }); + + const hasUrl = urlQuery.data.length > 0; + if (!hasUrl) { + throw new Error('Url not found.'); + } + console.log('testInit-end'); + }; + + const testFinishAuthorize = async () => { + console.log('testFinishAuthorize-start'); + await testInit(); + const { + data: [ + { + value: { value: url }, + }, + ], + } = await deep.select({ + type_id: PUrl, + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + await payInBrowser({ + browser, + page, + url, + }); + console.log('testFinishAuthorize-end'); + }; + + const testConfirm = async () => { + console.log('testConfirm-start'); + await testFinishAuthorize(); + + const { data } = await deep.select({ + type_id: PPayed, + }); + + for (let i = 0; i < 4; i++) { + if (data.length > 0) { + break; + } + await sleep(5000); + } + + if (data.length === 0) { + throw new Error('Payment is not confirmed'); + } + console.log('testConfirm-end'); + }; + + const testCancel = async () => { + console.log('testCancel-end'); + const testCancelAfterPay = async () => { + const testCancelBeforeConfirmFullPrice = async () => {}; + const testCancelBeforeConfirmCustomPriceX2 = async () => {}; + const testCancelAfterConfirmFullPrice = async () => {}; + const testCancelAfterConfirmCustomPriceX2 = async () => {}; + }; + const testCancelBeforePay = async () => {}; + console.log('testCancel-end'); + }; + + const testGetState = async () => { + console.log('testGetState-end'); + await testFinishAuthorize(); + + const payId = await deep.select({ type_id: PPay }); + const { + data: [{ id: paymentId }], + } = await deep.select({ + up: { + tree_id: paymentTreeId, + link_id: payId, + }, + }); + + const noTokenGetStateData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + }; + + const newGetStateData = { + ...noTokenGetStateData, + PaymentId: paymentId, + }; + + const options = { + ...newGetStateData, + Token: generateToken(newGetStateData), + }; + + const result = await getState(options); + + expect(result.error).to.equal(undefined); + console.log('testGetState-end'); + }; + + const testGetCardList = async () => { + console.log('testGetCardList-end'); + await testFinishAuthorize(); + + const noTokenGetCardListData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: customerKey, + }; + + const options = { + ...noTokenGetCardListData, + Token: generateToken(noTokenGetStateData), + }; + + const result = await getCardList(options); + + expect(result.error).to.equal(undefined); + console.log('testGetCardList-end'); + }; + + await testInit(); + await testConfirm(); + await testGetState(); + await testGetCardList(); + }; + + try { + await callTests(); + } catch (error) { + throw error; + } finally { + const cancelAllPayments = async () => { + console.log('cancelAllPayments'); + const { data: paymentLinks } = await deep.select({ + type_id: PPayment, + }); + + for (const { id: paymentId } of paymentLinks) { + const newCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: paymentId, + }; + + const options = { + ...newCancelData, + Token: generateToken(newCancelData), + }; + + console.log({ options }); + + const cancelResponse = await cancel(options); + + console.log({ cancelResponse }); + } + }; + + // await cancelAllPayments(); + } }; f(); From 2e52a798622974cee0f2c14e90723c1669e65425 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 15:34:32 +0600 Subject: [PATCH 144/683] Add console logs to notification handler --- payments-eacq.cjs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 3a18c2d5..5268c87c 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1044,15 +1044,16 @@ async ( const status = req.body.Status; console.log({status}); if (status == 'AUTORIZED') { - await confirm({ + const confirmResponse = await confirm({ TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", PaymentId: req.PaymentId, Amount: req.Amount, Token: req.Token, Receipt: req.Receipt, }); + console.log({confirmResponse}); } else if (status == 'CONFIRMED') { - await deep.insert({ + const payedInsertData = await deep.insert({ type_id: ${PPayed}, to_id: req.OrderId, in: { @@ -1064,8 +1065,9 @@ async ( ], }, }); + console.log({payedInsertData}) } else if (status == 'CANCELED') { - await deep.insert({ + const errorInsertData = await deep.insert({ type_id: ${PError}, from_id: ${tinkoffProviderId}, to_id: req.OrderId, @@ -1079,6 +1081,10 @@ async ( ], }, }); + + console.log({errorInsertData}); + const errorMessage = getError(req.ErrorCode); + console.log({errorMessage}); } res.send('ok'); }; From a70ad7df591546fed706460c2483d1f6ade8ab77 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 15:38:09 +0600 Subject: [PATCH 145/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 5268c87c..f6dc1999 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1043,7 +1043,7 @@ async ( }; const status = req.body.Status; console.log({status}); - if (status == 'AUTORIZED') { + if (status == 'AUTHORIZED') { const confirmResponse = await confirm({ TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", PaymentId: req.PaymentId, From f24416031db4a701b54caa3fb45d53a00305b331 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 15:40:47 +0600 Subject: [PATCH 146/683] Add crypto and axios to notification handler --- payments-eacq.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f6dc1999..5493be14 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -951,6 +951,8 @@ async ( next, { deep, require, gql } ) => { + const crypto = require('crypto'); + const axios = require('axios'); console.log('helloSomeText'); const errorsConverter = { 7: 'Покупатель не найден', From 2c96fd9ad01763bd43641d5a316f41781cc32be9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 15:58:49 +0600 Subject: [PATCH 147/683] Read props from req.body --- payments-eacq.cjs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 5493be14..6ff54b57 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1048,16 +1048,16 @@ async ( if (status == 'AUTHORIZED') { const confirmResponse = await confirm({ TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentId: req.PaymentId, - Amount: req.Amount, - Token: req.Token, - Receipt: req.Receipt, + PaymentId: req.body.PaymentId, + Amount: req.body.Amount, + Token: req.body.Token, + Receipt: req.body.Receipt, }); console.log({confirmResponse}); } else if (status == 'CONFIRMED') { const payedInsertData = await deep.insert({ type_id: ${PPayed}, - to_id: req.OrderId, + to_id: req.body.OrderId, in: { data: [ { @@ -1072,20 +1072,20 @@ async ( const errorInsertData = await deep.insert({ type_id: ${PError}, from_id: ${tinkoffProviderId}, - to_id: req.OrderId, + to_id: req.body.OrderId, in: { data: [ { type_id: ${Contain}, from_id: ${tinkoffProviderId}, - string: { data: { value: getError(req.ErrorCode) } }, + string: { data: { value: getError(req.body.ErrorCode) } }, }, ], }, }); console.log({errorInsertData}); - const errorMessage = getError(req.ErrorCode); + const errorMessage = getError(req.body.ErrorCode); console.log({errorMessage}); } res.send('ok'); From 57770cb0af4807d743440a5a535dad18a93498f1 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 16:14:50 +0600 Subject: [PATCH 148/683] Generate token for confirm --- payments-eacq.cjs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 6ff54b57..dde5fd15 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1046,13 +1046,19 @@ async ( const status = req.body.Status; console.log({status}); if (status == 'AUTHORIZED') { - const confirmResponse = await confirm({ + const noTokenConfirmOptions = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", PaymentId: req.body.PaymentId, Amount: req.body.Amount, Token: req.body.Token, Receipt: req.body.Receipt, - }); + }; + + const confirmOptions = { + ...noTokenConfirmOptions, + Token: generateToken(noTokenConfirmOptions) + } + const confirmResponse = await confirm(confirmOptions); console.log({confirmResponse}); } else if (status == 'CONFIRMED') { const payedInsertData = await deep.insert({ From 83a84daecfc6847a345c74188ed986733d735a17 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 16:17:25 +0600 Subject: [PATCH 149/683] Add generate token to nofication handler --- payments-eacq.cjs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index dde5fd15..1ff0c215 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1014,6 +1014,22 @@ async ( errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; const getUrl = (method) => "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; + const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => acc.toString() + item.toString(), ''); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + return hash; + }; + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + ...restData, + Password: "${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}", + }; + return _generateToken(dataWithPassword); + }; const confirm = async (options) => { try { const response = await axios({ From 42b1ba24234574a4fd83babd2c65b80c07b048b4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 16:22:49 +0600 Subject: [PATCH 150/683] Fix typo, do not use receipt for confirm --- payments-eacq.cjs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 1ff0c215..3d85fc10 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1066,8 +1066,7 @@ async ( TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", PaymentId: req.body.PaymentId, Amount: req.body.Amount, - Token: req.body.Token, - Receipt: req.body.Receipt, + // Receipt: req.body.Receipt, }; const confirmOptions = { From 529a99f844bf189c942db0cd0e85d2911a9c2ac6 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 22:34:57 +0600 Subject: [PATCH 151/683] Add console logs --- payments-eacq.cjs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 3d85fc10..00e0cefd 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1019,15 +1019,21 @@ async ( .sort((a, b) => a.localeCompare(b)) .map((key) => dataWithPassword[key]) .reduce((acc, item) => acc.toString() + item.toString(), ''); + console.log({dataWithPassword}); + console.log({dataString}); const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + console.log({hash}); return hash; }; const generateToken = (data) => { + console.log({data}); const { Receipt, DATA, Shops, ...restData } = data; + console.log({restData}); const dataWithPassword = { ...restData, Password: "${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}", }; + console.log({dataWithPassword}); return _generateToken(dataWithPassword); }; const confirm = async (options) => { From 1224c3c1cc639ad4f73826844b773e8070f47c1a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 18 Aug 2022 22:47:22 +0600 Subject: [PATCH 152/683] Install puppeter deps on gitpod init --- .gitpod.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitpod.yml b/.gitpod.yml index 4673b7e1..3d409eb9 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -25,6 +25,7 @@ vscode: - ms-azuretools.vscode-docker tasks: - - init: npm run gitpod-init; docker pull deepf/deeplinks:main; docker run -v $(pwd)/packages/deeplinks:/deeplinks --rm --name links --entrypoint "sh" deepf/deeplinks:main -c "cp -r /snapshots/* /deeplinks/snapshots/"; (cd packages/deeplinks && npm run snapshot:last); npm install -g concurrently; + - init: npm run gitpod-init; docker pull deepf/deeplinks:main; docker run -v $(pwd)/packages/deeplinks:/deeplinks --rm --name links --entrypoint "sh" deepf/deeplinks:main -c "cp -r /snapshots/* /deeplinks/snapshots/"; (cd packages/deeplinks && npm run snapshot:last); npm install -g concurrently; sudo apt install -y libgbm-dev chromium-browser gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget + - command: npm run gitpod-start; From 738079d5f7cf6e2e375ac932ed0e18893b567e29 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 11:22:58 +0600 Subject: [PATCH 153/683] Use the right env --- payments-eacq.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 00e0cefd..61840577 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -199,7 +199,7 @@ const f = async () => { const { Receipt, DATA, Shops, ...restData } = data; const dataWithPassword = { ...restData, - Password: process.env.PAYMENT_EACQ_TERMINAL_PASSWORD, + Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, }; return _generateToken(dataWithPassword); }; @@ -754,7 +754,7 @@ async ({ deep, require, data: { newLink: {id: payId} } }) => { const { Receipt, DATA, Shops, ...restData } = data; const dataWithPassword = { ...restData, - Password: "${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}", + Password: "${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}", }; return _generateToken(dataWithPassword); }; @@ -1031,7 +1031,7 @@ async ( console.log({restData}); const dataWithPassword = { ...restData, - Password: "${process.env.PAYMENT_EACQ_TERMINAL_PASSWORD}", + Password: "${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}", }; console.log({dataWithPassword}); return _generateToken(dataWithPassword); From 979e18739903656c9b3861e0862175d9c53b0c63 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 11:34:41 +0600 Subject: [PATCH 154/683] Use uniqid as customerkey --- payments-eacq.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 61840577..8bbee69a 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -816,7 +816,7 @@ async ({ deep, require, data: { newLink: {id: payId} } }) => { const options = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", OrderId: paymentLink.value.value ?? paymentLink.id, - CustomerKey: ${deep.linkId}, + CustomerKey: /*${deep.linkId}*/ ${uniqid()}, NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", PayType: 'T', Amount: ${PRICE}, @@ -1290,7 +1290,7 @@ async ( data: [{ id: paymentId }], } = await deep.insert({ type_id: PPayment, - string: { data: { value: uniqid() } }, + // string: { data: { value: uniqid() } }, in: { data: [ { From ace0ba7b44e3e9c51319f1cb60403aee336568db Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 11:36:41 +0600 Subject: [PATCH 155/683] Use null conditional operator --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 8bbee69a..f1b087bc 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -815,7 +815,7 @@ async ({ deep, require, data: { newLink: {id: payId} } }) => { const options = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - OrderId: paymentLink.value.value ?? paymentLink.id, + OrderId: paymentLink?.value?.value ?? paymentLink.id, CustomerKey: /*${deep.linkId}*/ ${uniqid()}, NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", PayType: 'T', From 51f35351bf3cc1f5ed3bbd24f6f8f240360a4422 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 11:38:21 +0600 Subject: [PATCH 156/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f1b087bc..799df9ff 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -816,7 +816,7 @@ async ({ deep, require, data: { newLink: {id: payId} } }) => { const options = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", OrderId: paymentLink?.value?.value ?? paymentLink.id, - CustomerKey: /*${deep.linkId}*/ ${uniqid()}, + CustomerKey: /*${deep.linkId}*/ "${uniqid()}", NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", PayType: 'T', Amount: ${PRICE}, From 2c856f31d93110bc3e49ee207e7b7fcab1978205 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 11:44:09 +0600 Subject: [PATCH 157/683] Add from_id to payed and change contain from_id to deep.linkId --- payments-eacq.cjs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 799df9ff..4e490428 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1084,12 +1084,13 @@ async ( } else if (status == 'CONFIRMED') { const payedInsertData = await deep.insert({ type_id: ${PPayed}, + from_id: ${tinkoffProviderId}, to_id: req.body.OrderId, in: { data: [ { type_id: ${Contain}, - from_id: ${tinkoffProviderId}, + from_id: ${deep.linkId}, }, ], }, @@ -1104,7 +1105,7 @@ async ( data: [ { type_id: ${Contain}, - from_id: ${tinkoffProviderId}, + from_id: ${deep.linkId}, string: { data: { value: getError(req.body.ErrorCode) } }, }, ], From 2bb76e95ef2dae8343f297b4b03b8659becb9ee5 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 11:47:40 +0600 Subject: [PATCH 158/683] Use custom order id --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 4e490428..923b1e70 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1291,7 +1291,7 @@ async ( data: [{ id: paymentId }], } = await deep.insert({ type_id: PPayment, - // string: { data: { value: uniqid() } }, + string: { data: { value: uniqid() } }, in: { data: [ { From db615d42dbf58d81a20493ab9177d9551ed67f5c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 12:23:14 +0600 Subject: [PATCH 159/683] Use deep.linkid as customerKey --- payments-eacq.cjs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 923b1e70..6da3912d 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -816,7 +816,7 @@ async ({ deep, require, data: { newLink: {id: payId} } }) => { const options = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", OrderId: paymentLink?.value?.value ?? paymentLink.id, - CustomerKey: /*${deep.linkId}*/ "${uniqid()}", + CustomerKey: ${deep.linkId}, NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", PayType: 'T', Amount: ${PRICE}, @@ -1082,6 +1082,8 @@ async ( const confirmResponse = await confirm(confirmOptions); console.log({confirmResponse}); } else if (status == 'CONFIRMED') { + const {data: [{id: paymentId}]} = await deep.select({value: "rys33uluvl701w4xx"}); + const payedInsertData = await deep.insert({ type_id: ${PPayed}, from_id: ${tinkoffProviderId}, From 202c1bdd82604d56b3d6720348511a11fa7f867e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 12:38:44 +0600 Subject: [PATCH 160/683] Use pay link as order id --- payments-eacq.cjs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 6da3912d..ac48cca7 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -679,7 +679,7 @@ const f = async () => { console.log({ sumProviderId }); const payInsertHandler = /*javascript*/` -async ({ deep, require, data: { newLink: {id: payId} } }) => { +async ({ deep, require, data: { newLink: payLink } }) => { const crypto = require('crypto'); const axios = require('axios'); const errorsConverter = { @@ -807,15 +807,15 @@ async ({ deep, require, data: { newLink: {id: payId} } }) => { console.log({mpDownPay}); - const paymentLink = mpDownPay.data.find(link => link.type_id == ${PPayment}); + // const paymentLink = mpDownPay.data.find(link => link.type_id == ${PPayment}); const sum = mpDownPay.data.find(link => link.type_id == ${PSum}).value.value; - console.log({paymentLink}); + // console.log({paymentLink}); console.log({sum}); const options = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - OrderId: paymentLink?.value?.value ?? paymentLink.id, + OrderId: payLink?.value?.value ?? payLink.id, CustomerKey: ${deep.linkId}, NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", PayType: 'T', @@ -1082,12 +1082,11 @@ async ( const confirmResponse = await confirm(confirmOptions); console.log({confirmResponse}); } else if (status == 'CONFIRMED') { - const {data: [{id: paymentId}]} = await deep.select({value: "rys33uluvl701w4xx"}); - + const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: ${PPay}, from_id: req.body.CustomerKey}); const payedInsertData = await deep.insert({ type_id: ${PPayed}, from_id: ${tinkoffProviderId}, - to_id: req.body.OrderId, + to_id: payId, in: { data: [ { @@ -1102,7 +1101,7 @@ async ( const errorInsertData = await deep.insert({ type_id: ${PError}, from_id: ${tinkoffProviderId}, - to_id: req.body.OrderId, + to_id: payId, in: { data: [ { @@ -1293,7 +1292,6 @@ async ( data: [{ id: paymentId }], } = await deep.insert({ type_id: PPayment, - string: { data: { value: uniqid() } }, in: { data: [ { @@ -1348,6 +1346,7 @@ async ( type_id: PPay, from_id: deep.linkId, to_id: sumId, + string: { data: { value: uniqid() } }, in: { data: [ { From f8a41372606ea0dbcb4a6301c0e6c9ec0125a0c1 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 12:42:51 +0600 Subject: [PATCH 161/683] Fix typo --- payments-eacq.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index ac48cca7..1f0ece53 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -800,7 +800,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const mpDownPay = await deep.select({ down: { - link_id: { _eq: payId }, + link_id: { _eq: payLink.id }, tree_id: { _eq: ${paymentTreeId} }, }, }); @@ -858,7 +858,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { } = await deep.insert({ type_id: ${PError}, from_id: ${tinkoffProviderId}, - to_id: payId, + to_id: payLink.id, string: { data: { value: initResult.error } }, in: { data: [ @@ -877,7 +877,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { } = await deep.insert({ type_id: ${PUrl}, from_id: ${tinkoffProviderId}, - to_id: payId, + to_id: payLink.id, string: { data: { value: initResult.response.PaymentURL } }, in: { data: [ From b3531d791b4ee567cd13da593211e116638e932f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 12:47:48 +0600 Subject: [PATCH 162/683] Add type constraints --- payments-eacq.cjs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 1f0ece53..9a6782f4 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -503,7 +503,7 @@ const f = async () => { data: [{ id: PPay }], } = await deep.insert({ type_id: BasePay, - from_id: Any, + from_id: User, to_id: PSum, in: { data: { @@ -520,7 +520,7 @@ const f = async () => { data: [{ id: PUrl }], } = await deep.insert({ type_id: BaseUrl, - from_id: Any, + from_id: PTinkoffProvider, to_id: PPay, in: { data: { @@ -537,8 +537,8 @@ const f = async () => { data: [{ id: PPayed }], } = await deep.insert({ type_id: BasePayed, - from_id: Any, - to_id: PUrl, + from_id: PTinkoffProvider, + to_id: PPay, in: { data: { type_id: Contain, @@ -554,7 +554,7 @@ const f = async () => { data: [{ id: PError }], } = await deep.insert({ type_id: BaseError, - from_id: Any, + from_id: PTinkoffProvider, to_id: PPay, in: { data: { From 8b5ae951c474c1969c4b3036a6d2162e7df378b4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 12:51:16 +0600 Subject: [PATCH 163/683] Move providers upper --- payments-eacq.cjs | 96 +++++++++++++++++++++++------------------------ 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 9a6782f4..9e6921af 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -448,6 +448,54 @@ const f = async () => { console.log({ packageId }); + const { + data: [{ id: PSumProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'SumProvider' } }, + }, + }, + }); + + console.log({ PSumProvider: PSumProvider }); + + const { + data: [{ id: PTinkoffProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'TinkoffProvider' } }, + }, + }, + }); + + console.log({ PTinkoffProvider }); + + const { + data: [{ id: tinkoffProviderId }], + } = await deep.insert({ + type_id: PTinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + const { data: [{ id: PPayment }], } = await deep.insert({ @@ -612,54 +660,6 @@ const f = async () => { }, }); - const { - data: [{ id: PSumProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'SumProvider' } }, - }, - }, - }); - - console.log({ PSumProvider: PSumProvider }); - - const { - data: [{ id: PTinkoffProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'TinkoffProvider' } }, - }, - }, - }); - - console.log({ PTinkoffProvider }); - - const { - data: [{ id: tinkoffProviderId }], - } = await deep.insert({ - type_id: PTinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tinkoffProviderId }); const { From a806afa0b357332c6e7307a15d55d3083912e8e0 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 12:55:42 +0600 Subject: [PATCH 164/683] Wait more --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 9e6921af..98c6ceb2 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1411,7 +1411,7 @@ async ( if (data.length > 0) { break; } - await sleep(5000); + await sleep(10000); } if (data.length === 0) { From b7cd990f828c581e0810cbe70caf2a66cbd9835a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 13:01:14 +0600 Subject: [PATCH 165/683] Fix test confirm --- payments-eacq.cjs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 98c6ceb2..5ed4e66a 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1403,11 +1403,14 @@ async ( console.log('testConfirm-start'); await testFinishAuthorize(); - const { data } = await deep.select({ + let { data } = await deep.select({ type_id: PPayed, }); for (let i = 0; i < 4; i++) { + let { data } = await deep.select({ + type_id: PPayed, + }); if (data.length > 0) { break; } From 22cb6a4dfbd2b46e84e8451fae12319ea09a0b10 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 13:49:16 +0600 Subject: [PATCH 166/683] Wait more --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 5ed4e66a..16415f91 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1414,7 +1414,7 @@ async ( if (data.length > 0) { break; } - await sleep(10000); + await sleep(30000); } if (data.length === 0) { From 59d402a79cc098f6744c3a3ccca8acb1c78a0ea2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 13:54:39 +0600 Subject: [PATCH 167/683] Fix testConfirm --- payments-eacq.cjs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 16415f91..72d5958f 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1403,16 +1403,12 @@ async ( console.log('testConfirm-start'); await testFinishAuthorize(); - let { data } = await deep.select({ - type_id: PPayed, - }); - for (let i = 0; i < 4; i++) { let { data } = await deep.select({ type_id: PPayed, }); if (data.length > 0) { - break; + return; } await sleep(30000); } From 5797196c1a48c2eeb7f423254f37652714a93190 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 14:03:13 +0600 Subject: [PATCH 168/683] Wait more --- payments-eacq.cjs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 72d5958f..a9a4fe88 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -26,7 +26,7 @@ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const payInBrowser = async ({ page, browser, url }) => { await page.goto(url, { waitUntil: 'networkidle2' }); - await sleep(3000); + await sleep(5000); const oldForm = await page.evaluate(() => { return !!document.querySelector( 'input[automation-id="tui-input-card-grouped__card"]' @@ -1366,7 +1366,6 @@ async ( to_id: payId, }); - console.log({ urlQuery }); const hasUrl = urlQuery.data.length > 0; if (!hasUrl) { From 9fa1b3dc38670c4c99e0c6838af70e5a86a1bead Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 14:20:35 +0600 Subject: [PATCH 169/683] Delete all test links after every test --- payments-eacq.cjs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index a9a4fe88..a526c867 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1286,6 +1286,38 @@ async ( console.log({ product: productId }); + const deleteTestLinks = async () => { + const {data: objectLinks} = await deep.select({ + type_id: PObject + }); + + const {data: sumLinks} = await deep.select({ + type_id: PSum + }); + + const {data: payLinks} = await deep.select({ + type_id: PPay + }); + + const {data: urlLinks} = await deep.select({ + type_id: PUrl + }); + + const {data: payedLinks} = await deep.select({ + type_id: PPayed + }); + + const {data: errorLinks} = await deep.select({ + type_id: PError + }); + + const allLinks = [...objectLinks, ...sumLinks, ...payLinks, ...urlLinks, ...payedLinks, ...errorLinks]; + for (let i = 0; i < allLinks.length; i++) { + const {id} = allLinks[i]; + await deep.delete({id: id}); + } + } + const testInit = async () => { console.log('testInit-start'); const { @@ -1485,9 +1517,13 @@ async ( }; await testInit(); + await deleteTestLinks(); await testConfirm(); + await deleteTestLinks(); await testGetState(); + await deleteTestLinks(); await testGetCardList(); + await deleteTestLinks(); }; try { From fdffb177551088317b723b6573c32778f6bed104 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 14:24:23 +0600 Subject: [PATCH 170/683] Add console log --- payments-eacq.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index a526c867..d7a4262f 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1316,6 +1316,7 @@ async ( const {id} = allLinks[i]; await deep.delete({id: id}); } + console.log("Deleted test links"); } const testInit = async () => { From 91bb3db0c70d0e6fd3fb850eb64e36113f957cc3 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 14:31:36 +0600 Subject: [PATCH 171/683] Update testConfirm --- payments-eacq.cjs | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index d7a4262f..16007bb4 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1434,17 +1434,10 @@ async ( const testConfirm = async () => { console.log('testConfirm-start'); await testFinishAuthorize(); - - for (let i = 0; i < 4; i++) { - let { data } = await deep.select({ - type_id: PPayed, - }); - if (data.length > 0) { - return; - } - await sleep(30000); - } - + sleep(6000); + let { data } = await deep.select({ + type_id: PPayed, + }); if (data.length === 0) { throw new Error('Payment is not confirmed'); } From 240d3c909a1520deab261bfdf527916f6efbbeed Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 14:43:37 +0600 Subject: [PATCH 172/683] Debug get state --- payments-eacq.cjs | 51 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 16007bb4..50e0fba7 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -14,6 +14,7 @@ const puppeteer = require('puppeteer'); const crypto = require('crypto'); const axios = require('axios'); const uniqid = require('uniqid'); +const { default: process } = require('process'); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); @@ -1457,10 +1458,56 @@ async ( }; const testGetState = async () => { - console.log('testGetState-end'); + console.log('testGetState-start'); await testFinishAuthorize(); - const payId = await deep.select({ type_id: PPay }); + const {data: [payLink]} = await deep.select({ type_id: PPay }); + const checkOrder = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('CheckOrder'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const noTokenCheckOrderOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: payLink?.value?.value ?? payLink.id + } + + const checkOrderOptions = { + ...noTokenCheckOrderOptions, + Token: generateToken(noTokenCheckOrderOptions) + } + + const checkOrderResponse = await checkOrder(checkOrderOptions); + if(checkOrderResponse.error) { + throw checkOrderResponse.error; + } + + console.log({checkOrderResponse}); + console.log(checkOrderResponse.response.Payments); + + const { data: [{ id: paymentId }], } = await deep.select({ From 1850e5b39c86e45d256c11481652511e5491d741 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 14:48:51 +0600 Subject: [PATCH 173/683] Fix IDE error --- payments-eacq.cjs | 1 - 1 file changed, 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 50e0fba7..2c7f3fc1 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -14,7 +14,6 @@ const puppeteer = require('puppeteer'); const crypto = require('crypto'); const axios = require('axios'); const uniqid = require('uniqid'); -const { default: process } = require('process'); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); From 578e6ab2bd654da47c09bfc3091a0e8aee2e93a2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 14:50:32 +0600 Subject: [PATCH 174/683] Wait more --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 2c7f3fc1..bcdd624e 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1434,7 +1434,7 @@ async ( const testConfirm = async () => { console.log('testConfirm-start'); await testFinishAuthorize(); - sleep(6000); + sleep(12000); let { data } = await deep.select({ type_id: PPayed, }); From 86f4ce079f4f25a0d344c1480dce524616c92b7e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 14:53:51 +0600 Subject: [PATCH 175/683] Wait more --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index bcdd624e..ca0dcc35 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1434,7 +1434,7 @@ async ( const testConfirm = async () => { console.log('testConfirm-start'); await testFinishAuthorize(); - sleep(12000); + sleep(25000); let { data } = await deep.select({ type_id: PPayed, }); From 6c0a2bc18da2561940e6ef81d58be7335eaf8e88 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 14:57:36 +0600 Subject: [PATCH 176/683] await sleep................... --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index ca0dcc35..89540881 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1434,7 +1434,7 @@ async ( const testConfirm = async () => { console.log('testConfirm-start'); await testFinishAuthorize(); - sleep(25000); + await sleep(7000); let { data } = await deep.select({ type_id: PPayed, }); From 5e7b337f62266ef1780cbd252983745440e5aab7 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 14:59:47 +0600 Subject: [PATCH 177/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 89540881..bba3b1f0 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1512,7 +1512,7 @@ async ( } = await deep.select({ up: { tree_id: paymentTreeId, - link_id: payId, + link_id: payLink.id, }, }); From 219f5f12ea6fdc6e6aba4c056370db1268500ff3 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 15:10:52 +0600 Subject: [PATCH 178/683] Use expect from chai --- payments-eacq.cjs | 53 +++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index bba3b1f0..2e4f1cb1 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -14,6 +14,7 @@ const puppeteer = require('puppeteer'); const crypto = require('crypto'); const axios = require('axios'); const uniqid = require('uniqid'); +const {expect} = require('chai'); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); @@ -1394,16 +1395,13 @@ async ( await sleep(9000); - const urlQuery = await deep.select({ + const {data: {length}} = await deep.select({ type_id: PUrl, to_id: payId, }); - const hasUrl = urlQuery.data.length > 0; - if (!hasUrl) { - throw new Error('Url not found.'); - } + expect(length).to.greaterThan(0); console.log('testInit-end'); }; @@ -1438,16 +1436,34 @@ async ( let { data } = await deep.select({ type_id: PPayed, }); - if (data.length === 0) { - throw new Error('Payment is not confirmed'); - } + expect(data.length).to.greaterThan(0); console.log('testConfirm-end'); }; const testCancel = async () => { - console.log('testCancel-end'); + console.log('testCancel-start'); const testCancelAfterPay = async () => { - const testCancelBeforeConfirmFullPrice = async () => {}; + const testCancelBeforeConfirmFullPrice = async () => { + await testFinishAuthorize(); + + const noTokenCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: paymentId, + Amount: PRICE + }; + + const options = { + ...noTokenCancelData, + Token: generateToken(noTokenCancelData), + }; + + console.log({ options }); + + const cancelResponse = await cancel(options); + + expect(cancelResponse.error).to.equal(undefined); + expect(result.response.Status).to.equal('REVERSED'); + }; const testCancelBeforeConfirmCustomPriceX2 = async () => {}; const testCancelAfterConfirmFullPrice = async () => {}; const testCancelAfterConfirmCustomPriceX2 = async () => {}; @@ -1499,22 +1515,13 @@ async ( } const checkOrderResponse = await checkOrder(checkOrderOptions); - if(checkOrderResponse.error) { - throw checkOrderResponse.error; - } + expect(checkOrderResponse.error).to.equal(undefined); console.log({checkOrderResponse}); - console.log(checkOrderResponse.response.Payments); + const {PaymentId: bankPaymentId} = checkOrderResponse.response.Payments[0]; - const { - data: [{ id: paymentId }], - } = await deep.select({ - up: { - tree_id: paymentTreeId, - link_id: payLink.id, - }, - }); + console.log({paymentId: bankPaymentId}); const noTokenGetStateData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1522,7 +1529,7 @@ async ( const newGetStateData = { ...noTokenGetStateData, - PaymentId: paymentId, + PaymentId: bankPaymentId, }; const options = { From bbf4160d7584eaa700221969c668b9182f1dcbc8 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 15:29:09 +0600 Subject: [PATCH 179/683] Add cancel tests --- payments-eacq.cjs | 117 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 113 insertions(+), 4 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 2e4f1cb1..467eaedd 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1464,12 +1464,121 @@ async ( expect(cancelResponse.error).to.equal(undefined); expect(result.response.Status).to.equal('REVERSED'); }; - const testCancelBeforeConfirmCustomPriceX2 = async () => {}; - const testCancelAfterConfirmFullPrice = async () => {}; - const testCancelAfterConfirmCustomPriceX2 = async () => {}; + const testCancelBeforeConfirmCustomPriceX2 = async () => { + await testFinishAuthorize(); + + const noTokenCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: paymentId, + Amount: PRICE / 3 + }; + + const options = { + ...noTokenCancelData, + Token: generateToken(noTokenCancelData), + }; + + console.log({ options }); + + { + const cancelResponse = await cancel(options); + + expect(cancelResponse.error).to.equal(undefined); + expect(result.response.Status).to.equal('REVERSED'); + } + { + const cancelResponse = await cancel(options); + + expect(cancelResponse.error).to.equal(undefined); + expect(result.response.Status).to.equal('REVERSED'); + } + }; + const testCancelAfterConfirmFullPrice = async () => { + await testConfirm(); + const noTokenCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: paymentId, + Amount: PRICE + }; + + const options = { + ...noTokenCancelData, + Token: generateToken(noTokenCancelData), + }; + + console.log({ options }); + + const cancelResponse = await cancel(options); + + expect(cancelResponse.error).to.equal(undefined); + expect(result.response.Status).to.equal('REVERSED'); + }; + const testCancelAfterConfirmCustomPriceX2 = async () => { + await testConfirm(); + + const noTokenCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: paymentId, + Amount: PRICE / 3 + }; + + const options = { + ...noTokenCancelData, + Token: generateToken(noTokenCancelData), + }; + + console.log({ options }); + + { + const cancelResponse = await cancel(options); + + expect(cancelResponse.error).to.equal(undefined); + expect(result.response.Status).to.equal('REVERSED'); + } + { + const cancelResponse = await cancel(options); + + expect(cancelResponse.error).to.equal(undefined); + expect(result.response.Status).to.equal('REVERSED'); + } + }; + + await testCancelBeforeConfirmFullPrice(); + await deleteTestLinks(); + await testCancelBeforeConfirmCustomPriceX2(); + await deleteTestLinks(); + await testCancelAfterConfirmFullPrice(); + await deleteTestLinks(); + await testCancelAfterConfirmCustomPriceX2(); + await deleteTestLinks(); + }; + + const testCancelBeforePay = async () => { + await testInit(); + const noTokenCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: paymentId, + Amount: PRICE + }; + + const options = { + ...noTokenCancelData, + Token: generateToken(noTokenCancelData), + }; + + console.log({ options }); + + const cancelResponse = await cancel(options); + + expect(cancelResponse.error).to.equal(undefined); + expect(result.response.Status).to.equal('REVERSED'); }; - const testCancelBeforePay = async () => {}; console.log('testCancel-end'); + + await testCancelAfterPay(); + await deleteTestLinks(); + await testCancelBeforePay(); + await deleteTestLinks(); }; const testGetState = async () => { From b8f8c5629c99d8d0a9d469ea8696b8fea2a63b07 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 15:30:05 +0600 Subject: [PATCH 180/683] Call testCancel --- payments-eacq.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 467eaedd..4fa38946 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1676,6 +1676,8 @@ async ( await deleteTestLinks(); await testConfirm(); await deleteTestLinks(); + await testCancel(); + await deleteTestLinks(); await testGetState(); await deleteTestLinks(); await testGetCardList(); From d7e0e06ed6a60d5e7d258e0f15714980fb208783 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 15:36:50 +0600 Subject: [PATCH 181/683] Use bankPaymentId --- payments-eacq.cjs | 135 +++++++++++++++++++++++++++++----------------- 1 file changed, 87 insertions(+), 48 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 4fa38946..d9157834 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -241,6 +241,33 @@ const f = async () => { } }; + const checkOrder = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('CheckOrder'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + const getCardList = async (options) => { try { const response = await axios({ @@ -346,6 +373,28 @@ const f = async () => { } }; + const getBankPaymentId = async (orderId) => { + const noTokenCheckOrderOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: payLink?.value?.value ?? payLink.id + } + + const checkOrderOptions = { + ...noTokenCheckOrderOptions, + Token: generateToken(noTokenCheckOrderOptions) + } + + const checkOrderResponse = await checkOrder(checkOrderOptions); + expect(checkOrderResponse.error).to.equal(undefined); + + console.log({checkOrderResponse}); + + const {PaymentId: bankPaymentId} = checkOrderResponse.response.Payments[0]; + + console.log({paymentId: bankPaymentId}); + return bankPaymentId; + } + const guest = await unloginedDeep.guest(); const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); const admin = await guestDeep.login({ @@ -1445,10 +1494,16 @@ async ( const testCancelAfterPay = async () => { const testCancelBeforeConfirmFullPrice = async () => { await testFinishAuthorize(); + + const {data: [payLink]} = await deep.select({ + type_id: PPay + }); + + const bankPaymentId = getBankPaymentId(payLink?.value?.value ?? payLink.id); const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: paymentId, + PaymentId: bankPaymentId, Amount: PRICE }; @@ -1467,9 +1522,15 @@ async ( const testCancelBeforeConfirmCustomPriceX2 = async () => { await testFinishAuthorize(); + const {data: [payLink]} = await deep.select({ + type_id: PPay + }); + + const bankPaymentId = getBankPaymentId(payLink?.value?.value ?? payLink.id); + const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: paymentId, + PaymentId: bankPaymentId, Amount: PRICE / 3 }; @@ -1495,9 +1556,16 @@ async ( }; const testCancelAfterConfirmFullPrice = async () => { await testConfirm(); + + const {data: [payLink]} = await deep.select({ + type_id: PPay + }); + + const bankPaymentId = getBankPaymentId(payLink?.value?.value ?? payLink.id); + const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: paymentId, + PaymentId: bankPaymentId, Amount: PRICE }; @@ -1516,9 +1584,15 @@ async ( const testCancelAfterConfirmCustomPriceX2 = async () => { await testConfirm(); + const {data: [payLink]} = await deep.select({ + type_id: PPay + }); + + const bankPaymentId = getBankPaymentId(payLink?.value?.value ?? payLink.id); + const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: paymentId, + PaymentId: bankPaymentId, Amount: PRICE / 3 }; @@ -1555,9 +1629,16 @@ async ( const testCancelBeforePay = async () => { await testInit(); + + const {data: [payLink]} = await deep.select({ + type_id: PPay + }); + + const bankPaymentId = getBankPaymentId(payLink?.value?.value ?? payLink.id); + const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: paymentId, + PaymentId: bankPaymentId, Amount: PRICE }; @@ -1586,51 +1667,9 @@ async ( await testFinishAuthorize(); const {data: [payLink]} = await deep.select({ type_id: PPay }); - const checkOrder = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('CheckOrder'), - headers: { - 'Content-Type': 'application/json', - }, - data: options, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const noTokenCheckOrderOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: payLink?.value?.value ?? payLink.id - } - - const checkOrderOptions = { - ...noTokenCheckOrderOptions, - Token: generateToken(noTokenCheckOrderOptions) - } - - const checkOrderResponse = await checkOrder(checkOrderOptions); - expect(checkOrderResponse.error).to.equal(undefined); - - console.log({checkOrderResponse}); - const {PaymentId: bankPaymentId} = checkOrderResponse.response.Payments[0]; - console.log({paymentId: bankPaymentId}); + const bankPaymentId = await getBankPaymentId(payLink.id); const noTokenGetStateData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, From 4343b373cf3a6f6ad79898f550851995caf3cb3c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 15:37:13 +0600 Subject: [PATCH 182/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index d9157834..4dce24fb 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1669,7 +1669,7 @@ async ( const {data: [payLink]} = await deep.select({ type_id: PPay }); - const bankPaymentId = await getBankPaymentId(payLink.id); + const bankPaymentId = await getBankPaymentId(payLink?.value?.value ?? payLink.id); const noTokenGetStateData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, From ebc193865270b96dcec1ccb15b6736650350776d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 15:40:06 +0600 Subject: [PATCH 183/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 4dce24fb..6e960233 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -376,7 +376,7 @@ const f = async () => { const getBankPaymentId = async (orderId) => { const noTokenCheckOrderOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: payLink?.value?.value ?? payLink.id + OrderId: orderId } const checkOrderOptions = { From 6d40da21da3ad65fbb373a41d575bf0fe43d3fa3 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 15:45:43 +0600 Subject: [PATCH 184/683] Add await --- payments-eacq.cjs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 6e960233..3dfd00dd 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1654,12 +1654,13 @@ async ( expect(cancelResponse.error).to.equal(undefined); expect(result.response.Status).to.equal('REVERSED'); }; - console.log('testCancel-end'); - await testCancelAfterPay(); await deleteTestLinks(); await testCancelBeforePay(); await deleteTestLinks(); + + + console.log('testCancel-end'); }; const testGetState = async () => { From 8152d4846e3fdc0f8e6f99e2f741e31a3d99bbcf Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 15:48:31 +0600 Subject: [PATCH 185/683] Add await --- payments-eacq.cjs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 3dfd00dd..ef72a02b 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1499,7 +1499,7 @@ async ( type_id: PPay }); - const bankPaymentId = getBankPaymentId(payLink?.value?.value ?? payLink.id); + const bankPaymentId = await getBankPaymentId(payLink?.value?.value ?? payLink.id); const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1526,7 +1526,7 @@ async ( type_id: PPay }); - const bankPaymentId = getBankPaymentId(payLink?.value?.value ?? payLink.id); + const bankPaymentId = await getBankPaymentId(payLink?.value?.value ?? payLink.id); const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1561,7 +1561,7 @@ async ( type_id: PPay }); - const bankPaymentId = getBankPaymentId(payLink?.value?.value ?? payLink.id); + const bankPaymentId = await getBankPaymentId(payLink?.value?.value ?? payLink.id); const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1588,7 +1588,7 @@ async ( type_id: PPay }); - const bankPaymentId = getBankPaymentId(payLink?.value?.value ?? payLink.id); + const bankPaymentId = await getBankPaymentId(payLink?.value?.value ?? payLink.id); const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1634,7 +1634,7 @@ async ( type_id: PPay }); - const bankPaymentId = getBankPaymentId(payLink?.value?.value ?? payLink.id); + const bankPaymentId = await getBankPaymentId(payLink?.value?.value ?? payLink.id); const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, From 612fdbc4de1a75e69c0e09d3e2ccab4116256f03 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 15:51:45 +0600 Subject: [PATCH 186/683] Renames --- payments-eacq.cjs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index ef72a02b..ca98b20d 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1517,7 +1517,7 @@ async ( const cancelResponse = await cancel(options); expect(cancelResponse.error).to.equal(undefined); - expect(result.response.Status).to.equal('REVERSED'); + expect(cancelResponse.response.Status).to.equal('REVERSED'); }; const testCancelBeforeConfirmCustomPriceX2 = async () => { await testFinishAuthorize(); @@ -1545,13 +1545,13 @@ async ( const cancelResponse = await cancel(options); expect(cancelResponse.error).to.equal(undefined); - expect(result.response.Status).to.equal('REVERSED'); + expect(cancelResponse.response.Status).to.equal('REVERSED'); } { const cancelResponse = await cancel(options); expect(cancelResponse.error).to.equal(undefined); - expect(result.response.Status).to.equal('REVERSED'); + expect(cancelResponse.response.Status).to.equal('REVERSED'); } }; const testCancelAfterConfirmFullPrice = async () => { @@ -1579,7 +1579,7 @@ async ( const cancelResponse = await cancel(options); expect(cancelResponse.error).to.equal(undefined); - expect(result.response.Status).to.equal('REVERSED'); + expect(cancelResponse.response.Status).to.equal('REVERSED'); }; const testCancelAfterConfirmCustomPriceX2 = async () => { await testConfirm(); @@ -1607,13 +1607,13 @@ async ( const cancelResponse = await cancel(options); expect(cancelResponse.error).to.equal(undefined); - expect(result.response.Status).to.equal('REVERSED'); + expect(cancelResponse.response.Status).to.equal('REVERSED'); } { const cancelResponse = await cancel(options); expect(cancelResponse.error).to.equal(undefined); - expect(result.response.Status).to.equal('REVERSED'); + expect(cancelResponse.response.Status).to.equal('REVERSED'); } }; @@ -1652,7 +1652,7 @@ async ( const cancelResponse = await cancel(options); expect(cancelResponse.error).to.equal(undefined); - expect(result.response.Status).to.equal('REVERSED'); + expect(cancelResponse.response.Status).to.equal('REVERSED'); }; await testCancelAfterPay(); await deleteTestLinks(); @@ -1686,9 +1686,9 @@ async ( Token: generateToken(newGetStateData), }; - const result = await getState(options); + const getStateResponse = await getState(options); - expect(result.error).to.equal(undefined); + expect(getStateResponse.error).to.equal(undefined); console.log('testGetState-end'); }; @@ -1706,9 +1706,9 @@ async ( Token: generateToken(noTokenGetStateData), }; - const result = await getCardList(options); + const getCardListResponse = await getCardList(options); - expect(result.error).to.equal(undefined); + expect(getCardListResponse.error).to.equal(undefined); console.log('testGetCardList-end'); }; From d7e34c9cd8e404486c59596e3cd42c97e0b30043 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 21:08:21 +0600 Subject: [PATCH 187/683] Update expects --- payments-eacq.cjs | 69 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 53 insertions(+), 16 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index ca98b20d..88715e15 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1493,7 +1493,7 @@ async ( console.log('testCancel-start'); const testCancelAfterPay = async () => { const testCancelBeforeConfirmFullPrice = async () => { - await testFinishAuthorize(); + const {data: [payLink]} = await deep.select({ type_id: PPay @@ -1520,13 +1520,46 @@ async ( expect(cancelResponse.response.Status).to.equal('REVERSED'); }; const testCancelBeforeConfirmCustomPriceX2 = async () => { - await testFinishAuthorize(); - - const {data: [payLink]} = await deep.select({ - type_id: PPay + const initOptions = { + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + OrderId: payLink?.value?.value ?? payLink.id, + CustomerKey: deep.linkId, + PayType: 'T', + Amount: PRICE, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + Receipt: { + Items: [{ + Name: 'Test item', + Price: sum, + Quantity: 1, + Amount: PRICE, + PaymentMethod: 'prepayment', + PaymentObject: 'service', + Tax: 'none', + }], + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + Taxation: 'usn_income', + } + }; + + console.log({options: initOptions}); + + let initResult = await sendInit({ + ...initOptions }); - const bankPaymentId = await getBankPaymentId(payLink?.value?.value ?? payLink.id); + console.log({initResult}); + + expect(initResult.error).to.equal(undefined); + + const bankPaymentId = initResult.response.PaymentId; const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1534,24 +1567,28 @@ async ( Amount: PRICE / 3 }; - const options = { + const cancelOptions = { ...noTokenCancelData, Token: generateToken(noTokenCancelData), }; - console.log({ options }); + console.log({ options: cancelOptions }); { - const cancelResponse = await cancel(options); + const cancelResponse = await cancel(cancelOptions); + + console.log({cancelResponse}); expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('REVERSED'); + expect(cancelResponse.response.Status).to.equal('PARTIAL_REVERSED'); } { - const cancelResponse = await cancel(options); + const cancelResponse = await cancel(cancelOptions); + + console.log({cancelResponse}); expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('REVERSED'); + expect(cancelResponse.response.Status).to.equal('PARTIAL_REVERSED'); } }; const testCancelAfterConfirmFullPrice = async () => { @@ -1579,7 +1616,7 @@ async ( const cancelResponse = await cancel(options); expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('REVERSED'); + expect(cancelResponse.response.Status).to.equal('REFUNDED'); }; const testCancelAfterConfirmCustomPriceX2 = async () => { await testConfirm(); @@ -1607,13 +1644,13 @@ async ( const cancelResponse = await cancel(options); expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('REVERSED'); + expect(cancelResponse.response.Status).to.equal('PARTIAL_REFUNDED'); } { const cancelResponse = await cancel(options); expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('REVERSED'); + expect(cancelResponse.response.Status).to.equal('PARTIAL_REFUNDED'); } }; @@ -1652,7 +1689,7 @@ async ( const cancelResponse = await cancel(options); expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('REVERSED'); + expect(cancelResponse.response.Status).to.equal('CANCELED'); }; await testCancelAfterPay(); await deleteTestLinks(); From 5a2638ad38b9a57cc525878ec86981d989d81a45 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 21:16:30 +0600 Subject: [PATCH 188/683] Update tests --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 88715e15..ce5a2567 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1493,7 +1493,7 @@ async ( console.log('testCancel-start'); const testCancelAfterPay = async () => { const testCancelBeforeConfirmFullPrice = async () => { - + await testFinishAuthorize(); const {data: [payLink]} = await deep.select({ type_id: PPay From 2a7e310beb3584715380667286500560f3d55df7 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 21:19:14 +0600 Subject: [PATCH 189/683] Wait more --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index ce5a2567..34937eeb 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1481,7 +1481,7 @@ async ( const testConfirm = async () => { console.log('testConfirm-start'); await testFinishAuthorize(); - await sleep(7000); + await sleep(17000); let { data } = await deep.select({ type_id: PPayed, }); From 55b2858155eb7ef8b040e109db3cc2b7597d3290 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 21:29:26 +0600 Subject: [PATCH 190/683] Update tests, comment receips --- payments-eacq.cjs | 107 +++++++++++++++++++++++++++++----------------- 1 file changed, 68 insertions(+), 39 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 34937eeb..95c78136 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -877,20 +877,20 @@ async ({ deep, require, data: { newLink: payLink } }) => { Email: "${process.env.PAYMENT_TEST_EMAIL}", Phone: "${process.env.PAYMENT_TEST_PHONE}", }, - Receipt: { - Items: [{ - Name: 'Test item', - Price: sum, - Quantity: 1, - Amount: ${PRICE}, - PaymentMethod: 'prepayment', - PaymentObject: 'service', - Tax: 'none', - }], - Email: "${process.env.PAYMENT_TEST_EMAIL}", - Phone: "${process.env.PAYMENT_TEST_PHONE}", - Taxation: 'usn_income', - } + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: ${PRICE}, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: "${process.env.PAYMENT_TEST_EMAIL}", + // Phone: "${process.env.PAYMENT_TEST_PHONE}", + // Taxation: 'usn_income', + // } }; console.log({options}); @@ -1493,28 +1493,57 @@ async ( console.log('testCancel-start'); const testCancelAfterPay = async () => { const testCancelBeforeConfirmFullPrice = async () => { - await testFinishAuthorize(); + const initOptions = { + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + OrderId: payLink?.value?.value ?? payLink.id, + CustomerKey: deep.linkId, + PayType: 'T', + Amount: PRICE, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // } + }; + + console.log({options: initOptions}); + + let initResult = await sendInit(initOptions); - const {data: [payLink]} = await deep.select({ - type_id: PPay - }); + console.log({initResult}); + + expect(initResult.error).to.equal(undefined); + + const bankPaymentId = initResult.response.PaymentId; - const bankPaymentId = await getBankPaymentId(payLink?.value?.value ?? payLink.id); - const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, - Amount: PRICE + Amount: PRICE / 3 }; - const options = { + const cancelOptions = { ...noTokenCancelData, Token: generateToken(noTokenCancelData), }; - console.log({ options }); - - const cancelResponse = await cancel(options); + console.log({ options: cancelOptions }); expect(cancelResponse.error).to.equal(undefined); expect(cancelResponse.response.Status).to.equal('REVERSED'); @@ -1533,20 +1562,20 @@ async ( Email: process.env.PAYMENT_TEST_EMAIL, Phone: process.env.PAYMENT_TEST_PHONE, }, - Receipt: { - Items: [{ - Name: 'Test item', - Price: sum, - Quantity: 1, - Amount: PRICE, - PaymentMethod: 'prepayment', - PaymentObject: 'service', - Tax: 'none', - }], - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - Taxation: 'usn_income', - } + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // } }; console.log({options: initOptions}); From fdb7a7af21a069dd6e582e66329a4fa429a5006c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 21:33:00 +0600 Subject: [PATCH 191/683] Use uniqid --- payments-eacq.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 95c78136..a1a3019a 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1495,7 +1495,7 @@ async ( const testCancelBeforeConfirmFullPrice = async () => { const initOptions = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - OrderId: payLink?.value?.value ?? payLink.id, + OrderId: uniqid(), CustomerKey: deep.linkId, PayType: 'T', Amount: PRICE, @@ -1551,7 +1551,7 @@ async ( const testCancelBeforeConfirmCustomPriceX2 = async () => { const initOptions = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - OrderId: payLink?.value?.value ?? payLink.id, + OrderId: uniqid(), CustomerKey: deep.linkId, PayType: 'T', Amount: PRICE, From 8afb8c9cd8ab1e077a996e37590fa05c984572f6 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 21:35:57 +0600 Subject: [PATCH 192/683] Fix typo --- payments-eacq.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index a1a3019a..1dea5a10 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1494,7 +1494,7 @@ async ( const testCancelAfterPay = async () => { const testCancelBeforeConfirmFullPrice = async () => { const initOptions = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, OrderId: uniqid(), CustomerKey: deep.linkId, PayType: 'T', @@ -1550,7 +1550,7 @@ async ( }; const testCancelBeforeConfirmCustomPriceX2 = async () => { const initOptions = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, OrderId: uniqid(), CustomerKey: deep.linkId, PayType: 'T', From 4c559d515bc7845c071e36b7a387132219a5ec56 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 21:41:13 +0600 Subject: [PATCH 193/683] Do cancel --- payments-eacq.cjs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 1dea5a10..b0dd7017 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1545,6 +1545,8 @@ async ( console.log({ options: cancelOptions }); + const cancelResponse = await cancel(cancelOptions); + expect(cancelResponse.error).to.equal(undefined); expect(cancelResponse.response.Status).to.equal('REVERSED'); }; @@ -1602,6 +1604,8 @@ async ( }; console.log({ options: cancelOptions }); + + const cancelResponse = await cancel(cancelOptions); { const cancelResponse = await cancel(cancelOptions); From aeadcf6348add8a611a886a9e3b85e5e40cc2601 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 21:45:29 +0600 Subject: [PATCH 194/683] Log cancel response --- payments-eacq.cjs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index b0dd7017..aefdda10 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1543,10 +1543,12 @@ async ( Token: generateToken(noTokenCancelData), }; - console.log({ options: cancelOptions }); + console.log({cancelOptions}); const cancelResponse = await cancel(cancelOptions); + console.log({cancelResponse}); + expect(cancelResponse.error).to.equal(undefined); expect(cancelResponse.response.Status).to.equal('REVERSED'); }; @@ -1603,10 +1605,8 @@ async ( Token: generateToken(noTokenCancelData), }; - console.log({ options: cancelOptions }); - - const cancelResponse = await cancel(cancelOptions); - + console.log({cancelOptions}); + { const cancelResponse = await cancel(cancelOptions); From c60086a22a302a8879386f9ed71e4894c40c7080 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 21:49:08 +0600 Subject: [PATCH 195/683] Add logs --- payments-eacq.cjs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index aefdda10..4185bc26 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -192,16 +192,20 @@ const f = async () => { .sort((a, b) => a.localeCompare(b)) .map((key) => dataWithPassword[key]) .reduce((acc, item) => `${acc}${item}`, ''); + console.log({dataString}); const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + console.log({hash}); return hash; }; const generateToken = (data) => { const { Receipt, DATA, Shops, ...restData } = data; + console.log({restData}); const dataWithPassword = { ...restData, Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, }; + console.log({dataWithPassword}); return _generateToken(dataWithPassword); }; From 815357306d09a7b30ea6691914935727fcdc8b33 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 19 Aug 2022 21:52:33 +0600 Subject: [PATCH 196/683] Floor amount --- payments-eacq.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 4185bc26..a86bb7a3 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1539,7 +1539,7 @@ async ( const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, - Amount: PRICE / 3 + Amount: Math.floor(PRICE / 3) }; const cancelOptions = { @@ -1601,7 +1601,7 @@ async ( const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, - Amount: PRICE / 3 + Amount: Math.floor(PRICE / 3) }; const cancelOptions = { @@ -1667,7 +1667,7 @@ async ( const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, - Amount: PRICE / 3 + Amount: Math.floor(PRICE / 3) }; const options = { From 3b7186275b34450928f3ef0125db90ef3e1420c4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 10:30:35 +0600 Subject: [PATCH 197/683] Pay in browser in reversed test --- payments-eacq.cjs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index a86bb7a3..fd3f7edd 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1534,6 +1534,16 @@ async ( expect(initResult.error).to.equal(undefined); + const url = initResult.response.PaymentURL; + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); + const bankPaymentId = initResult.response.PaymentId; const noTokenCancelData = { From 6eb18ef326f16991a30689214d46d96d3b1ff06a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 10:39:31 +0600 Subject: [PATCH 198/683] Change amount to full price --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index fd3f7edd..f27d45d8 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1549,7 +1549,7 @@ async ( const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, - Amount: Math.floor(PRICE / 3) + Amount: PRICE }; const cancelOptions = { From c3ea38b78849e8f3236dd0e6cebb484f1c39a5c2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 10:43:30 +0600 Subject: [PATCH 199/683] Move browser var to upper level, pay in browser to test reversed --- payments-eacq.cjs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f27d45d8..bc6627db 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1291,6 +1291,9 @@ async ( const callTests = async () => { console.log('callTests-start'); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const PPayment = await deep.id(packageName, 'Payment'); const PObject = await deep.id(packageName, 'Object'); const PSum = await deep.id(packageName, 'Sum'); @@ -1471,9 +1474,7 @@ async ( type_id: PUrl, }); - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); - await payInBrowser({ browser, page, @@ -1536,7 +1537,6 @@ async ( const url = initResult.response.PaymentURL; - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); await payInBrowser({ browser, @@ -1606,6 +1606,15 @@ async ( expect(initResult.error).to.equal(undefined); + const url = initResult.response.PaymentURL; + + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); + const bankPaymentId = initResult.response.PaymentId; const noTokenCancelData = { From d49b66406e8d7fcc7245bb0348cbae266e219434 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 10:52:58 +0600 Subject: [PATCH 200/683] Update tests --- payments-eacq.cjs | 390 +++++++++++++++++++++++----------------------- 1 file changed, 199 insertions(+), 191 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index bc6627db..a8888915 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1496,231 +1496,232 @@ async ( const testCancel = async () => { console.log('testCancel-start'); - const testCancelAfterPay = async () => { - const testCancelBeforeConfirmFullPrice = async () => { - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - Amount: PRICE, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: sum, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // } - }; - - console.log({options: initOptions}); - - let initResult = await sendInit(initOptions); + const testCancelAfterPayBeforeConfirmFullPrice = async () => { + console.log("testCanselAfterPayBeforeConfirmFullPrice-start"); + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + Amount: PRICE, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // } + }; + + console.log({options: initOptions}); + + let initResult = await sendInit(initOptions); - console.log({initResult}); + console.log({initResult}); - expect(initResult.error).to.equal(undefined); + expect(initResult.error).to.equal(undefined); - const url = initResult.response.PaymentURL; + const url = initResult.response.PaymentURL; - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, - }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); - const bankPaymentId = initResult.response.PaymentId; + const bankPaymentId = initResult.response.PaymentId; - const noTokenCancelData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE - }; - - const cancelOptions = { - ...noTokenCancelData, - Token: generateToken(noTokenCancelData), - }; - - console.log({cancelOptions}); + const noTokenCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE + }; - const cancelResponse = await cancel(cancelOptions); + const cancelOptions = { + ...noTokenCancelData, + Token: generateToken(noTokenCancelData), + }; - console.log({cancelResponse}); + console.log({cancelOptions}); - expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('REVERSED'); - }; - const testCancelBeforeConfirmCustomPriceX2 = async () => { - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - Amount: PRICE, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: sum, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // } - }; - - console.log({options: initOptions}); - - let initResult = await sendInit({ - ...initOptions - }); + const cancelResponse = await cancel(cancelOptions); - console.log({initResult}); + console.log({cancelResponse}); - expect(initResult.error).to.equal(undefined); + expect(cancelResponse.error).to.equal(undefined); + expect(cancelResponse.response.Status).to.equal('REVERSED'); + console.log("testCanselAfterPayBeforeConfirmFullPrice-end"); + }; - const url = initResult.response.PaymentURL; + const testCancelAfterPayBeforeConfirmCustomPriceX2 = async () => { + console.log("testCanselAfterPayBeforeConfirmCustomPriceX2-start"); + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + Amount: PRICE, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // } + }; + + console.log({options: initOptions}); + + let initResult = await sendInit({ + ...initOptions + }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, - }); + console.log({initResult}); - const bankPaymentId = initResult.response.PaymentId; + expect(initResult.error).to.equal(undefined); - const noTokenCancelData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: Math.floor(PRICE / 3) - }; - - const cancelOptions = { - ...noTokenCancelData, - Token: generateToken(noTokenCancelData), - }; - - console.log({cancelOptions}); - - { - const cancelResponse = await cancel(cancelOptions); + const url = initResult.response.PaymentURL; - console.log({cancelResponse}); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); - expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('PARTIAL_REVERSED'); - } - { - const cancelResponse = await cancel(cancelOptions); + const bankPaymentId = initResult.response.PaymentId; - console.log({cancelResponse}); + const noTokenCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: Math.floor(PRICE / 3) + }; - expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('PARTIAL_REVERSED'); - } + const cancelOptions = { + ...noTokenCancelData, + Token: generateToken(noTokenCancelData), }; - const testCancelAfterConfirmFullPrice = async () => { - await testConfirm(); - const {data: [payLink]} = await deep.select({ - type_id: PPay - }); + console.log({cancelOptions}); + + { + const cancelResponse = await cancel(cancelOptions); - const bankPaymentId = await getBankPaymentId(payLink?.value?.value ?? payLink.id); + console.log({cancelResponse}); - const noTokenCancelData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE - }; - - const options = { - ...noTokenCancelData, - Token: generateToken(noTokenCancelData), - }; - - console.log({ options }); - - const cancelResponse = await cancel(options); + expect(cancelResponse.error).to.equal(undefined); + expect(cancelResponse.response.Status).to.equal('PARTIAL_REVERSED'); + } + { + const cancelResponse = await cancel(cancelOptions); + + console.log({cancelResponse}); expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('REFUNDED'); + expect(cancelResponse.response.Status).to.equal('PARTIAL_REVERSED'); + } + console.log("testCanselAfterPayBeforeConfirmCustomPriceX2-end"); + }; + + const testCancelAfterPayAfterConfirmFullPrice = async () => { + console.log("testCancelAfterPayAfterConfirmFullPrice-start"); + await testConfirm(); + + const {data: [payLink]} = await deep.select({ + type_id: PPay + }); + + const bankPaymentId = await getBankPaymentId(payLink?.value?.value ?? payLink.id); + + const noTokenCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE + }; + + const options = { + ...noTokenCancelData, + Token: generateToken(noTokenCancelData), }; - const testCancelAfterConfirmCustomPriceX2 = async () => { - await testConfirm(); - const {data: [payLink]} = await deep.select({ - type_id: PPay - }); + console.log({ options }); - const bankPaymentId = await getBankPaymentId(payLink?.value?.value ?? payLink.id); + const cancelResponse = await cancel(options); - const noTokenCancelData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: Math.floor(PRICE / 3) - }; - - const options = { - ...noTokenCancelData, - Token: generateToken(noTokenCancelData), - }; - - console.log({ options }); - - { - const cancelResponse = await cancel(options); + expect(cancelResponse.error).to.equal(undefined); + expect(cancelResponse.response.Status).to.equal('REFUNDED'); + console.log("testCancelAfterPayAfterConfirmFullPrice-end"); + }; - expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('PARTIAL_REFUNDED'); - } - { - const cancelResponse = await cancel(options); + const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { + console.log("testCancelAfterPayAfterConfirmCustomPriceX2-start"); + await testConfirm(); + + const {data: [payLink]} = await deep.select({ + type_id: PPay + }); - expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('PARTIAL_REFUNDED'); - } + const bankPaymentId = await getBankPaymentId(payLink?.value?.value ?? payLink.id); + + const noTokenCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: Math.floor(PRICE / 3) }; - await testCancelBeforeConfirmFullPrice(); - await deleteTestLinks(); - await testCancelBeforeConfirmCustomPriceX2(); - await deleteTestLinks(); - await testCancelAfterConfirmFullPrice(); - await deleteTestLinks(); - await testCancelAfterConfirmCustomPriceX2(); - await deleteTestLinks(); + const options = { + ...noTokenCancelData, + Token: generateToken(noTokenCancelData), + }; + + console.log({ options }); + + { + const cancelResponse = await cancel(options); + + expect(cancelResponse.error).to.equal(undefined); + expect(cancelResponse.response.Status).to.equal('PARTIAL_REFUNDED'); + } + { + const cancelResponse = await cancel(options); + + expect(cancelResponse.error).to.equal(undefined); + expect(cancelResponse.response.Status).to.equal('PARTIAL_REFUNDED'); + } + console.log("testCancelAfterPayAfterConfirmCustomPriceX2-end"); }; const testCancelBeforePay = async () => { + console.log("testCancelBeforePay-start"); await testInit(); const {data: [payLink]} = await deep.select({ @@ -1746,9 +1747,16 @@ async ( expect(cancelResponse.error).to.equal(undefined); expect(cancelResponse.response.Status).to.equal('CANCELED'); + console.log("testCancelBeforePay-end"); }; - await testCancelAfterPay(); - await deleteTestLinks(); + await testCancelAfterPayBeforeConfirmFullPrice(); + await deleteTestLinks(); + await testCancelAfterPayBeforeConfirmCustomPriceX2(); + await deleteTestLinks(); + await testCancelAfterPayAfterConfirmFullPrice(); + await deleteTestLinks(); + await testCancelAfterPayAfterConfirmCustomPriceX2(); + await deleteTestLinks(); await testCancelBeforePay(); await deleteTestLinks(); From a4afd96f044645424c5eea0df9b1df8462508baa Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 11:03:18 +0600 Subject: [PATCH 201/683] Add console logs --- payments-eacq.cjs | 48 ++++++++++++++++------------------------------- 1 file changed, 16 insertions(+), 32 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index a8888915..b0cb3dec 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -200,7 +200,6 @@ const f = async () => { const generateToken = (data) => { const { Receipt, DATA, Shops, ...restData } = data; - console.log({restData}); const dataWithPassword = { ...restData, Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, @@ -1533,29 +1532,43 @@ async ( console.log({initResult}); + console.log("before expect"); expect(initResult.error).to.equal(undefined); - + console.log("after expect"); + console.log("before url"); const url = initResult.response.PaymentURL; + console.log("after url"); + console.log("before page"); const page = await browser.newPage(); + console.log("after page"); + console.log("before payInBrowser"); await payInBrowser({ browser, page, url, }); + console.log("after payInBrowser"); + console.log("before bankPaymentId"); const bankPaymentId = initResult.response.PaymentId; + console.log("after bankPaymentId"); + console.log("before noTokenCancelData"); const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: PRICE }; + console.log("after noTokenCancelData"); + + console.log("before noTokenCancelData"); const cancelOptions = { ...noTokenCancelData, Token: generateToken(noTokenCancelData), }; + console.log("after noTokenCancelData"); console.log({cancelOptions}); @@ -1825,38 +1838,9 @@ async ( await deleteTestLinks(); }; - try { - await callTests(); - } catch (error) { - throw error; - } finally { - const cancelAllPayments = async () => { - console.log('cancelAllPayments'); - const { data: paymentLinks } = await deep.select({ - type_id: PPayment, - }); - - for (const { id: paymentId } of paymentLinks) { - const newCancelData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: paymentId, - }; - - const options = { - ...newCancelData, - Token: generateToken(newCancelData), - }; - - console.log({ options }); - - const cancelResponse = await cancel(options); - console.log({ cancelResponse }); - } - }; + await callTests(); - // await cancelAllPayments(); - } }; f(); From 3dc4d1d298ed2c2dad67b4ca447558659dfa63b4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 11:05:40 +0600 Subject: [PATCH 202/683] Declare browser every time --- payments-eacq.cjs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index b0cb3dec..83138c37 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1473,6 +1473,7 @@ async ( type_id: PUrl, }); + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); await payInBrowser({ browser, @@ -1540,6 +1541,7 @@ async ( console.log("after url"); console.log("before page"); + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); console.log("after page"); console.log("before payInBrowser"); @@ -1624,6 +1626,7 @@ async ( const url = initResult.response.PaymentURL; + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); await payInBrowser({ browser, From df09da6ce8b16efabfcea46c3d737d9872032b9f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 11:14:07 +0600 Subject: [PATCH 203/683] Add resend test --- payments-eacq.cjs | 49 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 83138c37..f0e8845b 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -376,6 +376,31 @@ const f = async () => { } }; + const resend = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Resend'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getBankPaymentId = async (orderId) => { const noTokenCheckOrderOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1815,7 +1840,7 @@ async ( const noTokenGetCardListData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: customerKey, + CustomerKey: deep.linkId, }; const options = { @@ -1829,6 +1854,26 @@ async ( console.log('testGetCardList-end'); }; + const testResend = async () => { + console.log("testResend-start"); + const noTokenResendOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + }; + + const resendOptions = { + ...noTokenResendOptions, + Token: generateToken(noTokenResendOptions), + }; + + console.log({resendOptions}); + + const resendResult = await resend(resendOptions); + console.log({resendResult}); + + expect(resendResult.error).to.equal(undefined); + console.log("testResend-end"); + } + await testInit(); await deleteTestLinks(); await testConfirm(); @@ -1839,6 +1884,8 @@ async ( await deleteTestLinks(); await testGetCardList(); await deleteTestLinks(); + await testResend(); + await deleteTestLinks(); }; From b630f088046b53b94a9a8f80196b1f713797a404 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 11:27:03 +0600 Subject: [PATCH 204/683] Add charge test --- payments-eacq.cjs | 73 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f0e8845b..1dd82e42 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1874,6 +1874,77 @@ async ( console.log("testResend-end"); } + const testCharge = async () => { + console.log("testCharge-start"); + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initResult = await sendInit({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: 5500, + OrderId: uniqid(), + CustomerKey: deep.linkId, + Recurrent: 'Y', + }); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const noTokenGetCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; + + const getCardListOptions = { + ...noTokenGetCardListOptions, + Token: generateToken(noTokenGetCardListOptions), + }; + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.response[0].RebillId).to.have.length.above(0); + + const noTokenGetStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const getStateOptions = { + ...noTokenGetStateOptions, + Token: generateToken(noTokenGetStateOptions), + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.response.Status).to.equal('AUTHORIZED'); + + const newInitResult = await sendInit({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: 5500, + OrderId: uniqid(), + CustomerKey: deep.linkId, + }); + + const newChargeData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: newInitResult.response.PaymentId, + RebillId: Number(getCardListResult.response[0].RebillId), + }; + + const options = { + ...newChargeData, + Token: generateToken(newChargeData), + }; + + const chargeResult = await charge(options); + + expect(chargeResult.error).to.equal(undefined); + console.log("testCharge-end"); + } + await testInit(); await deleteTestLinks(); await testConfirm(); @@ -1886,6 +1957,8 @@ async ( await deleteTestLinks(); await testResend(); await deleteTestLinks(); + await testCharge(); + await deleteTestLinks(); }; From 45491099504f74dd8c1e14636ebd9c4299c9da3c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 11:30:07 +0600 Subject: [PATCH 205/683] Add addCustomer test --- payments-eacq.cjs | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 1dd82e42..5a1e2ec0 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -399,6 +399,34 @@ const f = async () => { }; } }; + + const addCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('AddCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + const getBankPaymentId = async (orderId) => { @@ -1945,6 +1973,25 @@ async ( console.log("testCharge-end"); } + const testAddCustomer = async () => { + console.log("testAddCustomer-start"); + + const noTokenAddCustomerOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: customerKey, + }; + + const addCustomerOptions = { + ...noTokenAddCustomerOptions, + Token: generateToken(noTokenAddCustomerOptions), + }; + + const addCustomerResult = await addCustomer(addCustomerOptions); + + expect(addCustomerResult.error).to.equal(undefined); + console.log("testAddCustomer-end"); + } + await testInit(); await deleteTestLinks(); await testConfirm(); @@ -1959,6 +2006,8 @@ async ( await deleteTestLinks(); await testCharge(); await deleteTestLinks(); + await testAddCustomer(); + await deleteTestLinks(); }; From 79845a9debecafe600626e6bc769abb8bcba469c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 11:33:18 +0600 Subject: [PATCH 206/683] Add getCustomer test --- payments-eacq.cjs | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 5a1e2ec0..e8ffa515 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1990,7 +1990,45 @@ async ( expect(addCustomerResult.error).to.equal(undefined); console.log("testAddCustomer-end"); - } + }; + + const testGetCustomer = async () => { + console.log("testGetCustomer-start"); + + const customerKey = uniqid(); + + const noTokenAddCustomerData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: customerKey, + }; + + const newAddCustomerData = { + ...noTokenAddCustomerData, + Phone: process.env.PAYMENT_TEST_PHONE, + }; + + const addCustomerDataOptions = { + ...newAddCustomerData, + Token: generateToken(newAddCustomerData), + }; + + const addResult = await addCustomer(addCustomerDataOptions); + + expect(addResult.error).to.equal(undefined); + + const getCustomerDataOptions = { + ...noTokenAddCustomerData, + Token: generateToken(noTokenAddCustomerData), + }; + + const getResult = await getCustomer(getCustomerDataOptions); + + expect(getResult.error).to.equal(undefined); + expect(getResult.response.Phone).to.equal(process.env.PAYMENT_TEST_PHONE); + + + console.log("testGetCustomer-end"); + }; await testInit(); await deleteTestLinks(); @@ -2008,6 +2046,8 @@ async ( await deleteTestLinks(); await testAddCustomer(); await deleteTestLinks(); + await testGetCustomer(); + await deleteTestLinks(); }; From 0fb00ad90f28c7964042e87b2836e825905ac8c9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 11:34:10 +0600 Subject: [PATCH 207/683] Add removeCustomer test --- payments-eacq.cjs | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index e8ffa515..8c7cd3e1 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2030,6 +2030,43 @@ async ( console.log("testGetCustomer-end"); }; + const removeCustomer = async () => { + console.log("removeCustomer-start"); + + const customerKey = uniqid(); + + const noTokenRemoveCustomerData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: customerKey, + }; + + const newAddCustomerData = { + ...noTokenRemoveCustomerData, + Phone: process.env.PAYMENT_TEST_PHONE, + }; + + const addCustomerDataOptions = { + ...newAddCustomerData, + Token: generateToken(newAddCustomerData), + }; + + const addResult = await addCustomer(addCustomerDataOptions); + + expect(addResult.error).to.equal(undefined); + + const removeCustomerDataOptions = { + ...noTokenRemoveCustomerData, + Token: generateToken(noTokenRemoveCustomerData), + }; + + const removeResult = await removeCustomer(removeCustomerDataOptions); + + expect(removeResult.error).to.equal(undefined); + + + console.log("removeCustomer-end"); + } + await testInit(); await deleteTestLinks(); await testConfirm(); @@ -2048,6 +2085,8 @@ async ( await deleteTestLinks(); await testGetCustomer(); await deleteTestLinks(); + await testRemoveCustomer(); + await deleteTestLinks(); }; From 711eae5bdc850ae404c0d3c5afdd31d0c238c7d5 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 11:37:10 +0600 Subject: [PATCH 208/683] Rename response -> result --- payments-eacq.cjs | 68 +++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 8c7cd3e1..164dfba1 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -440,12 +440,12 @@ const f = async () => { Token: generateToken(noTokenCheckOrderOptions) } - const checkOrderResponse = await checkOrder(checkOrderOptions); - expect(checkOrderResponse.error).to.equal(undefined); + const checkOrderResult = await checkOrder(checkOrderOptions); + expect(checkOrderResult.error).to.equal(undefined); - console.log({checkOrderResponse}); + console.log({checkOrderResponse: checkOrderResult}); - const {PaymentId: bankPaymentId} = checkOrderResponse.response.Payments[0]; + const {PaymentId: bankPaymentId} = checkOrderResult.response.Payments[0]; console.log({paymentId: bankPaymentId}); return bankPaymentId; @@ -1185,8 +1185,8 @@ async ( ...noTokenConfirmOptions, Token: generateToken(noTokenConfirmOptions) } - const confirmResponse = await confirm(confirmOptions); - console.log({confirmResponse}); + const confirmResult = await confirm(confirmOptions); + console.log({confirmResult}); } else if (status == 'CONFIRMED') { const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: ${PPay}, from_id: req.body.CustomerKey}); const payedInsertData = await deep.insert({ @@ -1627,12 +1627,12 @@ async ( console.log({cancelOptions}); - const cancelResponse = await cancel(cancelOptions); + const cancelResult = await cancel(cancelOptions); - console.log({cancelResponse}); + console.log({cancelResponse: cancelResult}); - expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('REVERSED'); + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('REVERSED'); console.log("testCanselAfterPayBeforeConfirmFullPrice-end"); }; @@ -1703,20 +1703,20 @@ async ( console.log({cancelOptions}); { - const cancelResponse = await cancel(cancelOptions); + const cancelResult = await cancel(cancelOptions); - console.log({cancelResponse}); + console.log({cancelResponse: cancelResult}); - expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('PARTIAL_REVERSED'); + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); } { - const cancelResponse = await cancel(cancelOptions); + const cancelResult = await cancel(cancelOptions); - console.log({cancelResponse}); + console.log({cancelResponse: cancelResult}); - expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('PARTIAL_REVERSED'); + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); } console.log("testCanselAfterPayBeforeConfirmCustomPriceX2-end"); }; @@ -1744,10 +1744,10 @@ async ( console.log({ options }); - const cancelResponse = await cancel(options); + const cancelResult = await cancel(options); - expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('REFUNDED'); + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('REFUNDED'); console.log("testCancelAfterPayAfterConfirmFullPrice-end"); }; @@ -1775,16 +1775,16 @@ async ( console.log({ options }); { - const cancelResponse = await cancel(options); + const cancelResult = await cancel(options); - expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('PARTIAL_REFUNDED'); + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); } { - const cancelResponse = await cancel(options); + const cancelResult = await cancel(options); - expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('PARTIAL_REFUNDED'); + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); } console.log("testCancelAfterPayAfterConfirmCustomPriceX2-end"); }; @@ -1812,10 +1812,10 @@ async ( console.log({ options }); - const cancelResponse = await cancel(options); + const cancelResult = await cancel(options); - expect(cancelResponse.error).to.equal(undefined); - expect(cancelResponse.response.Status).to.equal('CANCELED'); + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('CANCELED'); console.log("testCancelBeforePay-end"); }; await testCancelAfterPayBeforeConfirmFullPrice(); @@ -1856,9 +1856,9 @@ async ( Token: generateToken(newGetStateData), }; - const getStateResponse = await getState(options); + const getStateResult = await getState(options); - expect(getStateResponse.error).to.equal(undefined); + expect(getStateResult.error).to.equal(undefined); console.log('testGetState-end'); }; @@ -1876,9 +1876,9 @@ async ( Token: generateToken(noTokenGetStateData), }; - const getCardListResponse = await getCardList(options); + const getCardListResult = await getCardList(options); - expect(getCardListResponse.error).to.equal(undefined); + expect(getCardListResult.error).to.equal(undefined); console.log('testGetCardList-end'); }; From 2ac071fc64fa05c6ae7a0ae1f589116daa70075f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 11:42:35 +0600 Subject: [PATCH 209/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 164dfba1..a38ee369 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1873,7 +1873,7 @@ async ( const options = { ...noTokenGetCardListData, - Token: generateToken(noTokenGetStateData), + Token: generateToken(noTokenGetCardListData), }; const getCardListResult = await getCardList(options); From 87851f117f560f596764eb1417f73d67928acd12 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 11:48:26 +0600 Subject: [PATCH 210/683] Add charge --- payments-eacq.cjs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index a38ee369..1b207151 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -400,6 +400,34 @@ const f = async () => { } }; + const charge = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Charge'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const addCustomer = async (options) => { try { const response = await axios({ From 013bc3a7d042508ef4527e554b8d9c671eea3d97 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 11:54:29 +0600 Subject: [PATCH 211/683] Add customerKey --- payments-eacq.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 1b207151..e955c0f6 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2004,6 +2004,8 @@ async ( const testAddCustomer = async () => { console.log("testAddCustomer-start"); + const customerKey = uniqid(); + const noTokenAddCustomerOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: customerKey, From 13c0a0697ec314580fcc65e4afb506346427f879 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 11:59:10 +0600 Subject: [PATCH 212/683] Add getcustomer --- payments-eacq.cjs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index e955c0f6..1c3353a5 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -454,6 +454,35 @@ const f = async () => { }; } }; + + +const getCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; + From 101574b60bd7e231860384fad2dd7d9e04e13c25 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 12:03:30 +0600 Subject: [PATCH 213/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 1c3353a5..d50ea071 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2089,7 +2089,7 @@ async ( console.log("testGetCustomer-end"); }; - const removeCustomer = async () => { + const testRemoveCustomer = async () => { console.log("removeCustomer-start"); const customerKey = uniqid(); From b8dedc87045543126604566743c66168cc9d6cee Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 12:08:56 +0600 Subject: [PATCH 214/683] Add removeCustomer --- payments-eacq.cjs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index d50ea071..e73fbe74 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -483,6 +483,33 @@ const getCustomer = async (options) => { } }; +const removeCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('RemoveCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } +}; + From 2a8759e29c4068f09c37da680f03d9f8fde34a0c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 12:09:05 +0600 Subject: [PATCH 215/683] Format --- payments-eacq.cjs | 594 +++++++++++++++++++++++----------------------- 1 file changed, 303 insertions(+), 291 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index e73fbe74..e53e6452 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -14,7 +14,7 @@ const puppeteer = require('puppeteer'); const crypto = require('crypto'); const axios = require('axios'); const uniqid = require('uniqid'); -const {expect} = require('chai'); +const { expect } = require('chai'); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); @@ -192,9 +192,9 @@ const f = async () => { .sort((a, b) => a.localeCompare(b)) .map((key) => dataWithPassword[key]) .reduce((acc, item) => `${acc}${item}`, ''); - console.log({dataString}); + console.log({ dataString }); const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - console.log({hash}); + console.log({ hash }); return hash; }; @@ -204,7 +204,7 @@ const f = async () => { ...restData, Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, }; - console.log({dataWithPassword}); + console.log({ dataWithPassword }); return _generateToken(dataWithPassword); }; @@ -254,9 +254,9 @@ const f = async () => { }, data: options, }); - + const error = getError(response.data.ErrorCode); - + return { error, request: options, @@ -383,9 +383,9 @@ const f = async () => { url: getUrl('Resend'), data: options, }); - + const error = getError(response.data.ErrorCode); - + return { error, request: options, @@ -410,9 +410,9 @@ const f = async () => { }, data: options, }); - + const error = getError(response.data.ErrorCode); - + return { error, request: options, @@ -426,7 +426,6 @@ const f = async () => { }; } }; - const addCustomer = async (options) => { try { @@ -438,9 +437,9 @@ const f = async () => { }, data: options, }); - + const error = getError(response.data.ErrorCode); - + return { error, request: options, @@ -455,85 +454,81 @@ const f = async () => { } }; + const getCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); -const getCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: options, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } -}; + const error = getError(response.data.ErrorCode); -const removeCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('RemoveCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: options, - }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const error = getError(response.data.ErrorCode); + const removeCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('RemoveCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: options, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } -}; + const error = getError(response.data.ErrorCode); - - + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; const getBankPaymentId = async (orderId) => { const noTokenCheckOrderOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: orderId - } + OrderId: orderId, + }; const checkOrderOptions = { ...noTokenCheckOrderOptions, - Token: generateToken(noTokenCheckOrderOptions) - } + Token: generateToken(noTokenCheckOrderOptions), + }; const checkOrderResult = await checkOrder(checkOrderOptions); expect(checkOrderResult.error).to.equal(undefined); - console.log({checkOrderResponse: checkOrderResult}); - - const {PaymentId: bankPaymentId} = checkOrderResult.response.Payments[0]; + console.log({ checkOrderResponse: checkOrderResult }); + + const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; - console.log({paymentId: bankPaymentId}); + console.log({ paymentId: bankPaymentId }); return bankPaymentId; - } + }; const guest = await unloginedDeep.guest(); const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); @@ -868,7 +863,7 @@ const removeCustomer = async (options) => { console.log({ sumProviderId }); - const payInsertHandler = /*javascript*/` + const payInsertHandler = /*javascript*/ ` async ({ deep, require, data: { newLink: payLink } }) => { const crypto = require('crypto'); const axios = require('axios'); @@ -1084,7 +1079,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { // return initResult; return {data: "dataString"}; }; -` +`; const { data: [{ id: payInsertHandlerId }], @@ -1480,37 +1475,44 @@ async ( console.log({ product: productId }); const deleteTestLinks = async () => { - const {data: objectLinks} = await deep.select({ - type_id: PObject + const { data: objectLinks } = await deep.select({ + type_id: PObject, }); - const {data: sumLinks} = await deep.select({ - type_id: PSum + const { data: sumLinks } = await deep.select({ + type_id: PSum, }); - const {data: payLinks} = await deep.select({ - type_id: PPay + const { data: payLinks } = await deep.select({ + type_id: PPay, }); - const {data: urlLinks} = await deep.select({ - type_id: PUrl + const { data: urlLinks } = await deep.select({ + type_id: PUrl, }); - const {data: payedLinks} = await deep.select({ - type_id: PPayed + const { data: payedLinks } = await deep.select({ + type_id: PPayed, }); - const {data: errorLinks} = await deep.select({ - type_id: PError + const { data: errorLinks } = await deep.select({ + type_id: PError, }); - const allLinks = [...objectLinks, ...sumLinks, ...payLinks, ...urlLinks, ...payedLinks, ...errorLinks]; + const allLinks = [ + ...objectLinks, + ...sumLinks, + ...payLinks, + ...urlLinks, + ...payedLinks, + ...errorLinks, + ]; for (let i = 0; i < allLinks.length; i++) { - const {id} = allLinks[i]; - await deep.delete({id: id}); + const { id } = allLinks[i]; + await deep.delete({ id: id }); } - console.log("Deleted test links"); - } + console.log('Deleted test links'); + }; const testInit = async () => { console.log('testInit-start'); @@ -1587,12 +1589,13 @@ async ( await sleep(9000); - const {data: {length}} = await deep.select({ + const { + data: { length }, + } = await deep.select({ type_id: PUrl, to_id: payId, }); - expect(length).to.greaterThan(0); console.log('testInit-end'); }; @@ -1634,7 +1637,7 @@ async ( const testCancel = async () => { console.log('testCancel-start'); const testCancelAfterPayBeforeConfirmFullPrice = async () => { - console.log("testCanselAfterPayBeforeConfirmFullPrice-start"); + console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); const initOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, OrderId: uniqid(), @@ -1663,65 +1666,64 @@ async ( // Taxation: 'usn_income', // } }; - - console.log({options: initOptions}); - + + console.log({ options: initOptions }); + let initResult = await sendInit(initOptions); - console.log({initResult}); + console.log({ initResult }); - console.log("before expect"); + console.log('before expect'); expect(initResult.error).to.equal(undefined); - console.log("after expect"); - console.log("before url"); + console.log('after expect'); + console.log('before url'); const url = initResult.response.PaymentURL; - console.log("after url"); + console.log('after url'); - console.log("before page"); + console.log('before page'); const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); - console.log("after page"); - console.log("before payInBrowser"); + console.log('after page'); + console.log('before payInBrowser'); await payInBrowser({ browser, page, url, }); - console.log("after payInBrowser"); + console.log('after payInBrowser'); - console.log("before bankPaymentId"); + console.log('before bankPaymentId'); const bankPaymentId = initResult.response.PaymentId; - console.log("after bankPaymentId"); + console.log('after bankPaymentId'); - console.log("before noTokenCancelData"); + console.log('before noTokenCancelData'); const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, - Amount: PRICE + Amount: PRICE, }; - console.log("after noTokenCancelData"); + console.log('after noTokenCancelData'); - - console.log("before noTokenCancelData"); + console.log('before noTokenCancelData'); const cancelOptions = { ...noTokenCancelData, Token: generateToken(noTokenCancelData), }; - console.log("after noTokenCancelData"); + console.log('after noTokenCancelData'); - console.log({cancelOptions}); + console.log({ cancelOptions }); const cancelResult = await cancel(cancelOptions); - console.log({cancelResponse: cancelResult}); + console.log({ cancelResponse: cancelResult }); expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('REVERSED'); - console.log("testCanselAfterPayBeforeConfirmFullPrice-end"); + console.log('testCanselAfterPayBeforeConfirmFullPrice-end'); }; const testCancelAfterPayBeforeConfirmCustomPriceX2 = async () => { - console.log("testCanselAfterPayBeforeConfirmCustomPriceX2-start"); + console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-start'); const initOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, OrderId: uniqid(), @@ -1750,14 +1752,14 @@ async ( // Taxation: 'usn_income', // } }; - - console.log({options: initOptions}); - + + console.log({ options: initOptions }); + let initResult = await sendInit({ - ...initOptions + ...initOptions, }); - console.log({initResult}); + console.log({ initResult }); expect(initResult.error).to.equal(undefined); @@ -1776,7 +1778,7 @@ async ( const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, - Amount: Math.floor(PRICE / 3) + Amount: Math.floor(PRICE / 3), }; const cancelOptions = { @@ -1784,12 +1786,12 @@ async ( Token: generateToken(noTokenCancelData), }; - console.log({cancelOptions}); - + console.log({ cancelOptions }); + { const cancelResult = await cancel(cancelOptions); - console.log({cancelResponse: cancelResult}); + console.log({ cancelResponse: cancelResult }); expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); @@ -1797,28 +1799,32 @@ async ( { const cancelResult = await cancel(cancelOptions); - console.log({cancelResponse: cancelResult}); + console.log({ cancelResponse: cancelResult }); expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); } - console.log("testCanselAfterPayBeforeConfirmCustomPriceX2-end"); + console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-end'); }; const testCancelAfterPayAfterConfirmFullPrice = async () => { - console.log("testCancelAfterPayAfterConfirmFullPrice-start"); + console.log('testCancelAfterPayAfterConfirmFullPrice-start'); await testConfirm(); - const {data: [payLink]} = await deep.select({ - type_id: PPay + const { + data: [payLink], + } = await deep.select({ + type_id: PPay, }); - const bankPaymentId = await getBankPaymentId(payLink?.value?.value ?? payLink.id); + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, - Amount: PRICE + Amount: PRICE, }; const options = { @@ -1832,23 +1838,27 @@ async ( expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('REFUNDED'); - console.log("testCancelAfterPayAfterConfirmFullPrice-end"); + console.log('testCancelAfterPayAfterConfirmFullPrice-end'); }; const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { - console.log("testCancelAfterPayAfterConfirmCustomPriceX2-start"); + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); await testConfirm(); - const {data: [payLink]} = await deep.select({ - type_id: PPay + const { + data: [payLink], + } = await deep.select({ + type_id: PPay, }); - const bankPaymentId = await getBankPaymentId(payLink?.value?.value ?? payLink.id); + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, - Amount: Math.floor(PRICE / 3) + Amount: Math.floor(PRICE / 3), }; const options = { @@ -1870,23 +1880,27 @@ async ( expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); } - console.log("testCancelAfterPayAfterConfirmCustomPriceX2-end"); + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); }; const testCancelBeforePay = async () => { - console.log("testCancelBeforePay-start"); + console.log('testCancelBeforePay-start'); await testInit(); - const {data: [payLink]} = await deep.select({ - type_id: PPay + const { + data: [payLink], + } = await deep.select({ + type_id: PPay, }); - const bankPaymentId = await getBankPaymentId(payLink?.value?.value ?? payLink.id); + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, - Amount: PRICE + Amount: PRICE, }; const options = { @@ -1900,20 +1914,19 @@ async ( expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('CANCELED'); - console.log("testCancelBeforePay-end"); + console.log('testCancelBeforePay-end'); }; await testCancelAfterPayBeforeConfirmFullPrice(); - await deleteTestLinks(); - await testCancelAfterPayBeforeConfirmCustomPriceX2(); - await deleteTestLinks(); - await testCancelAfterPayAfterConfirmFullPrice(); - await deleteTestLinks(); - await testCancelAfterPayAfterConfirmCustomPriceX2(); - await deleteTestLinks(); + await deleteTestLinks(); + await testCancelAfterPayBeforeConfirmCustomPriceX2(); + await deleteTestLinks(); + await testCancelAfterPayAfterConfirmFullPrice(); + await deleteTestLinks(); + await testCancelAfterPayAfterConfirmCustomPriceX2(); + await deleteTestLinks(); await testCancelBeforePay(); await deleteTestLinks(); - console.log('testCancel-end'); }; @@ -1921,10 +1934,13 @@ async ( console.log('testGetState-start'); await testFinishAuthorize(); - const {data: [payLink]} = await deep.select({ type_id: PPay }); - + const { + data: [payLink], + } = await deep.select({ type_id: PPay }); - const bankPaymentId = await getBankPaymentId(payLink?.value?.value ?? payLink.id); + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); const noTokenGetStateData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1967,191 +1983,189 @@ async ( }; const testResend = async () => { - console.log("testResend-start"); + console.log('testResend-start'); const noTokenResendOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - }; + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + }; - const resendOptions = { - ...noTokenResendOptions, - Token: generateToken(noTokenResendOptions), - }; + const resendOptions = { + ...noTokenResendOptions, + Token: generateToken(noTokenResendOptions), + }; - console.log({resendOptions}); + console.log({ resendOptions }); - const resendResult = await resend(resendOptions); - console.log({resendResult}); + const resendResult = await resend(resendOptions); + console.log({ resendResult }); - expect(resendResult.error).to.equal(undefined); - console.log("testResend-end"); - } + expect(resendResult.error).to.equal(undefined); + console.log('testResend-end'); + }; const testCharge = async () => { - console.log("testCharge-start"); + console.log('testCharge-start'); const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initResult = await sendInit({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: 5500, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Recurrent: 'Y', - }); + const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); + const initResult = await sendInit({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: 5500, + OrderId: uniqid(), + CustomerKey: deep.linkId, + Recurrent: 'Y', + }); - const noTokenGetCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); - const getCardListOptions = { - ...noTokenGetCardListOptions, - Token: generateToken(noTokenGetCardListOptions), - }; + const noTokenGetCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; + + const getCardListOptions = { + ...noTokenGetCardListOptions, + Token: generateToken(noTokenGetCardListOptions), + }; - const getCardListResult = await getCardList(getCardListOptions); + const getCardListResult = await getCardList(getCardListOptions); - expect(getCardListResult.response[0].RebillId).to.have.length.above(0); + expect(getCardListResult.response[0].RebillId).to.have.length.above(0); - const noTokenGetStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; + const noTokenGetStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; - const getStateOptions = { - ...noTokenGetStateOptions, - Token: generateToken(noTokenGetStateOptions), - }; + const getStateOptions = { + ...noTokenGetStateOptions, + Token: generateToken(noTokenGetStateOptions), + }; - const getStateResult = await getState(getStateOptions); + const getStateResult = await getState(getStateOptions); - expect(getStateResult.response.Status).to.equal('AUTHORIZED'); + expect(getStateResult.response.Status).to.equal('AUTHORIZED'); - const newInitResult = await sendInit({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: 5500, - OrderId: uniqid(), - CustomerKey: deep.linkId, - }); + const newInitResult = await sendInit({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: 5500, + OrderId: uniqid(), + CustomerKey: deep.linkId, + }); - const newChargeData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: newInitResult.response.PaymentId, - RebillId: Number(getCardListResult.response[0].RebillId), - }; + const newChargeData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: newInitResult.response.PaymentId, + RebillId: Number(getCardListResult.response[0].RebillId), + }; - const options = { - ...newChargeData, - Token: generateToken(newChargeData), - }; + const options = { + ...newChargeData, + Token: generateToken(newChargeData), + }; - const chargeResult = await charge(options); + const chargeResult = await charge(options); - expect(chargeResult.error).to.equal(undefined); - console.log("testCharge-end"); - } + expect(chargeResult.error).to.equal(undefined); + console.log('testCharge-end'); + }; const testAddCustomer = async () => { - console.log("testAddCustomer-start"); + console.log('testAddCustomer-start'); const customerKey = uniqid(); - const noTokenAddCustomerOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: customerKey, - }; + const noTokenAddCustomerOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: customerKey, + }; - const addCustomerOptions = { - ...noTokenAddCustomerOptions, - Token: generateToken(noTokenAddCustomerOptions), - }; + const addCustomerOptions = { + ...noTokenAddCustomerOptions, + Token: generateToken(noTokenAddCustomerOptions), + }; - const addCustomerResult = await addCustomer(addCustomerOptions); + const addCustomerResult = await addCustomer(addCustomerOptions); - expect(addCustomerResult.error).to.equal(undefined); - console.log("testAddCustomer-end"); + expect(addCustomerResult.error).to.equal(undefined); + console.log('testAddCustomer-end'); }; const testGetCustomer = async () => { - console.log("testGetCustomer-start"); - - const customerKey = uniqid(); + console.log('testGetCustomer-start'); - const noTokenAddCustomerData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: customerKey, - }; + const customerKey = uniqid(); - const newAddCustomerData = { - ...noTokenAddCustomerData, - Phone: process.env.PAYMENT_TEST_PHONE, - }; + const noTokenAddCustomerData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: customerKey, + }; - const addCustomerDataOptions = { - ...newAddCustomerData, - Token: generateToken(newAddCustomerData), - }; + const newAddCustomerData = { + ...noTokenAddCustomerData, + Phone: process.env.PAYMENT_TEST_PHONE, + }; - const addResult = await addCustomer(addCustomerDataOptions); + const addCustomerDataOptions = { + ...newAddCustomerData, + Token: generateToken(newAddCustomerData), + }; - expect(addResult.error).to.equal(undefined); + const addResult = await addCustomer(addCustomerDataOptions); - const getCustomerDataOptions = { - ...noTokenAddCustomerData, - Token: generateToken(noTokenAddCustomerData), - }; + expect(addResult.error).to.equal(undefined); - const getResult = await getCustomer(getCustomerDataOptions); + const getCustomerDataOptions = { + ...noTokenAddCustomerData, + Token: generateToken(noTokenAddCustomerData), + }; - expect(getResult.error).to.equal(undefined); - expect(getResult.response.Phone).to.equal(process.env.PAYMENT_TEST_PHONE); + const getResult = await getCustomer(getCustomerDataOptions); + expect(getResult.error).to.equal(undefined); + expect(getResult.response.Phone).to.equal(process.env.PAYMENT_TEST_PHONE); - console.log("testGetCustomer-end"); + console.log('testGetCustomer-end'); }; const testRemoveCustomer = async () => { - console.log("removeCustomer-start"); + console.log('removeCustomer-start'); const customerKey = uniqid(); - const noTokenRemoveCustomerData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: customerKey, - }; - - const newAddCustomerData = { - ...noTokenRemoveCustomerData, - Phone: process.env.PAYMENT_TEST_PHONE, - }; + const noTokenRemoveCustomerData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: customerKey, + }; - const addCustomerDataOptions = { - ...newAddCustomerData, - Token: generateToken(newAddCustomerData), - }; + const newAddCustomerData = { + ...noTokenRemoveCustomerData, + Phone: process.env.PAYMENT_TEST_PHONE, + }; - const addResult = await addCustomer(addCustomerDataOptions); + const addCustomerDataOptions = { + ...newAddCustomerData, + Token: generateToken(newAddCustomerData), + }; - expect(addResult.error).to.equal(undefined); + const addResult = await addCustomer(addCustomerDataOptions); - const removeCustomerDataOptions = { - ...noTokenRemoveCustomerData, - Token: generateToken(noTokenRemoveCustomerData), - }; + expect(addResult.error).to.equal(undefined); - const removeResult = await removeCustomer(removeCustomerDataOptions); + const removeCustomerDataOptions = { + ...noTokenRemoveCustomerData, + Token: generateToken(noTokenRemoveCustomerData), + }; - expect(removeResult.error).to.equal(undefined); + const removeResult = await removeCustomer(removeCustomerDataOptions); + expect(removeResult.error).to.equal(undefined); - console.log("removeCustomer-end"); - } + console.log('removeCustomer-end'); + }; await testInit(); await deleteTestLinks(); @@ -2175,9 +2189,7 @@ async ( await deleteTestLinks(); }; - - await callTests(); - + await callTests(); }; f(); From 03db35762fc948fdc597bc8bfb041e051e0d87a9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 13:16:36 +0600 Subject: [PATCH 216/683] Add console log to notification handler --- payments-eacq.cjs | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index e53e6452..0276157d 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1250,6 +1250,8 @@ async ( }; } }; + const reqBody = req.body; + console.log({reqBody}); const status = req.body.Status; console.log({status}); if (status == 'AUTHORIZED') { @@ -2132,7 +2134,7 @@ async ( }; const testRemoveCustomer = async () => { - console.log('removeCustomer-start'); + console.log('testRemoveCustomer-start'); const customerKey = uniqid(); @@ -2164,29 +2166,29 @@ async ( expect(removeResult.error).to.equal(undefined); - console.log('removeCustomer-end'); + console.log('testRemoveCustomer-end'); }; - await testInit(); - await deleteTestLinks(); + // await testInit(); + // await deleteTestLinks(); await testConfirm(); await deleteTestLinks(); - await testCancel(); - await deleteTestLinks(); - await testGetState(); - await deleteTestLinks(); - await testGetCardList(); - await deleteTestLinks(); - await testResend(); - await deleteTestLinks(); - await testCharge(); - await deleteTestLinks(); - await testAddCustomer(); - await deleteTestLinks(); - await testGetCustomer(); - await deleteTestLinks(); - await testRemoveCustomer(); - await deleteTestLinks(); + // await testCancel(); + // await deleteTestLinks(); + // await testGetState(); + // await deleteTestLinks(); + // await testGetCardList(); + // await deleteTestLinks(); + // await testResend(); + // await deleteTestLinks(); + // await testCharge(); + // await deleteTestLinks(); + // await testAddCustomer(); + // await deleteTestLinks(); + // await testGetCustomer(); + // await deleteTestLinks(); + // await testRemoveCustomer(); + // await deleteTestLinks(); }; await callTests(); From be577e3cedae8e1ce65c893576d4336c0bd3b8b4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 14:09:33 +0600 Subject: [PATCH 217/683] Call all tests --- payments-eacq.cjs | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 0276157d..0fc4b201 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2169,26 +2169,26 @@ async ( console.log('testRemoveCustomer-end'); }; - // await testInit(); - // await deleteTestLinks(); + await testInit(); + await deleteTestLinks(); await testConfirm(); await deleteTestLinks(); - // await testCancel(); - // await deleteTestLinks(); - // await testGetState(); - // await deleteTestLinks(); - // await testGetCardList(); - // await deleteTestLinks(); - // await testResend(); - // await deleteTestLinks(); - // await testCharge(); - // await deleteTestLinks(); - // await testAddCustomer(); - // await deleteTestLinks(); - // await testGetCustomer(); - // await deleteTestLinks(); - // await testRemoveCustomer(); - // await deleteTestLinks(); + await testCancel(); + await deleteTestLinks(); + await testGetState(); + await deleteTestLinks(); + await testGetCardList(); + await deleteTestLinks(); + await testResend(); + await deleteTestLinks(); + await testCharge(); + await deleteTestLinks(); + await testAddCustomer(); + await deleteTestLinks(); + await testGetCustomer(); + await deleteTestLinks(); + await testRemoveCustomer(); + await deleteTestLinks(); }; await callTests(); From 6c0db039ef363da5aa72e0396e03fb92d28a32cb Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 20 Aug 2022 14:24:54 +0600 Subject: [PATCH 218/683] Add console logs --- payments-eacq.cjs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 0fc4b201..79dcb0c1 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1269,6 +1269,10 @@ async ( const confirmResult = await confirm(confirmOptions); console.log({confirmResult}); } else if (status == 'CONFIRMED') { + const {data: payWithSpecificValueAndFromIdQueryData} = await deep.select({value: req.body.OrderId, type_id: ${PPay}, from_id: req.body.CustomerKey}); + console.log({payWithSpecificValueAndFromIdQueryData}); + const {data: payQueryData} = await deep.select({value: req.body.OrderId, type_id: ${PPay}, from_id: req.body.CustomerKey}); + console.log({payQueryData}); const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: ${PPay}, from_id: req.body.CustomerKey}); const payedInsertData = await deep.insert({ type_id: ${PPayed}, From 714f91386fd9c47d008cc392f7f240fe91273ea2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 21 Aug 2022 09:45:31 +0000 Subject: [PATCH 219/683] Add cancelledInsertHandler --- payments-eacq.cjs | 246 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 225 insertions(+), 21 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 79dcb0c1..9b3c88bb 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -800,6 +800,24 @@ const f = async () => { console.log({ PError: PError }); + // TODO: Use BaseCancelled + const { + data: [{ id: PCancelled }], + } = await deep.insert({ + type_id: Type, + from_id: PTinkoffProvider, + to_id: PPay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Cancelled' } }, + }, + }, + }); + + console.log({ PCancelled }); + const { data: [{ id: paymentTreeId }], } = await deep.insert({ @@ -1129,6 +1147,204 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({ payInsertHandlerId }); + const cancelledInsertHandler = /*javascript*/ ` +async ({ deep, require, data: { newLink: cancelledLink } }) => { + const crypto = require('crypto'); + const axios = require('axios'); + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + const getUrl = (method) => + "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; + const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => acc.toString() + item.toString(), ''); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + return hash; + }; + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + ...restData, + Password: "${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}", + }; + return _generateToken(dataWithPassword); + }; + const cancel = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Cancel'), + data: options, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getPayLink = async (cancelledLink) => { + const toLink = await deep.select({ + id: cancelledLink.to_id + }); + if(toLink.type_id === ${PPAy}) { + return toLink; + } + if (toLink.type_id === ${PPayed}) { + return await deep.select({ + id: toLink.to_id + }); + } + } + + const toLink = await deep.select({ + id: cancelledLink.to_id + }); + + const bankPaymentId = (await getPayLink(cancelledLink)).value.value.bankPaymentId; + + const noTokenCancelOptions = { + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + PaymentId: bankPaymentId, + Amount: cancelledLink.value.value + } + + const cancelOptions = { + ...noTokenCancelOptions, + Token: generateToken(noTokenCancelOptions) + } + + const cancelResult = await cancel(cancelOptions); + + if(cancelResult.error) { + await deep.insert({ + type_id: ${PError}, + from_id: ${tinkoffProviderId}, + to_id: cancelledLink.id, + string: { data: {value: cancelResult.error } } + }); + } + + return cancelResult; +}; +`; + + const { + data: [{ id: cancelledInsertHandlerId }], + } = await deep.insert({ + type_id: SyncTextFile, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'cancelledInsertHandlerFile' } }, + }, + { + from_id: dockerSupportsJs, + type_id: Handler, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'cancelledInsertHandler' } }, + }, + { + type_id: HandleInsert, + from_id: PPay, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'cancelledInsertHandle' } }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + string: { + data: { + value: cancelledInsertHandler, + }, + }, + }); + + console.log({ cancelledInsertHandlerId }); + const tinkoffNotificationHandler = /*javascript*/ ` async ( req, @@ -1287,27 +1503,8 @@ async ( ], }, }); - console.log({payedInsertData}) - } else if (status == 'CANCELED') { - const errorInsertData = await deep.insert({ - type_id: ${PError}, - from_id: ${tinkoffProviderId}, - to_id: payId, - in: { - data: [ - { - type_id: ${Contain}, - from_id: ${deep.linkId}, - string: { data: { value: getError(req.body.ErrorCode) } }, - }, - ], - }, - }); - - console.log({errorInsertData}); - const errorMessage = getError(req.body.ErrorCode); - console.log({errorMessage}); - } + console.log({payedInsertData}); + } res.send('ok'); }; `; @@ -1438,6 +1635,7 @@ async ( const PUrl = await deep.id(packageName, 'Url'); const PPayed = await deep.id(packageName, 'Payed'); const PError = await deep.id(packageName, 'Error'); + const PCancelled = await deep.id(packageName, 'Cancelled'); const paymentTreeId = await deep.id(packageName, 'paymentTree'); @@ -1505,6 +1703,11 @@ async ( type_id: PError, }); + + const { data: cancelledLinks } = await deep.select({ + type_id: PCancelled, + }); + const allLinks = [ ...objectLinks, ...sumLinks, @@ -1512,6 +1715,7 @@ async ( ...urlLinks, ...payedLinks, ...errorLinks, + ...cancelledLinks ]; for (let i = 0; i < allLinks.length; i++) { const { id } = allLinks[i]; From d7c882889f31f95235a3eea45bbf1ed605a79960 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 21 Aug 2022 09:46:07 +0000 Subject: [PATCH 220/683] Fix typo --- payments-eacq.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 9b3c88bb..705e05e8 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1108,7 +1108,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { { type_id: Contain, from_id: packageId, // before created package - string: { data: { value: 'joinInsertHandlerFile' } }, + string: { data: { value: 'payInsertHandlerFile' } }, }, { from_id: dockerSupportsJs, @@ -1118,7 +1118,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { { type_id: Contain, from_id: packageId, // before created package - string: { data: { value: 'joinInsertHandler' } }, + string: { data: { value: 'payInsertHandler' } }, }, { type_id: HandleInsert, @@ -1128,7 +1128,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { { type_id: Contain, from_id: packageId, // before created package - string: { data: { value: 'joinInsertHandle' } }, + string: { data: { value: 'payInsertHandle' } }, }, ], }, From 4e1c4debe4f442bc0c3548c4bc346842d1d360fa Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 21 Aug 2022 09:47:11 +0000 Subject: [PATCH 221/683] Remove redundant console logs --- payments-eacq.cjs | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 705e05e8..a28558fb 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1883,43 +1883,31 @@ async ( console.log({ initResult }); - console.log('before expect'); expect(initResult.error).to.equal(undefined); - console.log('after expect'); - console.log('before url'); + const url = initResult.response.PaymentURL; - console.log('after url'); - console.log('before page'); const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); - console.log('after page'); - console.log('before payInBrowser'); + await payInBrowser({ browser, page, url, }); - console.log('after payInBrowser'); - console.log('before bankPaymentId'); const bankPaymentId = initResult.response.PaymentId; - console.log('after bankPaymentId'); - console.log('before noTokenCancelData'); const noTokenCancelData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: PRICE, }; - console.log('after noTokenCancelData'); - console.log('before noTokenCancelData'); const cancelOptions = { ...noTokenCancelData, Token: generateToken(noTokenCancelData), }; - console.log('after noTokenCancelData'); console.log({ cancelOptions }); From 7c2a2959ad0828348532a3a8c5665276b5f0b360 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 21 Aug 2022 10:10:08 +0000 Subject: [PATCH 222/683] Add testCancel variations, get url from Url link --- payments-eacq.cjs | 289 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 287 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index a28558fb..f3d0d3de 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1844,7 +1844,7 @@ async ( console.log('testConfirm-end'); }; - const testCancel = async () => { + const testCancelRealization = async () => { console.log('testCancel-start'); const testCancelAfterPayBeforeConfirmFullPrice = async () => { console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); @@ -2127,6 +2127,291 @@ async ( console.log('testCancel-end'); }; + const testCancelIntegration = async () => { + console.log('testCancelIntegration-start'); + const testCancelAfterPayBeforeConfirmFullPrice = async () => { + console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + Amount: PRICE, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // } + }; + + console.log({ options: initOptions }); + + let initResult = await sendInit(initOptions); + + console.log({ initResult }); + + expect(initResult.error).to.equal(undefined); + + const {data: [{value: {value: url}}]} = await deep.select({ + type_id: PUrl, + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + await payInBrowser({ + browser, + page, + url, + }); + + const bankPaymentId = initResult.response.PaymentId; + + const noTokenCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; + + const cancelOptions = { + ...noTokenCancelData, + Token: generateToken(noTokenCancelData), + }; + + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + + console.log({ cancelResponse: cancelResult }); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('REVERSED'); + console.log('testCanselAfterPayBeforeConfirmFullPrice-end'); + }; + + const testCancelAfterPayBeforeConfirmCustomPriceX2 = async () => { + console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-start'); + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + Amount: PRICE, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // } + }; + + console.log({ options: initOptions }); + + let initResult = await sendInit({ + ...initOptions, + }); + + console.log({ initResult }); + + expect(initResult.error).to.equal(undefined); + + const url = initResult.response.PaymentURL; + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); + + const bankPaymentId = initResult.response.PaymentId; + + const noTokenCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: Math.floor(PRICE / 3), + }; + + const cancelOptions = { + ...noTokenCancelData, + Token: generateToken(noTokenCancelData), + }; + + console.log({ cancelOptions }); + + { + const cancelResult = await cancel(cancelOptions); + + console.log({ cancelResponse: cancelResult }); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); + } + { + const cancelResult = await cancel(cancelOptions); + + console.log({ cancelResponse: cancelResult }); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); + } + console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-end'); + }; + + const testCancelAfterPayAfterConfirmFullPrice = async () => { + console.log('testCancelAfterPayAfterConfirmFullPrice-start'); + await testConfirm(); + + const { + data: [payLink], + } = await deep.select({ + type_id: PPay, + }); + + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); + + const noTokenCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; + + const options = { + ...noTokenCancelData, + Token: generateToken(noTokenCancelData), + }; + + console.log({ options }); + + const cancelResult = await cancel(options); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('REFUNDED'); + console.log('testCancelAfterPayAfterConfirmFullPrice-end'); + }; + + const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); + await testConfirm(); + + const { + data: [payLink], + } = await deep.select({ + type_id: PPay, + }); + + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); + + const noTokenCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: Math.floor(PRICE / 3), + }; + + const options = { + ...noTokenCancelData, + Token: generateToken(noTokenCancelData), + }; + + console.log({ options }); + + { + const cancelResult = await cancel(options); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); + } + { + const cancelResult = await cancel(options); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); + } + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); + }; + + const testCancelBeforePay = async () => { + console.log('testCancelBeforePay-start'); + await testInit(); + + const { + data: [payLink], + } = await deep.select({ + type_id: PPay, + }); + + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); + + const noTokenCancelData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; + + const options = { + ...noTokenCancelData, + Token: generateToken(noTokenCancelData), + }; + + console.log({ options }); + + const cancelResult = await cancel(options); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('CANCELED'); + console.log('testCancelBeforePay-end'); + }; + await testCancelAfterPayBeforeConfirmFullPrice(); + await deleteTestLinks(); + await testCancelAfterPayBeforeConfirmCustomPriceX2(); + await deleteTestLinks(); + await testCancelAfterPayAfterConfirmFullPrice(); + await deleteTestLinks(); + await testCancelAfterPayAfterConfirmCustomPriceX2(); + await deleteTestLinks(); + await testCancelBeforePay(); + await deleteTestLinks(); + + console.log('testCancelIntegration-end'); + }; const testGetState = async () => { console.log('testGetState-start'); @@ -2369,7 +2654,7 @@ async ( await deleteTestLinks(); await testConfirm(); await deleteTestLinks(); - await testCancel(); + await testCancelRealization(); await deleteTestLinks(); await testGetState(); await deleteTestLinks(); From 917df722a401440867557f77c8f52df9814cb35e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 21 Aug 2022 10:10:51 +0000 Subject: [PATCH 223/683] Get url from link --- payments-eacq.cjs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f3d0d3de..72a4057a 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1885,7 +1885,9 @@ async ( expect(initResult.error).to.equal(undefined); - const url = initResult.response.PaymentURL; + const {data: [{value: {value: url}}]} = await deep.select({ + type_id: PUrl, + }); const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); From 4f6fb7292c349398f9391f75d6edad7f3f84c975 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 21 Aug 2022 10:11:38 +0000 Subject: [PATCH 224/683] Call testCancelIntegration --- payments-eacq.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 72a4057a..83d2ada4 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2658,6 +2658,8 @@ async ( await deleteTestLinks(); await testCancelRealization(); await deleteTestLinks(); + await testCancelIntegration(); + await deleteTestLinks(); await testGetState(); await deleteTestLinks(); await testGetCardList(); From 6c6e44d5e26c0f29ec2e24511eafaf8335f8f4d4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 21 Aug 2022 10:26:40 +0000 Subject: [PATCH 225/683] Update payLink value to add bankPaymentId to it --- payments-eacq.cjs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 83d2ada4..d56c6fec 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1073,7 +1073,8 @@ async ({ deep, require, data: { newLink: payLink } }) => { }, }); console.log({ error }); - } else { + } + console.log('Payment URL:', initResult.response.PaymentURL); const { data: [{ id: urlId }], @@ -1092,10 +1093,10 @@ async ({ deep, require, data: { newLink: payLink } }) => { }, }); console.log({ urlId }); - } - // return initResult; - return {data: "dataString"}; + await deep.update(payLink.id, {value: {...payLink.value.value, bankPaymentId: initResult.response.PaymentId}}) + + return initResult; }; `; From b866504176f3cc86ec8000c0afa77e3cf541a211 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 21 Aug 2022 10:27:00 +0000 Subject: [PATCH 226/683] Update redundant tests --- payments-eacq.cjs | 161 ---------------------------------------------- 1 file changed, 161 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index d56c6fec..74fb9858 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2132,167 +2132,6 @@ async ( }; const testCancelIntegration = async () => { console.log('testCancelIntegration-start'); - const testCancelAfterPayBeforeConfirmFullPrice = async () => { - console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - Amount: PRICE, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: sum, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // } - }; - - console.log({ options: initOptions }); - - let initResult = await sendInit(initOptions); - - console.log({ initResult }); - - expect(initResult.error).to.equal(undefined); - - const {data: [{value: {value: url}}]} = await deep.select({ - type_id: PUrl, - }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - await payInBrowser({ - browser, - page, - url, - }); - - const bankPaymentId = initResult.response.PaymentId; - - const noTokenCancelData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, - }; - - const cancelOptions = { - ...noTokenCancelData, - Token: generateToken(noTokenCancelData), - }; - - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - - console.log({ cancelResponse: cancelResult }); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('REVERSED'); - console.log('testCanselAfterPayBeforeConfirmFullPrice-end'); - }; - - const testCancelAfterPayBeforeConfirmCustomPriceX2 = async () => { - console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-start'); - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - Amount: PRICE, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: sum, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // } - }; - - console.log({ options: initOptions }); - - let initResult = await sendInit({ - ...initOptions, - }); - - console.log({ initResult }); - - expect(initResult.error).to.equal(undefined); - - const url = initResult.response.PaymentURL; - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, - }); - - const bankPaymentId = initResult.response.PaymentId; - - const noTokenCancelData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: Math.floor(PRICE / 3), - }; - - const cancelOptions = { - ...noTokenCancelData, - Token: generateToken(noTokenCancelData), - }; - - console.log({ cancelOptions }); - - { - const cancelResult = await cancel(cancelOptions); - - console.log({ cancelResponse: cancelResult }); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); - } - { - const cancelResult = await cancel(cancelOptions); - - console.log({ cancelResponse: cancelResult }); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); - } - console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-end'); - }; - const testCancelAfterPayAfterConfirmFullPrice = async () => { console.log('testCancelAfterPayAfterConfirmFullPrice-start'); await testConfirm(); From fbf7b8718aeafaf9d47aa6a795569c392736a81b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 21 Aug 2022 10:37:30 +0000 Subject: [PATCH 227/683] Update test cancel after confirm full price and custom price x3 --- payments-eacq.cjs | 117 ++++++++++++++++++++++------------------------ 1 file changed, 55 insertions(+), 62 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 74fb9858..430e8ae7 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1075,24 +1075,24 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({ error }); } - console.log('Payment URL:', initResult.response.PaymentURL); - const { - data: [{ id: urlId }], - } = await deep.insert({ - type_id: ${PUrl}, - from_id: ${tinkoffProviderId}, - to_id: payLink.id, - string: { data: { value: initResult.response.PaymentURL } }, - in: { - data: [ - { - type_id: ${Contain}, - from_id: ${deep.linkId}, - }, - ], - }, - }); - console.log({ urlId }); + console.log('Payment URL:', initResult.response.PaymentURL); + const { + data: [{ id: urlId }], + } = await deep.insert({ + type_id: ${PUrl}, + from_id: ${tinkoffProviderId}, + to_id: payLink.id, + string: { data: { value: initResult.response.PaymentURL } }, + in: { + data: [ + { + type_id: ${Contain}, + from_id: ${deep.linkId}, + }, + ], + }, + }); + console.log({ urlId }); await deep.update(payLink.id, {value: {...payLink.value.value, bankPaymentId: initResult.response.PaymentId}}) @@ -2142,27 +2142,26 @@ async ( type_id: PPay, }); - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); - - const noTokenCancelData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, - }; + const {data: [payedLink]} = await deep.select({ + type_id: PPayed, + to_id: payLink.id + }); - const options = { - ...noTokenCancelData, - Token: generateToken(noTokenCancelData), - }; + const {data: [cancelledLink]} = await deep.insert({ + type_id: PCancelled, + from_id: tinkoffProviderId, + to_id: payedLink.id, + number: {data: {value: PRICE}} + }); - console.log({ options }); + await sleep(5000); - const cancelResult = await cancel(options); + const {data: cancelledErrors} = await deep.select({ + type_id: PError, + to_id: cancelledLink.id + }); - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('REFUNDED'); + expect(cancelledErrors.length).to.equal(0); console.log('testCancelAfterPayAfterConfirmFullPrice-end'); }; @@ -2176,35 +2175,29 @@ async ( type_id: PPay, }); - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); - - const noTokenCancelData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: Math.floor(PRICE / 3), - }; - - const options = { - ...noTokenCancelData, - Token: generateToken(noTokenCancelData), - }; - - console.log({ options }); - - { - const cancelResult = await cancel(options); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); - } - { - const cancelResult = await cancel(options); + const {data: [payedLink]} = await deep.select({ + type_id: PPayed, + to_id: payLink.id + }); - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); + for (let i = 0; i < 2; i++) { + const {data: [cancelledLink]} = await deep.insert({ + type_id: PCancelled, + from_id: tinkoffProviderId, + to_id: payedLink.id, + number: {data: {value: PRICE / 3}} + }); + + await sleep(5000); + + const {data: cancelledErrors} = await deep.select({ + type_id: PError, + to_id: cancelledLink.id + }); + + expect(cancelledErrors.length).to.equal(0); } + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); }; From f21d7b00ae92ccb685a44871ad6c49be6b360877 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 21 Aug 2022 10:44:44 +0000 Subject: [PATCH 228/683] Update testCancelBeforePay --- payments-eacq.cjs | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 430e8ae7..94e1a26c 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2211,27 +2211,21 @@ async ( type_id: PPay, }); - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); - - const noTokenCancelData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, - }; - - const options = { - ...noTokenCancelData, - Token: generateToken(noTokenCancelData), - }; + const {data: [cancelledLink]} = await deep.insert({ + type_id: PCancelled, + from_id: tinkoffProviderId, + to_id: payLink.id, + number: {data: {value: PRICE}} + }); - console.log({ options }); + await sleep(5000); - const cancelResult = await cancel(options); + const {data: cancelledErrors} = await deep.select({ + type_id: PError, + to_id: cancelledLink.id + }); - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('CANCELED'); + expect(cancelledErrors.length).to.equal(0); console.log('testCancelBeforePay-end'); }; await testCancelAfterPayBeforeConfirmFullPrice(); From e7fcce5d085829524cc282b4350a3840f5725f5f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 21 Aug 2022 10:45:47 +0000 Subject: [PATCH 229/683] Remove removed functions calls --- payments-eacq.cjs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 94e1a26c..2be889b9 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2228,10 +2228,6 @@ async ( expect(cancelledErrors.length).to.equal(0); console.log('testCancelBeforePay-end'); }; - await testCancelAfterPayBeforeConfirmFullPrice(); - await deleteTestLinks(); - await testCancelAfterPayBeforeConfirmCustomPriceX2(); - await deleteTestLinks(); await testCancelAfterPayAfterConfirmFullPrice(); await deleteTestLinks(); await testCancelAfterPayAfterConfirmCustomPriceX2(); From ef5ebaf38f54ecbe7a6d249a5a2c81fe22648fbc Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 21 Aug 2022 11:45:32 +0000 Subject: [PATCH 230/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 2be889b9..0e41bee2 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1256,7 +1256,7 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { const toLink = await deep.select({ id: cancelledLink.to_id }); - if(toLink.type_id === ${PPAy}) { + if(toLink.type_id === ${PPay}) { return toLink; } if (toLink.type_id === ${PPayed}) { From 73e0e4b3147bad072b8cb4f491127719093474a2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 21 Aug 2022 11:51:57 +0000 Subject: [PATCH 231/683] Update tests --- payments-eacq.cjs | 37 ++----------------------------------- 1 file changed, 2 insertions(+), 35 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 0e41bee2..b7048b0a 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1849,42 +1849,9 @@ async ( console.log('testCancel-start'); const testCancelAfterPayBeforeConfirmFullPrice = async () => { console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - Amount: PRICE, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: sum, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // } - }; - - console.log({ options: initOptions }); + await testFinishAuthorize(); - let initResult = await sendInit(initOptions); - - console.log({ initResult }); - - expect(initResult.error).to.equal(undefined); + await sleep(4000); const {data: [{value: {value: url}}]} = await deep.select({ type_id: PUrl, From ca2da055d4bae91bea32d378eb877795c692b53c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 21 Aug 2022 12:02:02 +0000 Subject: [PATCH 232/683] Revert "Update tests" This reverts commit 73e0e4b3147bad072b8cb4f491127719093474a2. --- payments-eacq.cjs | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index b7048b0a..0e41bee2 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1849,9 +1849,42 @@ async ( console.log('testCancel-start'); const testCancelAfterPayBeforeConfirmFullPrice = async () => { console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); - await testFinishAuthorize(); + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + Amount: PRICE, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // } + }; + + console.log({ options: initOptions }); - await sleep(4000); + let initResult = await sendInit(initOptions); + + console.log({ initResult }); + + expect(initResult.error).to.equal(undefined); const {data: [{value: {value: url}}]} = await deep.select({ type_id: PUrl, From e86e23350a43642b0e373bb1034d1e5047b6403a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 21 Aug 2022 12:03:50 +0000 Subject: [PATCH 233/683] Get url from init result in realization --- payments-eacq.cjs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 0e41bee2..325270e0 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1886,9 +1886,7 @@ async ( expect(initResult.error).to.equal(undefined); - const {data: [{value: {value: url}}]} = await deep.select({ - type_id: PUrl, - }); + const url = initResult.response.PaymentURL; const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); From fd2f4344207346f2b06226b6b4fc457cb4521dd9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 21 Aug 2022 12:10:29 +0000 Subject: [PATCH 234/683] Change PCancelled to_id restriction --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 325270e0..187a3caa 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -806,7 +806,7 @@ const f = async () => { } = await deep.insert({ type_id: Type, from_id: PTinkoffProvider, - to_id: PPay, + to_id: Any, in: { data: { type_id: Contain, From 670c7b356e48ce3d656dc872734f15f1721d7cd0 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 21 Aug 2022 12:16:41 +0000 Subject: [PATCH 235/683] Floor number --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 187a3caa..20824142 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2183,7 +2183,7 @@ async ( type_id: PCancelled, from_id: tinkoffProviderId, to_id: payedLink.id, - number: {data: {value: PRICE / 3}} + number: {data: {value: Math.floor(PRICE / 3)}} }); await sleep(5000); From 67b5572347d5cf4057a5f20623304af9c42cdf11 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 04:39:34 +0000 Subject: [PATCH 236/683] Do not destructure if it is not required --- payments-eacq.cjs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 20824142..588fd032 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1048,9 +1048,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({options}); - let initResult = await sendInit({ - ...options - }); + let initResult = await sendInit(options); console.log({initResult}); @@ -1954,9 +1952,7 @@ async ( console.log({ options: initOptions }); - let initResult = await sendInit({ - ...initOptions, - }); + let initResult = await sendInit(initOptions); console.log({ initResult }); From 01d3c29304b2ddf0f0a09aa3134a859d374fc8fc Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 04:41:41 +0000 Subject: [PATCH 237/683] Use _in to get all test links --- payments-eacq.cjs | 46 ++++++---------------------------------------- 1 file changed, 6 insertions(+), 40 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 588fd032..75c4fc30 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1678,49 +1678,15 @@ async ( console.log({ product: productId }); const deleteTestLinks = async () => { - const { data: objectLinks } = await deep.select({ - type_id: PObject, - }); - - const { data: sumLinks } = await deep.select({ - type_id: PSum, - }); - - const { data: payLinks } = await deep.select({ - type_id: PPay, - }); - - const { data: urlLinks } = await deep.select({ - type_id: PUrl, + console.log("deleteTestLinks-start"); + const {data: testLinks} = await deep.select({ + type_id: {_in: {PObject, PSum, PPay, PUrl, PPayed, PError, PCancelled}} }); - - const { data: payedLinks } = await deep.select({ - type_id: PPayed, - }); - - const { data: errorLinks } = await deep.select({ - type_id: PError, - }); - - - const { data: cancelledLinks } = await deep.select({ - type_id: PCancelled, - }); - - const allLinks = [ - ...objectLinks, - ...sumLinks, - ...payLinks, - ...urlLinks, - ...payedLinks, - ...errorLinks, - ...cancelledLinks - ]; - for (let i = 0; i < allLinks.length; i++) { - const { id } = allLinks[i]; + for (let i = 0; i < testLinks.length; i++) { + const { id } = testLinks[i]; await deep.delete({ id: id }); } - console.log('Deleted test links'); + console.log("deleteTestLinks-start"); }; const testInit = async () => { From ca98c887270a75a664d7274ed5a4c0eea42f0d79 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 04:42:06 +0000 Subject: [PATCH 238/683] Add react dependency --- package-lock.json | 32879 +++++++------------------------------------- package.json | 6 + 2 files changed, 4653 insertions(+), 28232 deletions(-) diff --git a/package-lock.json b/package-lock.json index 447d1390..31a5987e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,52 +1,14 @@ { "name": "@deep-foundation/dev", "version": "0.0.20", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "@deep-foundation/dev", - "version": "0.0.20", - "license": "ISC", - "dependencies": { - "@deep-foundation/deeplinks": "0.0.93", - "@types/gulp": "^4.0.8", - "concurrently": "^5.3.0", - "cross-env": "^7.0.3", - "del": "^6.0.0", - "dotenv-expand": "^8.0.3", - "gulp": "^4.0.2", - "gulp-run-command": "^0.0.10", - "i": "^0.3.6", - "minimist": "^1.2.5", - "npm": "^7.5.4", - "prompt": "^1.2.0", - "puppeteer": "^16.1.0", - "rimraf": "^3.0.2", - "simple-git": "^2.45.0", - "ts-node": "^9.1.1", - "typescript": "^4.1.5", - "uniqid": "^5.4.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==", - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@apollo/client": { + "dependencies": { + "@apollo/client": { "version": "3.6.9", "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.6.9.tgz", "integrity": "sha512-Y1yu8qa2YeaCUBVuw08x8NHenFi0sw2I3KCu7Kw9mDSu86HmmtHJkCAifKVrN2iPgDTW/BbP3EpSV8/EQCcxZA==", - "dependencies": { + "requires": { "@graphql-typed-document-node/core": "^3.1.1", "@wry/context": "^0.6.0", "@wry/equality": "^0.5.0", @@ -59,31 +21,13 @@ "ts-invariant": "^0.10.3", "tslib": "^2.3.0", "zen-observable-ts": "^1.2.5" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0", - "graphql-ws": "^5.5.5", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" - }, - "peerDependenciesMeta": { - "graphql-ws": { - "optional": true - }, - "react": { - "optional": true - }, - "subscriptions-transport-ws": { - "optional": true - } } }, - "node_modules/@apollo/protobufjs": { + "@apollo/protobufjs": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.2.tgz", "integrity": "sha512-vF+zxhPiLtkwxONs6YanSt1EpwpGilThpneExUN5K3tCymuxNnVq2yojTvnpRjv2QfsEIt/n7ozPIIzBLwGIDQ==", - "hasInstallScript": true, - "dependencies": { + "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.4", @@ -98,145 +42,97 @@ "@types/node": "^10.1.0", "long": "^4.0.0" }, - "bin": { - "apollo-pbjs": "bin/pbjs", - "apollo-pbts": "bin/pbts" + "dependencies": { + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + } } }, - "node_modules/@apollo/protobufjs/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" - }, - "node_modules/@apollo/react-hooks": { + "@apollo/react-hooks": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@apollo/react-hooks/-/react-hooks-4.0.0.tgz", "integrity": "sha512-fCu0cbne3gbUl0QbA8X4L33iuuFVQbC5Jo2MIKRK8CyawR6PoxDpFdFA1kc6033ODZuZZ9Eo4RdeJFlFIIYcLA==", - "dependencies": { - "@apollo/client": "latest" - } - }, - "node_modules/@apollo/react-hooks/node_modules/@apollo/client": { - "version": "3.6.9", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.6.9.tgz", - "integrity": "sha512-Y1yu8qa2YeaCUBVuw08x8NHenFi0sw2I3KCu7Kw9mDSu86HmmtHJkCAifKVrN2iPgDTW/BbP3EpSV8/EQCcxZA==", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@wry/context": "^0.6.0", - "@wry/equality": "^0.5.0", - "@wry/trie": "^0.3.0", - "graphql-tag": "^2.12.6", - "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.16.1", - "prop-types": "^15.7.2", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.10.3", - "tslib": "^2.3.0", - "zen-observable-ts": "^1.2.5" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0", - "graphql-ws": "^5.5.5", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" + "requires": { + "@apollo/client": "^3.6.9" }, - "peerDependenciesMeta": { - "graphql-ws": { - "optional": true - }, - "react": { - "optional": true - }, - "subscriptions-transport-ws": { - "optional": true + "dependencies": { + "@apollo/client": { + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.6.9.tgz", + "integrity": "sha512-Y1yu8qa2YeaCUBVuw08x8NHenFi0sw2I3KCu7Kw9mDSu86HmmtHJkCAifKVrN2iPgDTW/BbP3EpSV8/EQCcxZA==", + "requires": { + "@graphql-typed-document-node/core": "^3.1.1", + "@wry/context": "^0.6.0", + "@wry/equality": "^0.5.0", + "@wry/trie": "^0.3.0", + "graphql-tag": "^2.12.6", + "hoist-non-react-statics": "^3.3.2", + "optimism": "^0.16.1", + "prop-types": "^15.7.2", + "symbol-observable": "^4.0.0", + "ts-invariant": "^0.10.3", + "tslib": "^2.3.0", + "zen-observable-ts": "^1.2.5" + } } } }, - "node_modules/@apollo/utils.dropunuseddefinitions": { + "@apollo/utils.dropunuseddefinitions": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz", - "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==", - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" - } + "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==" }, - "node_modules/@apollo/utils.keyvaluecache": { + "@apollo/utils.keyvaluecache": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.1.tgz", "integrity": "sha512-nLgYLomqjVimEzQ4cdvVQkcryi970NDvcRVPfd0OPeXhBfda38WjBq+WhQFk+czSHrmrSp34YHBxpat0EtiowA==", - "dependencies": { + "requires": { "@apollo/utils.logger": "^1.0.0", "lru-cache": "^7.10.1" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==" + } } }, - "node_modules/@apollo/utils.keyvaluecache/node_modules/lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/@apollo/utils.logger": { + "@apollo/utils.logger": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.0.tgz", "integrity": "sha512-dx9XrjyisD2pOa+KsB5RcDbWIAdgC91gJfeyLCgy0ctJMjQe7yZK5kdWaWlaOoCeX0z6YI9iYlg7vMPyMpQF3Q==" }, - "node_modules/@apollo/utils.printwithreducedwhitespace": { + "@apollo/utils.printwithreducedwhitespace": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz", - "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==", - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" - } + "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==" }, - "node_modules/@apollo/utils.removealiases": { + "@apollo/utils.removealiases": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz", - "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==", - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" - } + "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==" }, - "node_modules/@apollo/utils.sortast": { + "@apollo/utils.sortast": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz", "integrity": "sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA==", - "dependencies": { + "requires": { "lodash.sortby": "^4.7.0" - }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" } }, - "node_modules/@apollo/utils.stripsensitiveliterals": { + "@apollo/utils.stripsensitiveliterals": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz", - "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==", - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" - } + "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==" }, - "node_modules/@apollo/utils.usagereporting": { + "@apollo/utils.usagereporting": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.0.tgz", "integrity": "sha512-5PL7hJMkTPmdo3oxPtigRrIyPxDk/ddrUryHPDaezL1lSFExpNzsDd2f1j0XJoHOg350GRd3LyD64caLA2PU1w==", - "dependencies": { + "requires": { "@apollo/utils.dropunuseddefinitions": "^1.1.0", "@apollo/utils.printwithreducedwhitespace": "^1.1.0", "@apollo/utils.removealiases": "1.0.0", @@ -244,76 +140,60 @@ "@apollo/utils.stripsensitiveliterals": "^1.2.0", "apollo-reporting-protobuf": "^3.3.1" }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" - } - }, - "node_modules/@apollo/utils.usagereporting/node_modules/@apollo/protobufjs": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", - "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - }, - "bin": { - "apollo-pbjs": "bin/pbjs", - "apollo-pbts": "bin/pbts" - } - }, - "node_modules/@apollo/utils.usagereporting/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" - }, - "node_modules/@apollo/utils.usagereporting/node_modules/apollo-reporting-protobuf": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", - "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", "dependencies": { - "@apollo/protobufjs": "1.2.4" + "@apollo/protobufjs": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", + "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + } + }, + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "apollo-reporting-protobuf": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", + "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", + "requires": { + "@apollo/protobufjs": "1.2.4" + } + } } }, - "node_modules/@apollographql/apollo-tools": { + "@apollographql/apollo-tools": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz", - "integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==", - "engines": { - "node": ">=8", - "npm": ">=6" - }, - "peerDependencies": { - "graphql": "^14.2.1 || ^15.0.0 || ^16.0.0" - } + "integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==" }, - "node_modules/@apollographql/graphql-playground-html": { + "@apollographql/graphql-playground-html": { "version": "1.6.27", "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.27.tgz", "integrity": "sha512-tea2LweZvn6y6xFV11K0KC8ETjmm52mQrW+ezgB2O/aTQf8JGyFmMcRPFgUaQZeHbWdm8iisDC6EjOKsXu0nfw==", - "dependencies": { + "requires": { "xss": "^1.0.8" } }, - "node_modules/@apollographql/graphql-upload-8-fork": { + "@apollographql/graphql-upload-8-fork": { "version": "8.1.3", "resolved": "https://registry.npmjs.org/@apollographql/graphql-upload-8-fork/-/graphql-upload-8-fork-8.1.3.tgz", "integrity": "sha512-ssOPUT7euLqDXcdVv3Qs4LoL4BPtfermW1IOouaqEmj36TpHYDmYDIbKoSQxikd9vtMumFnP87OybH7sC9fJ6g==", - "dependencies": { + "requires": { "@types/express": "*", "@types/fs-capacitor": "*", "@types/koa": "*", @@ -321,672 +201,72 @@ "fs-capacitor": "^2.0.4", "http-errors": "^1.7.3", "object-path": "^0.11.4" - }, - "engines": { - "node": ">=8.5" - }, - "peerDependencies": { - "graphql": "0.13.1 - 15" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "peer": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", - "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", - "peer": true, - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.10", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.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/core/node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "peer": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "peer": true, - "bin": { - "semver": "bin/semver.js" } }, - "node_modules/@babel/generator": { - "version": "7.18.12", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", - "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", - "peer": true, - "dependencies": { - "@babel/types": "^7.18.10", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" + "@deep-foundation/deeplinks": { + "version": "0.0.93", + "resolved": "https://registry.npmjs.org/@deep-foundation/deeplinks/-/deeplinks-0.0.93.tgz", + "integrity": "sha512-UIvVax1+QlM94ehM0oSeRRQHwBzq8cV3Ec/jMMFl7j+QXIr8QRqKf7TYipNRt+faFTlfK25wEbDGQJi0elTRPQ==", + "requires": { + "@apollo/client": "^3.5.8", + "@deep-foundation/hasura": "0.0.17", + "@deep-foundation/materialized-path": "^0.0.11", + "@deep-foundation/react-hasura": "0.0.5", + "@deep-foundation/store": "0.0.6", + "@types/jest": "^26.0.22", + "@types/node": "^14.17.34", + "@types/react": "^17.0.19", + "apollo-boost": "^0.4.9", + "apollo-server": "^2.21.0", + "apollo-server-core": "^3.6.1", + "apollo-server-express": "^3.5.0", + "atob": "^2.1.2", + "axios": "^0.24.0", + "body-parser": "^1.19.0", + "buffer": "^6.0.3", + "chai": "^4.3.4", + "cross-env": "^7.0.3", + "debug": "^4.3.3", + "dotenv": "^8.2.0", + "fix-path": "^3.0.0", + "get-port": "^5.1.1", + "gists": "^2.0.0", + "graphql": "^15.5.0", + "graphql-playground-middleware-express": "^1.7.23", + "graphql-tag": "^2.11.0", + "http-proxy-middleware": "^2.0.1", + "internal-ip": "^6.2.0", + "jsonwebtoken": "^8.5.1", + "microtime": "^3.0.0", + "moesif-nodejs": "^3.1.19", + "nodemon": "^2.0.15", + "rimraf": "^3.0.2", + "supports-color": "^9.2.1", + "ts-jest": "^26.5.4", + "uniqid": "^5.3.0", + "wait-on": "^6.0.0" }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "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" + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "graphql": { + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==" + } } }, - "node_modules/@babel/generator/node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "peer": true, - "dependencies": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "peer": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "peer": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", - "peer": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "peer": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "peer": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", - "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", - "peer": true, - "dependencies": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "peer": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "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==", - "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==", - "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/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "peer": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz", - "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==", - "peer": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.11.tgz", - "integrity": "sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.11", - "@babel/types": "^7.18.10", - "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==", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", - "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", - "peer": true, - "dependencies": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types/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": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "peer": true - }, - "node_modules/@capacitor/core": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-4.0.1.tgz", - "integrity": "sha512-gita0j7UPoGyHejAUsrW1OrkyDSp7gfHn45fkeQclHRSz7UWLF4hqE1R/6INsVmIFu/amIApxfHed8h3m/Fm7g==", - "peer": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", - "peer": true, - "dependencies": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - }, - "bin": { - "watch": "cli.js" - }, - "engines": { - "node": ">=0.1.95" - } - }, - "node_modules/@deep-foundation/deeplinks": { - "version": "0.0.93", - "resolved": "https://registry.npmjs.org/@deep-foundation/deeplinks/-/deeplinks-0.0.93.tgz", - "integrity": "sha512-UIvVax1+QlM94ehM0oSeRRQHwBzq8cV3Ec/jMMFl7j+QXIr8QRqKf7TYipNRt+faFTlfK25wEbDGQJi0elTRPQ==", - "dependencies": { - "@apollo/client": "^3.5.8", - "@deep-foundation/hasura": "0.0.17", - "@deep-foundation/materialized-path": "^0.0.11", - "@deep-foundation/react-hasura": "0.0.5", - "@deep-foundation/store": "0.0.6", - "@types/jest": "^26.0.22", - "@types/node": "^14.17.34", - "@types/react": "^17.0.19", - "apollo-boost": "^0.4.9", - "apollo-server": "^2.21.0", - "apollo-server-core": "^3.6.1", - "apollo-server-express": "^3.5.0", - "atob": "^2.1.2", - "axios": "^0.24.0", - "body-parser": "^1.19.0", - "buffer": "^6.0.3", - "chai": "^4.3.4", - "cross-env": "^7.0.3", - "debug": "^4.3.3", - "dotenv": "^8.2.0", - "fix-path": "^3.0.0", - "get-port": "^5.1.1", - "gists": "^2.0.0", - "graphql": "^15.5.0", - "graphql-playground-middleware-express": "^1.7.23", - "graphql-tag": "^2.11.0", - "http-proxy-middleware": "^2.0.1", - "internal-ip": "^6.2.0", - "jsonwebtoken": "^8.5.1", - "microtime": "^3.0.0", - "moesif-nodejs": "^3.1.19", - "nodemon": "^2.0.15", - "rimraf": "^3.0.2", - "supports-color": "^9.2.1", - "ts-jest": "^26.5.4", - "uniqid": "^5.3.0", - "wait-on": "^6.0.0" - }, - "engines": { - "node": "^14.15.0" - }, - "peerDependencies": { - "react": "*" - } - }, - "node_modules/@deep-foundation/deeplinks/node_modules/debug": { - "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" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@deep-foundation/hasura": { + "@deep-foundation/hasura": { "version": "0.0.17", "resolved": "https://registry.npmjs.org/@deep-foundation/hasura/-/hasura-0.0.17.tgz", "integrity": "sha512-rtB7gG8/fsX9k6ykLo7/p1zQlD7XcVNv0MetDPjW5Flq65UZsSdT6xaqo4TmdhF7bWTOku6u3f8SW4xOoFgIRw==", - "dependencies": { + "requires": { "@apollo/client": "^3.5.5", "@apollo/react-hooks": "^4.0.0", "@types/node": "^14.17.14", @@ -1009,33 +289,32 @@ "rimraf": "^3.0.2", "ts-node": "^9.1.1", "ws": "^7.5.6" - } - }, - "node_modules/@deep-foundation/hasura/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/@deep-foundation/hasura/node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" }, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + }, + "react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } } }, - "node_modules/@deep-foundation/materialized-path": { + "@deep-foundation/materialized-path": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/@deep-foundation/materialized-path/-/materialized-path-0.0.11.tgz", "integrity": "sha512-VUiqjTRRwWTm+JZd03w5czSwAOzmKN8Y0h0Hse1jtRFz277qWQqPCL2T40QsQODddn8mEMpiHg2eDS7atBKkhA==", - "dependencies": { + "requires": { "@types/jest": "^26.0.22", "@types/node": "^14.0.23", "@types/react": "^17.0.2", @@ -1046,23578 +325,2261 @@ "ts-jest": "^26.5.4", "typescript": "^3.9.7" }, - "peerDependencies": { - "@deep-foundation/hasura": "*" - } - }, - "node_modules/@deep-foundation/materialized-path/node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" + "dependencies": { + "graphql": { + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==" + }, + "typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==" + } } }, - "node_modules/@deep-foundation/react-hasura": { + "@deep-foundation/react-hasura": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/@deep-foundation/react-hasura/-/react-hasura-0.0.5.tgz", "integrity": "sha512-3ah7heyiamk3TzEIJ+wA9GLFcarph3e9qjWb/pGIdmZer9aaIOE5hXPba26g4Q7raKmevZK4QC7Cou2/uwbXMA==", - "dependencies": { + "requires": { "@apollo/react-hooks": "^4.0.0", "debug": "^4.3.1" - }, - "peerDependencies": { - "@deep-foundation/hasura": "*", - "react": "*" } }, - "node_modules/@deep-foundation/store": { + "@deep-foundation/store": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/@deep-foundation/store/-/store-0.0.6.tgz", "integrity": "sha512-KBpyvl9S4Pkl71oAnC6c0pQg3uTQGRN3GMclkinM6OR1UVFXMGMSXKk6DQ8QWWEKJ0KW7evUR2Ha0CW2aW1ptA==", - "dependencies": { + "requires": { "debug": "^4.1.1", "lodash": "^4.17.19", "react-cookie": "^4.0.3", "universal-cookie": "^4.0.3" - }, - "peerDependencies": { - "@capacitor/core": "*", - "next": "*", - "react": "*", - "react-dom": "*" } }, - "node_modules/@graphql-tools/merge": { + "@graphql-tools/merge": { "version": "8.3.3", "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.3.tgz", "integrity": "sha512-EfULshN2s2s2mhBwbV9WpGnoehRLe7eIMdZrKfHhxlBWOvtNUd3KSCN0PUdAMd7lj1jXUW9KYdn624JrVn6qzg==", - "dependencies": { + "requires": { "@graphql-tools/utils": "8.10.0", "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/mock": { + "@graphql-tools/mock": { "version": "8.7.3", "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.7.3.tgz", "integrity": "sha512-U9e3tZenFvSTf0TAaFgwqO84cGNEbgzWXvboqJPth873dMag8sOlLyOBZceVzAZP7ptwfLbhm3S0Qq4ffI7mCw==", - "dependencies": { + "requires": { "@graphql-tools/schema": "9.0.1", "@graphql-tools/utils": "8.10.0", "fast-json-stable-stringify": "^2.1.0", "tslib": "^2.4.0" }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/schema": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.1.tgz", - "integrity": "sha512-Y6apeiBmvXEz082IAuS/ainnEEQrzMECP1MRIV72eo2WPa6ZtLYPycvIbd56Z5uU2LKP4XcWRgK6WUbCyN16Rw==", - "dependencies": { - "@graphql-tools/merge": "8.3.3", - "@graphql-tools/utils": "8.10.0", - "tslib": "^2.4.0", - "value-or-promise": "1.0.11" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-tools/schema": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz", - "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==", "dependencies": { + "@graphql-tools/schema": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.1.tgz", + "integrity": "sha512-Y6apeiBmvXEz082IAuS/ainnEEQrzMECP1MRIV72eo2WPa6ZtLYPycvIbd56Z5uU2LKP4XcWRgK6WUbCyN16Rw==", + "requires": { + "@graphql-tools/merge": "8.3.3", + "@graphql-tools/utils": "8.10.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + } + } + } + }, + "@graphql-tools/schema": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz", + "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==", + "requires": { "@graphql-tools/merge": "8.3.1", "@graphql-tools/utils": "8.9.0", "tslib": "^2.4.0", "value-or-promise": "1.0.11" }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-tools/schema/node_modules/@graphql-tools/merge": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz", - "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==", - "dependencies": { - "@graphql-tools/utils": "8.9.0", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", - "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", "dependencies": { - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "@graphql-tools/merge": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz", + "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==", + "requires": { + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0" + } + }, + "@graphql-tools/utils": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", + "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", + "requires": { + "tslib": "^2.4.0" + } + } } }, - "node_modules/@graphql-tools/utils": { + "@graphql-tools/utils": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.10.0.tgz", "integrity": "sha512-yI+V373FdXQbYfqdarehn9vRWDZZYuvyQ/xwiv5ez2BbobHrqsexF7qs56plLRaQ8ESYpVAjMQvJWe9s23O0Jg==", - "dependencies": { + "requires": { "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-typed-document-node/core": { + "@graphql-typed-document-node/core": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", - "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } + "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==" }, - "node_modules/@hapi/hoek": { + "@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" }, - "node_modules/@hapi/topo": { + "@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dependencies": { + "requires": { "@hapi/hoek": "^9.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "peer": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { + "@jest/types": { "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", - "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", - "peer": true, - "dependencies": { - "@jest/types": "^26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^26.6.2", - "jest-util": "^26.6.2", - "slash": "^3.0.0" + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@jest/console/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==", - "peer": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "@josephg/resolvable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", + "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==" }, - "node_modules/@jest/console/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "requires": { + "debug": "^4.1.1" } }, - "node_modules/@jest/console/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==", - "peer": true + "@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==" }, - "node_modules/@jest/console/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==", - "peer": true, - "engines": { - "node": ">=8" + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" } }, - "node_modules/@jest/console/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": true, - "engines": { - "node": ">=8" - } + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" }, - "node_modules/@jest/console/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" } }, - "node_modules/@jest/core": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", - "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", - "peer": true, - "dependencies": { - "@jest/console": "^26.6.2", - "@jest/reporters": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^26.6.2", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-resolve-dependencies": "^26.6.3", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "jest-watcher": "^26.6.2", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" }, - "node_modules/@jest/core/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==", - "peer": true, - "engines": { - "node": ">=8" - } + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" }, - "node_modules/@jest/core/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" }, - "node_modules/@jest/core/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" } }, - "node_modules/@jest/core/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==", - "peer": true + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" }, - "node_modules/@jest/core/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==", - "peer": true, - "engines": { - "node": ">=8" - } + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" }, - "node_modules/@jest/core/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": true, - "engines": { - "node": ">=8" - } + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" }, - "node_modules/@jest/core/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==", - "peer": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" }, - "node_modules/@jest/core/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "requires": { + "@hapi/hoek": "^9.0.0" } }, - "node_modules/@jest/environment": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", - "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", - "peer": true, - "dependencies": { - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@jest/fake-timers": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", - "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", - "peer": true, - "dependencies": { - "@jest/types": "^26.6.2", - "@sinonjs/fake-timers": "^6.0.1", - "@types/node": "*", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" }, - "node_modules/@jest/globals": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", - "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", - "peer": true, - "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/types": "^26.6.2", - "expect": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, - "node_modules/@jest/reporters": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", - "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", - "peer": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^7.0.0" - }, - "engines": { - "node": ">= 10.14.2" - }, - "optionalDependencies": { - "node-notifier": "^8.0.0" + "@types/accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", + "requires": { + "@types/node": "*" } }, - "node_modules/@jest/reporters/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "requires": { + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "requires": { + "@types/node": "*" } }, - "node_modules/@jest/reporters/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } + "@types/content-disposition": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", + "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==" }, - "node_modules/@jest/reporters/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==", - "peer": true + "@types/cookie": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz", + "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==" }, - "node_modules/@jest/reporters/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==", - "peer": true, - "engines": { - "node": ">=8" + "@types/cookies": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", + "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", + "requires": { + "@types/connect": "*", + "@types/express": "*", + "@types/keygrip": "*", + "@types/node": "*" } }, - "node_modules/@jest/reporters/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": true, - "engines": { - "node": ">=8" - } + "@types/cors": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==" }, - "node_modules/@jest/reporters/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } + "@types/expect": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==" }, - "node_modules/@jest/reporters/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" } }, - "node_modules/@jest/source-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", - "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", - "peer": true, - "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" - }, - "engines": { - "node": ">= 10.14.2" + "@types/express-serve-static-core": { + "version": "4.17.30", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", + "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" } }, - "node_modules/@jest/source-map/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": true, - "engines": { - "node": ">=0.10.0" + "@types/formidable": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.5.tgz", + "integrity": "sha512-zu3mQJa4hDNubEMViSj937602XdDGzK7Q5pJ5QmLUbNxclbo9tZGt5jtwM352ssZ+pqo5V4H14TBvT/ALqQQcA==", + "requires": { + "@types/node": "*" } }, - "node_modules/@jest/test-result": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", - "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", - "peer": true, - "dependencies": { - "@jest/console": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": ">= 10.14.2" + "@types/fs-capacitor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz", + "integrity": "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==", + "requires": { + "@types/node": "*" } }, - "node_modules/@jest/test-sequencer": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", - "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", - "peer": true, - "dependencies": { - "@jest/test-result": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3" - }, - "engines": { - "node": ">= 10.14.2" + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "requires": { + "@types/minimatch": "*", + "@types/node": "*" } }, - "node_modules/@jest/transform": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", - "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", - "peer": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^26.6.2", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-util": "^26.6.2", - "micromatch": "^4.0.2", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": ">= 10.14.2" + "@types/glob-stream": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-6.1.1.tgz", + "integrity": "sha512-AGOUTsTdbPkRS0qDeyeS+6KypmfVpbT5j23SN8UPG63qjKXNKjXn6V9wZUr8Fin0m9l8oGYaPK8b2WUMF8xI1A==", + "requires": { + "@types/glob": "*", + "@types/node": "*" } }, - "node_modules/@jest/transform/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@types/gulp": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.9.tgz", + "integrity": "sha512-zzT+wfQ8uwoXjDhRK9Zkmmk09/fbLLmN/yDHFizJiEKIve85qutOnXcP/TM2sKPBTU+Jc16vfPbOMkORMUBN7Q==", + "requires": { + "@types/undertaker": "*", + "@types/vinyl-fs": "*", + "chokidar": "^3.3.1" } }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "requires": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" } }, - "node_modules/@jest/transform/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } + "@types/http-assert": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", + "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==" }, - "node_modules/@jest/transform/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==", - "peer": true + "@types/http-errors": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", + "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==" }, - "node_modules/@jest/transform/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==", - "peer": true, - "engines": { - "node": ">=8" + "@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "requires": { + "@types/node": "*" } }, - "node_modules/@jest/transform/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": true, - "engines": { - "node": ">=8" - } + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" }, - "node_modules/@jest/transform/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": true, - "engines": { - "node": ">=0.10.0" + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "requires": { + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/@jest/transform/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "requires": { + "@types/istanbul-lib-report": "*" } }, - "node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": ">= 10.14.2" + "@types/jest": { + "version": "26.0.24", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", + "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", + "requires": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" } }, - "node_modules/@jest/types/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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "@types/keygrip": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", + "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" }, - "node_modules/@jest/types/node_modules/chalk": { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "@types/koa": { + "version": "2.13.5", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz", + "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==", + "requires": { + "@types/accepts": "*", + "@types/content-disposition": "*", + "@types/cookies": "*", + "@types/http-assert": "*", + "@types/http-errors": "*", + "@types/keygrip": "*", + "@types/koa-compose": "*", + "@types/node": "*" + } }, - "node_modules/@jest/types/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@types/koa-compose": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", + "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", + "requires": { + "@types/koa": "*" } }, - "node_modules/@jest/types/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==" + "@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, - "node_modules/@jest/types/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==", - "engines": { - "node": ">=8" + "@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" + }, + "@types/node": { + "version": "14.18.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.18.tgz", + "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig==" + }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "@types/react": { + "version": "17.0.48", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.48.tgz", + "integrity": "sha512-zJ6IYlJ8cYYxiJfUaZOQee4lh99mFihBoqkOSEGV+dFi9leROW6+PgstzQ+w3gWTnUfskALtQPGHK6dYmPj+2A==", + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" } }, - "node_modules/@jest/types/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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "requires": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/undertaker": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.7.tgz", + "integrity": "sha512-xuY7nBwo1zSRoY2aitp/HArHfTulFAKql2Fr4b4mWbBBP+F50n7Jm6nwISTTMaDk2xvl92O10TTejVF0Q9mInw==", + "requires": { + "@types/node": "*", + "@types/undertaker-registry": "*", + "async-done": "~1.3.2" } }, - "node_modules/@josephg/resolvable": { + "@types/undertaker-registry": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", - "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==" + "resolved": "https://registry.npmjs.org/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==" }, - "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==", - "peer": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" + "@types/vinyl": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", + "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", + "requires": { + "@types/expect": "^1.20.4", + "@types/node": "*" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "peer": true, - "engines": { - "node": ">=6.0.0" + "@types/vinyl-fs": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/@types/vinyl-fs/-/vinyl-fs-2.4.12.tgz", + "integrity": "sha512-LgBpYIWuuGsihnlF+OOWWz4ovwCYlT03gd3DuLwex50cYZLmX3yrW+sFF9ndtmh7zcZpS6Ri47PrIu+fV+sbXw==", + "requires": { + "@types/glob-stream": "*", + "@types/node": "*", + "@types/vinyl": "*" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "peer": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", - "peer": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "requires": { + "@types/node": "*" } }, - "node_modules/@kwsites/file-exists": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", - "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", - "dependencies": { - "debug": "^4.1.1" + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "requires": { + "@types/yargs-parser": "*" } }, - "node_modules/@kwsites/promise-deferred": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", - "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==" + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" }, - "node_modules/@next/env": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.2.5.tgz", - "integrity": "sha512-vLPLV3cpPGjUPT3PjgRj7e3nio9t6USkuew3JE/jMeon/9Mvp1WyR18v3iwnCuX7eUAm1HmAbJHHLAbcu/EJcw==", - "peer": true - }, - "node_modules/@next/swc-android-arm-eabi": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.5.tgz", - "integrity": "sha512-cPWClKxGhgn2dLWnspW+7psl3MoLQUcNqJqOHk2BhNcou9ARDtC0IjQkKe5qcn9qg7I7U83Gp1yh2aesZfZJMA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-android-arm64": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.2.5.tgz", - "integrity": "sha512-vMj0efliXmC5b7p+wfcQCX0AfU8IypjkzT64GiKJD9PgiA3IILNiGJr1fw2lyUDHkjeWx/5HMlMEpLnTsQslwg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.5.tgz", - "integrity": "sha512-VOPWbO5EFr6snla/WcxUKtvzGVShfs302TEMOtzYyWni6f9zuOetijJvVh9CCTzInnXAZMtHyNhefijA4HMYLg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.5.tgz", - "integrity": "sha512-5o8bTCgAmtYOgauO/Xd27vW52G2/m3i5PX7MUYePquxXAnX73AAtqA3WgPXBRitEB60plSKZgOTkcpqrsh546A==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-freebsd-x64": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.5.tgz", - "integrity": "sha512-yYUbyup1JnznMtEBRkK4LT56N0lfK5qNTzr6/DEyDw5TbFVwnuy2hhLBzwCBkScFVjpFdfiC6SQAX3FrAZzuuw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm-gnueabihf": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.5.tgz", - "integrity": "sha512-2ZE2/G921Acks7UopJZVMgKLdm4vN4U0yuzvAMJ6KBavPzqESA2yHJlm85TV/K9gIjKhSk5BVtauIUntFRP8cg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.5.tgz", - "integrity": "sha512-/I6+PWVlz2wkTdWqhlSYYJ1pWWgUVva6SgX353oqTh8njNQp1SdFQuWDqk8LnM6ulheVfSsgkDzxrDaAQZnzjQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.5.tgz", - "integrity": "sha512-LPQRelfX6asXyVr59p5sTpx5l+0yh2Vjp/R8Wi4X9pnqcayqT4CUJLiHqCvZuLin3IsFdisJL0rKHMoaZLRfmg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.5.tgz", - "integrity": "sha512-0szyAo8jMCClkjNK0hknjhmAngUppoRekW6OAezbEYwHXN/VNtsXbfzgYOqjKWxEx3OoAzrT3jLwAF0HdX2MEw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.5.tgz", - "integrity": "sha512-zg/Y6oBar1yVnW6Il1I/08/2ukWtOG6s3acdJdEyIdsCzyQi4RLxbbhkD/EGQyhqBvd3QrC6ZXQEXighQUAZ0g==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.5.tgz", - "integrity": "sha512-3/90DRNSqeeSRMMEhj4gHHQlLhhKg5SCCoYfE3kBjGpE63EfnblYUqsszGGZ9ekpKL/R4/SGB40iCQr8tR5Jiw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.5.tgz", - "integrity": "sha512-hGLc0ZRAwnaPL4ulwpp4D2RxmkHQLuI8CFOEEHdzZpS63/hMVzv81g8jzYA0UXbb9pus/iTc3VRbVbAM03SRrw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.5.tgz", - "integrity": "sha512-7h5/ahY7NeaO2xygqVrSG/Y8Vs4cdjxIjowTZ5W6CKoTKn7tmnuxlUc2h74x06FKmbhAd9agOjr/AOKyxYYm9Q==", - "cpu": [ - "x64" - ], + "@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" + "requires": { + "@types/node": "*" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } + "@types/zen-observable": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz", + "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==" }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" + "@wry/context": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.6.1.tgz", + "integrity": "sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw==", + "requires": { + "tslib": "^2.3.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" + "@wry/equality": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.3.tgz", + "integrity": "sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g==", + "requires": { + "tslib": "^2.3.0" } }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + "@wry/trie": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.2.tgz", + "integrity": "sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ==", + "requires": { + "tslib": "^2.3.0" + } }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + "accept": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/accept/-/accept-3.1.3.tgz", + "integrity": "sha512-OgOEAidVEOKPup+Gv2+2wdH2AgVKI9LxsJ4hicdJ6cY0faUuZdZoi56kkXWlHp9qicN1nWQLmW5ZRGk+SBS5xg==", + "requires": { + "boom": "7.x.x", + "hoek": "6.x.x" + } }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" } }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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" + } }, - "node_modules/@protobufjs/utf8": { + "ansi-colors": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "requires": { + "ansi-wrap": "^0.1.0" + } }, - "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "dependencies": { - "@hapi/hoek": "^9.0.0" + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "requires": { + "ansi-wrap": "0.1.0" } }, - "node_modules/@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "peer": true, - "dependencies": { - "type-detect": "4.0.8" - } + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" }, - "node_modules/@sinonjs/fake-timers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", - "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", - "peer": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, - "node_modules/@swc/helpers": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.3.tgz", - "integrity": "sha512-6JrF+fdUK2zbGpJIlN7G3v966PQjyx/dPt1T9km2wj+EUBqgrxCk3uX4Kct16MIm9gGxfKRcfax2hVf5jvlTzA==", - "peer": true, + "apollo-boost": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/apollo-boost/-/apollo-boost-0.4.9.tgz", + "integrity": "sha512-05y5BKcDaa8w47f8d81UVwKqrAjn8uKLv6QM9fNdldoNzQ+rnOHgFlnrySUZRz9QIT3vPftQkEz2UEASp1Mi5g==", + "requires": { + "apollo-cache": "^1.3.5", + "apollo-cache-inmemory": "^1.6.6", + "apollo-client": "^2.6.10", + "apollo-link": "^1.0.6", + "apollo-link-error": "^1.0.3", + "apollo-link-http": "^1.3.1", + "graphql-tag": "^2.4.2", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0" + }, "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "peer": true, - "engines": { - "node": ">= 6" + "ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "requires": { + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, - "node_modules/@types/accepts": { + "apollo-cache": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", + "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.5.tgz", + "integrity": "sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA==", + "requires": { + "apollo-utilities": "^1.3.4", + "tslib": "^1.10.0" + }, "dependencies": { - "@types/node": "*" + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, - "node_modules/@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", - "peer": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "peer": true, - "dependencies": { - "@babel/types": "^7.0.0" + "apollo-cache-control": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.14.0.tgz", + "integrity": "sha512-qN4BCq90egQrgNnTRMUHikLZZAprf3gbm8rC5Vwmc6ZdLolQ7bFsa769Hqi6Tq/lS31KLsXBLTOsRbfPHph12w==", + "requires": { + "apollo-server-env": "^3.1.0", + "apollo-server-plugin-base": "^0.13.0" } }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "peer": true, + "apollo-cache-inmemory": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6.tgz", + "integrity": "sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A==", + "requires": { + "apollo-cache": "^1.3.5", + "apollo-utilities": "^1.3.4", + "optimism": "^0.10.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0" + }, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "@wry/context": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.4.4.tgz", + "integrity": "sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==", + "requires": { + "@types/node": ">=6", + "tslib": "^1.9.3" + } + }, + "optimism": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.10.3.tgz", + "integrity": "sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw==", + "requires": { + "@wry/context": "^0.4.0" + } + }, + "ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "requires": { + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, - "node_modules/@types/babel__traverse": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.0.tgz", - "integrity": "sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw==", - "peer": true, + "apollo-client": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.6.10.tgz", + "integrity": "sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA==", + "requires": { + "@types/zen-observable": "^0.8.0", + "apollo-cache": "1.3.5", + "apollo-link": "^1.0.0", + "apollo-utilities": "1.3.4", + "symbol-observable": "^1.0.2", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0", + "zen-observable": "^0.8.0" + }, "dependencies": { - "@babel/types": "^7.3.0" + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, + "ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "requires": { + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" + "apollo-datasource": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.9.0.tgz", + "integrity": "sha512-y8H99NExU1Sk4TvcaUxTdzfq2SZo6uSj5dyh75XSQvbpH6gdAXIW9MaBcvlNC7n0cVPsidHmOcHOWxJ/pTXGjA==", + "requires": { + "apollo-server-caching": "^0.7.0", + "apollo-server-env": "^3.1.0" } }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dependencies": { - "@types/node": "*" + "apollo-graphql": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.9.7.tgz", + "integrity": "sha512-bezL9ItUWUGHTm1bI/XzIgiiZbhXpsC7uxk4UxFPmcVJwJsDc3ayZ99oXxAaK+3Rbg/IoqrHckA6CwmkCsbaSA==", + "requires": { + "core-js-pure": "^3.10.2", + "lodash.sortby": "^4.7.0", + "sha.js": "^2.4.11" } }, - "node_modules/@types/content-disposition": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", - "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==" - }, - "node_modules/@types/cookie": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz", - "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==" - }, - "node_modules/@types/cookies": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", - "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", + "apollo-link": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz", + "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==", + "requires": { + "apollo-utilities": "^1.3.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.9.3", + "zen-observable-ts": "^0.8.21" + }, "dependencies": { - "@types/connect": "*", - "@types/express": "*", - "@types/keygrip": "*", - "@types/node": "*" - } - }, - "node_modules/@types/cors": { - "version": "2.8.10", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", - "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==" - }, - "node_modules/@types/expect": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", - "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==" - }, - "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.30", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", - "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/formidable": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.5.tgz", - "integrity": "sha512-zu3mQJa4hDNubEMViSj937602XdDGzK7Q5pJ5QmLUbNxclbo9tZGt5jtwM352ssZ+pqo5V4H14TBvT/ALqQQcA==", - "dependencies": { - "@types/node": "*" + "ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "requires": { + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "zen-observable-ts": { + "version": "0.8.21", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz", + "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==", + "requires": { + "tslib": "^1.9.3", + "zen-observable": "^0.8.0" + } + } } }, - "node_modules/@types/fs-capacitor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz", - "integrity": "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==", + "apollo-link-error": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.13.tgz", + "integrity": "sha512-jAZOOahJU6bwSqb2ZyskEK1XdgUY9nkmeclCrW7Gddh1uasHVqmoYc4CKdb0/H0Y1J9lvaXKle2Wsw/Zx1AyUg==", + "requires": { + "apollo-link": "^1.2.14", + "apollo-link-http-common": "^0.2.16", + "tslib": "^1.9.3" + }, "dependencies": { - "@types/node": "*" + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "apollo-link-http": { + "version": "1.5.17", + "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.17.tgz", + "integrity": "sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg==", + "requires": { + "apollo-link": "^1.2.14", + "apollo-link-http-common": "^0.2.16", + "tslib": "^1.9.3" + }, "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, - "node_modules/@types/glob-stream": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-6.1.1.tgz", - "integrity": "sha512-AGOUTsTdbPkRS0qDeyeS+6KypmfVpbT5j23SN8UPG63qjKXNKjXn6V9wZUr8Fin0m9l8oGYaPK8b2WUMF8xI1A==", + "apollo-link-http-common": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz", + "integrity": "sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg==", + "requires": { + "apollo-link": "^1.2.14", + "ts-invariant": "^0.4.0", + "tslib": "^1.9.3" + }, "dependencies": { - "@types/glob": "*", - "@types/node": "*" + "ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "requires": { + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, - "node_modules/@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "peer": true, + "apollo-link-ws": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/apollo-link-ws/-/apollo-link-ws-1.0.20.tgz", + "integrity": "sha512-mjSFPlQxmoLArpHBeUb2Xj+2HDYeTaJqFGOqQ+I8NVJxgL9lJe84PDWcPah/yMLv3rB7QgBDSuZ0xoRFBPlySw==", + "requires": { + "apollo-link": "^1.2.14", + "tslib": "^1.9.3" + }, "dependencies": { - "@types/node": "*" + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, - "node_modules/@types/gulp": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.9.tgz", - "integrity": "sha512-zzT+wfQ8uwoXjDhRK9Zkmmk09/fbLLmN/yDHFizJiEKIve85qutOnXcP/TM2sKPBTU+Jc16vfPbOMkORMUBN7Q==", - "dependencies": { - "@types/undertaker": "*", - "@types/vinyl-fs": "*", - "chokidar": "^3.3.1" + "apollo-reporting-protobuf": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-0.8.0.tgz", + "integrity": "sha512-B3XmnkH6Y458iV6OsA7AhfwvTgeZnFq9nPVjbxmLKnvfkEl8hYADtz724uPa0WeBiD7DSFcnLtqg9yGmCkBohg==", + "requires": { + "@apollo/protobufjs": "1.2.2" } }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "apollo-server": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-2.25.4.tgz", + "integrity": "sha512-CNvaSd0wkacfsvprSI843qTLKfBQpLik9e0y77On+OhdObkmq1ij8qkpF8awNg0iJPG5+RYBGNC7c/PA6vO53A==", + "requires": { + "apollo-server-core": "^2.25.4", + "apollo-server-express": "^2.25.4", + "express": "^4.0.0", + "graphql-subscriptions": "^1.0.0", + "graphql-tools": "^4.0.8", + "stoppable": "^1.1.0" + }, "dependencies": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" + "@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "apollo-server-core": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.25.4.tgz", + "integrity": "sha512-1u3BnFKbCt6F9SPM7ZoWmtHK6ubme56H8hV5Mjv3KbfSairU76SU79IhO05BEJE57S6N+ddb1rm3Uk93X6YeGw==", + "requires": { + "@apollographql/apollo-tools": "^0.5.0", + "@apollographql/graphql-playground-html": "1.6.27", + "@apollographql/graphql-upload-8-fork": "^8.1.3", + "@josephg/resolvable": "^1.0.0", + "@types/ws": "^7.0.0", + "apollo-cache-control": "^0.14.0", + "apollo-datasource": "^0.9.0", + "apollo-graphql": "^0.9.0", + "apollo-reporting-protobuf": "^0.8.0", + "apollo-server-caching": "^0.7.0", + "apollo-server-env": "^3.1.0", + "apollo-server-errors": "^2.5.0", + "apollo-server-plugin-base": "^0.13.0", + "apollo-server-types": "^0.9.0", + "apollo-tracing": "^0.15.0", + "async-retry": "^1.2.1", + "fast-json-stable-stringify": "^2.0.0", + "graphql-extensions": "^0.15.0", + "graphql-tag": "^2.11.0", + "graphql-tools": "^4.0.8", + "loglevel": "^1.6.7", + "lru-cache": "^6.0.0", + "sha.js": "^2.4.11", + "subscriptions-transport-ws": "^0.9.19", + "uuid": "^8.0.0" + }, + "dependencies": { + "subscriptions-transport-ws": { + "version": "0.9.19", + "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz", + "integrity": "sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw==", + "requires": { + "backo2": "^1.0.2", + "eventemitter3": "^3.1.0", + "iterall": "^1.2.1", + "symbol-observable": "^1.0.4", + "ws": "^5.2.0 || ^6.0.0 || ^7.0.0" + } + } + } + }, + "apollo-server-express": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.25.4.tgz", + "integrity": "sha512-1Yd9DscLlCP5BhfAkNxg+aGcaTKnL36FyezdL7Iqc+KelON5PAyX8qpAChKL8Z3L2YHJzIk/Haf4dFJLKUjx9w==", + "requires": { + "@apollographql/graphql-playground-html": "1.6.27", + "@types/accepts": "^1.3.5", + "@types/body-parser": "1.19.0", + "@types/cors": "2.8.10", + "@types/express": "^4.17.12", + "@types/express-serve-static-core": "^4.17.21", + "accepts": "^1.3.5", + "apollo-server-core": "^2.25.4", + "apollo-server-types": "^0.9.0", + "body-parser": "^1.18.3", + "cors": "^2.8.5", + "express": "^4.17.1", + "graphql-subscriptions": "^1.0.0", + "graphql-tools": "^4.0.8", + "parseurl": "^1.3.2", + "subscriptions-transport-ws": "^0.9.19", + "type-is": "^1.6.16" + }, + "dependencies": { + "subscriptions-transport-ws": { + "version": "0.9.19", + "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz", + "integrity": "sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw==", + "requires": { + "backo2": "^1.0.2", + "eventemitter3": "^3.1.0", + "iterall": "^1.2.1", + "symbol-observable": "^1.0.4", + "ws": "^5.2.0 || ^6.0.0 || ^7.0.0" + } + } + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + } } }, - "node_modules/@types/http-assert": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", - "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==" - }, - "node_modules/@types/http-errors": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", - "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==" - }, - "node_modules/@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", - "dependencies": { - "@types/node": "*" + "apollo-server-caching": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.7.0.tgz", + "integrity": "sha512-MsVCuf/2FxuTFVhGLK13B+TZH9tBd2qkyoXKKILIiGcZ5CDUEBO14vIV63aNkMkS1xxvK2U4wBcuuNj/VH2Mkw==", + "requires": { + "lru-cache": "^6.0.0" } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "26.0.24", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", - "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", - "dependencies": { - "jest-diff": "^26.0.0", - "pretty-format": "^26.0.0" - } - }, - "node_modules/@types/keygrip": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", - "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" - }, - "node_modules/@types/koa": { - "version": "2.13.5", - "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz", - "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==", - "dependencies": { - "@types/accepts": "*", - "@types/content-disposition": "*", - "@types/cookies": "*", - "@types/http-assert": "*", - "@types/http-errors": "*", - "@types/keygrip": "*", - "@types/koa-compose": "*", - "@types/node": "*" - } - }, - "node_modules/@types/koa-compose": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", - "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", - "dependencies": { - "@types/koa": "*" - } - }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "node_modules/@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" - }, - "node_modules/@types/node": { - "version": "14.18.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.18.tgz", - "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig==" - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "peer": true - }, - "node_modules/@types/prettier": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz", - "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==", - "peer": true - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - }, - "node_modules/@types/react": { - "version": "17.0.48", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.48.tgz", - "integrity": "sha512-zJ6IYlJ8cYYxiJfUaZOQee4lh99mFihBoqkOSEGV+dFi9leROW6+PgstzQ+w3gWTnUfskALtQPGHK6dYmPj+2A==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "node_modules/@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "dependencies": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "peer": true - }, - "node_modules/@types/undertaker": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.7.tgz", - "integrity": "sha512-xuY7nBwo1zSRoY2aitp/HArHfTulFAKql2Fr4b4mWbBBP+F50n7Jm6nwISTTMaDk2xvl92O10TTejVF0Q9mInw==", - "dependencies": { - "@types/node": "*", - "@types/undertaker-registry": "*", - "async-done": "~1.3.2" - } - }, - "node_modules/@types/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==" - }, - "node_modules/@types/vinyl": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", - "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", - "dependencies": { - "@types/expect": "^1.20.4", - "@types/node": "*" - } - }, - "node_modules/@types/vinyl-fs": { - "version": "2.4.12", - "resolved": "https://registry.npmjs.org/@types/vinyl-fs/-/vinyl-fs-2.4.12.tgz", - "integrity": "sha512-LgBpYIWuuGsihnlF+OOWWz4ovwCYlT03gd3DuLwex50cYZLmX3yrW+sFF9ndtmh7zcZpS6Ri47PrIu+fV+sbXw==", - "dependencies": { - "@types/glob-stream": "*", - "@types/node": "*", - "@types/vinyl": "*" - } - }, - "node_modules/@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" - }, - "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/zen-observable": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz", - "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==" - }, - "node_modules/@wry/context": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.6.1.tgz", - "integrity": "sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/equality": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.3.tgz", - "integrity": "sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/trie": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.2.tgz", - "integrity": "sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "peer": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "node_modules/accept": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/accept/-/accept-3.1.3.tgz", - "integrity": "sha512-OgOEAidVEOKPup+Gv2+2wdH2AgVKI9LxsJ4hicdJ6cY0faUuZdZoi56kkXWlHp9qicN1nWQLmW5ZRGk+SBS5xg==", - "deprecated": "This module has moved and is now available at @hapi/accept. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", - "dependencies": { - "boom": "7.x.x", - "hoek": "6.x.x" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "peer": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "peer": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "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" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dependencies": { - "ansi-wrap": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "peer": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/apollo-boost": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/apollo-boost/-/apollo-boost-0.4.9.tgz", - "integrity": "sha512-05y5BKcDaa8w47f8d81UVwKqrAjn8uKLv6QM9fNdldoNzQ+rnOHgFlnrySUZRz9QIT3vPftQkEz2UEASp1Mi5g==", - "dependencies": { - "apollo-cache": "^1.3.5", - "apollo-cache-inmemory": "^1.6.6", - "apollo-client": "^2.6.10", - "apollo-link": "^1.0.6", - "apollo-link-error": "^1.0.3", - "apollo-link-http": "^1.3.1", - "graphql-tag": "^2.4.2", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-boost/node_modules/ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "dependencies": { - "tslib": "^1.9.3" - } - }, - "node_modules/apollo-boost/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/apollo-cache": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.5.tgz", - "integrity": "sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA==", - "dependencies": { - "apollo-utilities": "^1.3.4", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-cache-control": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.14.0.tgz", - "integrity": "sha512-qN4BCq90egQrgNnTRMUHikLZZAprf3gbm8rC5Vwmc6ZdLolQ7bFsa769Hqi6Tq/lS31KLsXBLTOsRbfPHph12w==", - "deprecated": "The functionality provided by the `apollo-cache-control` package is built in to `apollo-server-core` starting with Apollo Server 3. See https://www.apollographql.com/docs/apollo-server/migration/#cachecontrol for details.", - "dependencies": { - "apollo-server-env": "^3.1.0", - "apollo-server-plugin-base": "^0.13.0" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-cache-inmemory": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6.tgz", - "integrity": "sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A==", - "dependencies": { - "apollo-cache": "^1.3.5", - "apollo-utilities": "^1.3.4", - "optimism": "^0.10.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-cache-inmemory/node_modules/@wry/context": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.4.4.tgz", - "integrity": "sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==", - "dependencies": { - "@types/node": ">=6", - "tslib": "^1.9.3" - } - }, - "node_modules/apollo-cache-inmemory/node_modules/optimism": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.10.3.tgz", - "integrity": "sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw==", - "dependencies": { - "@wry/context": "^0.4.0" - } - }, - "node_modules/apollo-cache-inmemory/node_modules/ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "dependencies": { - "tslib": "^1.9.3" - } - }, - "node_modules/apollo-cache-inmemory/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/apollo-cache/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/apollo-client": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.6.10.tgz", - "integrity": "sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA==", - "dependencies": { - "@types/zen-observable": "^0.8.0", - "apollo-cache": "1.3.5", - "apollo-link": "^1.0.0", - "apollo-utilities": "1.3.4", - "symbol-observable": "^1.0.2", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0", - "zen-observable": "^0.8.0" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-client/node_modules/symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/apollo-client/node_modules/ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "dependencies": { - "tslib": "^1.9.3" - } - }, - "node_modules/apollo-client/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/apollo-datasource": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.9.0.tgz", - "integrity": "sha512-y8H99NExU1Sk4TvcaUxTdzfq2SZo6uSj5dyh75XSQvbpH6gdAXIW9MaBcvlNC7n0cVPsidHmOcHOWxJ/pTXGjA==", - "dependencies": { - "apollo-server-caching": "^0.7.0", - "apollo-server-env": "^3.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/apollo-graphql": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.9.7.tgz", - "integrity": "sha512-bezL9ItUWUGHTm1bI/XzIgiiZbhXpsC7uxk4UxFPmcVJwJsDc3ayZ99oXxAaK+3Rbg/IoqrHckA6CwmkCsbaSA==", - "dependencies": { - "core-js-pure": "^3.10.2", - "lodash.sortby": "^4.7.0", - "sha.js": "^2.4.11" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^14.2.1 || ^15.0.0" - } - }, - "node_modules/apollo-link": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz", - "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==", - "dependencies": { - "apollo-utilities": "^1.3.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.9.3", - "zen-observable-ts": "^0.8.21" - }, - "peerDependencies": { - "graphql": "^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-link-error": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.13.tgz", - "integrity": "sha512-jAZOOahJU6bwSqb2ZyskEK1XdgUY9nkmeclCrW7Gddh1uasHVqmoYc4CKdb0/H0Y1J9lvaXKle2Wsw/Zx1AyUg==", - "dependencies": { - "apollo-link": "^1.2.14", - "apollo-link-http-common": "^0.2.16", - "tslib": "^1.9.3" - } - }, - "node_modules/apollo-link-error/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/apollo-link-http": { - "version": "1.5.17", - "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.17.tgz", - "integrity": "sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg==", - "dependencies": { - "apollo-link": "^1.2.14", - "apollo-link-http-common": "^0.2.16", - "tslib": "^1.9.3" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-link-http-common": { - "version": "0.2.16", - "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz", - "integrity": "sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg==", - "dependencies": { - "apollo-link": "^1.2.14", - "ts-invariant": "^0.4.0", - "tslib": "^1.9.3" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-link-http-common/node_modules/ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "dependencies": { - "tslib": "^1.9.3" - } - }, - "node_modules/apollo-link-http-common/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/apollo-link-http/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/apollo-link-ws": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/apollo-link-ws/-/apollo-link-ws-1.0.20.tgz", - "integrity": "sha512-mjSFPlQxmoLArpHBeUb2Xj+2HDYeTaJqFGOqQ+I8NVJxgL9lJe84PDWcPah/yMLv3rB7QgBDSuZ0xoRFBPlySw==", - "dependencies": { - "apollo-link": "^1.2.14", - "tslib": "^1.9.3" - }, - "peerDependencies": { - "subscriptions-transport-ws": "^0.9.0" - } - }, - "node_modules/apollo-link-ws/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/apollo-link/node_modules/ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "dependencies": { - "tslib": "^1.9.3" - } - }, - "node_modules/apollo-link/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/apollo-link/node_modules/zen-observable-ts": { - "version": "0.8.21", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz", - "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==", - "dependencies": { - "tslib": "^1.9.3", - "zen-observable": "^0.8.0" - } - }, - "node_modules/apollo-reporting-protobuf": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-0.8.0.tgz", - "integrity": "sha512-B3XmnkH6Y458iV6OsA7AhfwvTgeZnFq9nPVjbxmLKnvfkEl8hYADtz724uPa0WeBiD7DSFcnLtqg9yGmCkBohg==", - "dependencies": { - "@apollo/protobufjs": "1.2.2" - } - }, - "node_modules/apollo-server": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-2.25.4.tgz", - "integrity": "sha512-CNvaSd0wkacfsvprSI843qTLKfBQpLik9e0y77On+OhdObkmq1ij8qkpF8awNg0iJPG5+RYBGNC7c/PA6vO53A==", - "dependencies": { - "apollo-server-core": "^2.25.4", - "apollo-server-express": "^2.25.4", - "express": "^4.0.0", - "graphql-subscriptions": "^1.0.0", - "graphql-tools": "^4.0.8", - "stoppable": "^1.1.0" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-server-caching": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.7.0.tgz", - "integrity": "sha512-MsVCuf/2FxuTFVhGLK13B+TZH9tBd2qkyoXKKILIiGcZ5CDUEBO14vIV63aNkMkS1xxvK2U4wBcuuNj/VH2Mkw==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/apollo-server-core": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.10.1.tgz", - "integrity": "sha512-UFFziv6h15QbKRZOA6wLyr1Sle9kns3JuQ5DEB7OYe5AIoOJNjZkWXX/tmLFUrSmlnDDryi6Sf5pDzpYmUC/UA==", - "dependencies": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "@apollo/utils.usagereporting": "^1.0.0", - "@apollographql/apollo-tools": "^0.5.3", - "@apollographql/graphql-playground-html": "1.6.29", - "@graphql-tools/mock": "^8.1.2", - "@graphql-tools/schema": "^8.0.0", - "@josephg/resolvable": "^1.0.0", - "apollo-datasource": "^3.3.2", - "apollo-reporting-protobuf": "^3.3.2", - "apollo-server-env": "^4.2.1", - "apollo-server-errors": "^3.3.1", - "apollo-server-plugin-base": "^3.6.2", - "apollo-server-types": "^3.6.2", - "async-retry": "^1.2.1", - "fast-json-stable-stringify": "^2.1.0", - "graphql-tag": "^2.11.0", - "loglevel": "^1.6.8", - "lru-cache": "^6.0.0", - "sha.js": "^2.4.11", - "uuid": "^8.0.0", - "whatwg-mimetype": "^3.0.0" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-core/node_modules/@apollo/protobufjs": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", - "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - }, - "bin": { - "apollo-pbjs": "bin/pbjs", - "apollo-pbts": "bin/pbts" - } - }, - "node_modules/apollo-server-core/node_modules/@apollographql/graphql-playground-html": { - "version": "1.6.29", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", - "integrity": "sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==", - "dependencies": { - "xss": "^1.0.8" - } - }, - "node_modules/apollo-server-core/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" - }, - "node_modules/apollo-server-core/node_modules/apollo-datasource": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", - "integrity": "sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==", - "dependencies": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "apollo-server-env": "^4.2.1" - }, - "engines": { - "node": ">=12.0" - } - }, - "node_modules/apollo-server-core/node_modules/apollo-reporting-protobuf": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", - "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", - "dependencies": { - "@apollo/protobufjs": "1.2.4" - } - }, - "node_modules/apollo-server-core/node_modules/apollo-server-env": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", - "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", - "dependencies": { - "node-fetch": "^2.6.7" - }, - "engines": { - "node": ">=12.0" - } - }, - "node_modules/apollo-server-core/node_modules/apollo-server-errors": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz", - "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==", - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-core/node_modules/apollo-server-plugin-base": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.6.2.tgz", - "integrity": "sha512-erWXjLOO1u7fxQkbxJ2cwSO7p0tYzNied91I1SJ9tikXZ/2eZUyDyvrpI+4g70kOdEi+AmJ5Fo8ahEXKJ75zdg==", - "dependencies": { - "apollo-server-types": "^3.6.2" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-core/node_modules/apollo-server-types": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.2.tgz", - "integrity": "sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==", - "dependencies": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "apollo-reporting-protobuf": "^3.3.2", - "apollo-server-env": "^4.2.1" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-env": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-3.1.0.tgz", - "integrity": "sha512-iGdZgEOAuVop3vb0F2J3+kaBVi4caMoxefHosxmgzAbbSpvWehB8Y1QiSyyMeouYC38XNVk5wnZl+jdGSsWsIQ==", - "dependencies": { - "node-fetch": "^2.6.1", - "util.promisify": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/apollo-server-errors": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.5.0.tgz", - "integrity": "sha512-lO5oTjgiC3vlVg2RKr3RiXIIQ5pGXBFxYGGUkKDhTud3jMIhs+gel8L8zsEjKaKxkjHhCQAA/bcEfYiKkGQIvA==", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-server-express": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.10.1.tgz", - "integrity": "sha512-r0esst3YGNdlphYiOrflfBqJ15VAZAhYhWSFo2kPF4knsIGK5HUkeqwjMr+fFDBn4DEfYzC+I1+LnsF/hFN8VQ==", - "dependencies": { - "@types/accepts": "^1.3.5", - "@types/body-parser": "1.19.2", - "@types/cors": "2.8.12", - "@types/express": "4.17.13", - "@types/express-serve-static-core": "4.17.30", - "accepts": "^1.3.5", - "apollo-server-core": "^3.10.1", - "apollo-server-types": "^3.6.2", - "body-parser": "^1.19.0", - "cors": "^2.8.5", - "parseurl": "^1.3.3" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "express": "^4.17.1", - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-express/node_modules/@apollo/protobufjs": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", - "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - }, - "bin": { - "apollo-pbjs": "bin/pbjs", - "apollo-pbts": "bin/pbts" - } - }, - "node_modules/apollo-server-express/node_modules/@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" - }, - "node_modules/apollo-server-express/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" - }, - "node_modules/apollo-server-express/node_modules/apollo-reporting-protobuf": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", - "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", - "dependencies": { - "@apollo/protobufjs": "1.2.4" - } - }, - "node_modules/apollo-server-express/node_modules/apollo-server-env": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", - "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", - "dependencies": { - "node-fetch": "^2.6.7" - }, - "engines": { - "node": ">=12.0" - } - }, - "node_modules/apollo-server-express/node_modules/apollo-server-types": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.2.tgz", - "integrity": "sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==", - "dependencies": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "apollo-reporting-protobuf": "^3.3.2", - "apollo-server-env": "^4.2.1" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-micro": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/apollo-server-micro/-/apollo-server-micro-2.25.4.tgz", - "integrity": "sha512-tx9VC9VdMMZLi9TFfl/pX4jr/qqhgu2To9KI5jlXzYxowROwOt/TwTx9ClT77YdJDoSIAvippYSaw+njuejN/A==", - "dependencies": { - "@apollographql/graphql-playground-html": "1.6.27", - "accept": "^3.0.2", - "apollo-server-core": "^2.25.4", - "apollo-server-types": "^0.9.0", - "micro": "^9.3.2" - } - }, - "node_modules/apollo-server-micro/node_modules/apollo-server-core": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.25.4.tgz", - "integrity": "sha512-1u3BnFKbCt6F9SPM7ZoWmtHK6ubme56H8hV5Mjv3KbfSairU76SU79IhO05BEJE57S6N+ddb1rm3Uk93X6YeGw==", - "dependencies": { - "@apollographql/apollo-tools": "^0.5.0", - "@apollographql/graphql-playground-html": "1.6.27", - "@apollographql/graphql-upload-8-fork": "^8.1.3", - "@josephg/resolvable": "^1.0.0", - "@types/ws": "^7.0.0", - "apollo-cache-control": "^0.14.0", - "apollo-datasource": "^0.9.0", - "apollo-graphql": "^0.9.0", - "apollo-reporting-protobuf": "^0.8.0", - "apollo-server-caching": "^0.7.0", - "apollo-server-env": "^3.1.0", - "apollo-server-errors": "^2.5.0", - "apollo-server-plugin-base": "^0.13.0", - "apollo-server-types": "^0.9.0", - "apollo-tracing": "^0.15.0", - "async-retry": "^1.2.1", - "fast-json-stable-stringify": "^2.0.0", - "graphql-extensions": "^0.15.0", - "graphql-tag": "^2.11.0", - "graphql-tools": "^4.0.8", - "loglevel": "^1.6.7", - "lru-cache": "^6.0.0", - "sha.js": "^2.4.11", - "subscriptions-transport-ws": "^0.9.19", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-server-plugin-base": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.13.0.tgz", - "integrity": "sha512-L3TMmq2YE6BU6I4Tmgygmd0W55L+6XfD9137k+cWEBFu50vRY4Re+d+fL5WuPkk5xSPKd/PIaqzidu5V/zz8Kg==", - "dependencies": { - "apollo-server-types": "^0.9.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-server-types": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-0.9.0.tgz", - "integrity": "sha512-qk9tg4Imwpk732JJHBkhW0jzfG0nFsLqK2DY6UhvJf7jLnRePYsPxWfPiNkxni27pLE2tiNlCwoDFSeWqpZyBg==", - "dependencies": { - "apollo-reporting-protobuf": "^0.8.0", - "apollo-server-caching": "^0.7.0", - "apollo-server-env": "^3.1.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-server/node_modules/@types/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/apollo-server/node_modules/apollo-server-core": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.25.4.tgz", - "integrity": "sha512-1u3BnFKbCt6F9SPM7ZoWmtHK6ubme56H8hV5Mjv3KbfSairU76SU79IhO05BEJE57S6N+ddb1rm3Uk93X6YeGw==", - "dependencies": { - "@apollographql/apollo-tools": "^0.5.0", - "@apollographql/graphql-playground-html": "1.6.27", - "@apollographql/graphql-upload-8-fork": "^8.1.3", - "@josephg/resolvable": "^1.0.0", - "@types/ws": "^7.0.0", - "apollo-cache-control": "^0.14.0", - "apollo-datasource": "^0.9.0", - "apollo-graphql": "^0.9.0", - "apollo-reporting-protobuf": "^0.8.0", - "apollo-server-caching": "^0.7.0", - "apollo-server-env": "^3.1.0", - "apollo-server-errors": "^2.5.0", - "apollo-server-plugin-base": "^0.13.0", - "apollo-server-types": "^0.9.0", - "apollo-tracing": "^0.15.0", - "async-retry": "^1.2.1", - "fast-json-stable-stringify": "^2.0.0", - "graphql-extensions": "^0.15.0", - "graphql-tag": "^2.11.0", - "graphql-tools": "^4.0.8", - "loglevel": "^1.6.7", - "lru-cache": "^6.0.0", - "sha.js": "^2.4.11", - "subscriptions-transport-ws": "^0.9.19", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-server/node_modules/apollo-server-express": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.25.4.tgz", - "integrity": "sha512-1Yd9DscLlCP5BhfAkNxg+aGcaTKnL36FyezdL7Iqc+KelON5PAyX8qpAChKL8Z3L2YHJzIk/Haf4dFJLKUjx9w==", - "dependencies": { - "@apollographql/graphql-playground-html": "1.6.27", - "@types/accepts": "^1.3.5", - "@types/body-parser": "1.19.0", - "@types/cors": "2.8.10", - "@types/express": "^4.17.12", - "@types/express-serve-static-core": "^4.17.21", - "accepts": "^1.3.5", - "apollo-server-core": "^2.25.4", - "apollo-server-types": "^0.9.0", - "body-parser": "^1.18.3", - "cors": "^2.8.5", - "express": "^4.17.1", - "graphql-subscriptions": "^1.0.0", - "graphql-tools": "^4.0.8", - "parseurl": "^1.3.2", - "subscriptions-transport-ws": "^0.9.19", - "type-is": "^1.6.16" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-tracing": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.15.0.tgz", - "integrity": "sha512-UP0fztFvaZPHDhIB/J+qGuy6hWO4If069MGC98qVs0I8FICIGu4/8ykpX3X3K6RtaQ56EDAWKykCxFv4ScxMeA==", - "deprecated": "The `apollo-tracing` package is no longer part of Apollo Server 3. See https://www.apollographql.com/docs/apollo-server/migration/#tracing for details", - "dependencies": { - "apollo-server-env": "^3.1.0", - "apollo-server-plugin-base": "^0.13.0" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-utilities": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz", - "integrity": "sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==", - "dependencies": { - "@wry/equality": "^0.1.2", - "fast-json-stable-stringify": "^2.0.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-utilities/node_modules/@wry/equality": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz", - "integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==", - "dependencies": { - "tslib": "^1.9.3" - } - }, - "node_modules/apollo-utilities/node_modules/ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "dependencies": { - "tslib": "^1.9.3" - } - }, - "node_modules/apollo-utilities/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", - "dependencies": { - "buffer-equal": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "peer": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", - "dependencies": { - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", - "dependencies": { - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", - "dependencies": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-initial/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "dependencies": { - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-last/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "dependencies": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array.prototype.reduce": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", - "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "engines": { - "node": "*" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" - }, - "node_modules/async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" - }, - "node_modules/async-retry": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", - "dependencies": { - "retry": "0.13.1" - } - }, - "node_modules/async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", - "dependencies": { - "async-done": "^1.2.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "node_modules/axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", - "dependencies": { - "follow-redirects": "^1.14.4" - } - }, - "node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", - "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==" - }, - "node_modules/babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - } - }, - "node_modules/babel-core/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/babel-core/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dependencies": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - } - }, - "node_modules/babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==", - "dependencies": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "node_modules/babel-jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", - "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", - "peer": true, - "dependencies": { - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/babel__core": "^7.1.7", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "slash": "^3.0.0" - }, - "engines": { - "node": ">= 10.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-jest/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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/babel-jest/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/babel-jest/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==", - "peer": true - }, - "node_modules/babel-jest/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", - "dependencies": { - "babel-runtime": "^6.22.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", - "peer": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", - "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", - "peer": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/babel-plugin-transform-runtime": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.15.0.tgz", - "integrity": "sha1-PXW02Umtga8VdXAnOEb7Wa6w1Xw=", - "dependencies": { - "babel-runtime": "^6.9.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "peer": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", - "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", - "peer": true, - "dependencies": { - "babel-plugin-jest-hoist": "^26.6.2", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": ">= 10.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==", - "dependencies": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - } - }, - "node_modules/babel-register/node_modules/source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dependencies": { - "source-map": "^0.5.6" - } - }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", - "dependencies": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", - "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/babel-traverse/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", - "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "bin": { - "babylon": "bin/babylon.js" - } - }, - "node_modules/bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", - "dependencies": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" - }, - "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==" - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/benchmark": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", - "integrity": "sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==", - "dependencies": { - "lodash": "^4.17.4", - "platform": "^1.3.3" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/body-parser/node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/boom": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-7.3.0.tgz", - "integrity": "sha512-Swpoyi2t5+GhOEGw8rEsKvTxFLIDiiKoUc2gsoV6Lyr43LHBIzch3k2MvYUs8RTROrIkVJ3Al0TkaOGjnb+B6A==", - "deprecated": "This module has moved and is now available at @hapi/boom. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", - "dependencies": { - "hoek": "6.x.x" - } - }, - "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==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "peer": true - }, - "node_modules/browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", - "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.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "peer": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "engines": { - "node": "*" - } - }, - "node_modules/buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/busboy": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", - "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", - "dependencies": { - "dicer": "0.3.0" - }, - "engines": { - "node": ">=4.5.0" - } - }, - "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001378", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001378.tgz", - "integrity": "sha512-JVQnfoO7FK7WvU4ZkBRbPjaot4+YqxogSDosHv0Hv5mWpUESmN+UubMU6L/hGz8QlQ2aY5U0vR6MOs6j/CXpNA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ], - "peer": true - }, - "node_modules/capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", - "peer": true, - "dependencies": { - "rsvp": "^4.8.4" - }, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/card-validator": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/card-validator/-/card-validator-8.1.1.tgz", - "integrity": "sha512-cN4FsKwoTfTFnqPwVc7TQLSsH/QMDB3n/gWm0XelcApz4sKipnOQ6k33sa3bWsNnnIpgs7eXOF+mUV2UQAX2Sw==", - "dependencies": { - "credit-card-type": "^9.1.0" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - }, - "node_modules/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/chance": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.8.tgz", - "integrity": "sha512-v7fi5Hj2VbR6dJEGRWLmJBA83LJMS47pkAbmROFxHWd9qmE1esHRZW8Clf1Fhzr3rjxnNZVCjOEv/ivFxeIMtg==" - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - }, - "node_modules/cjs-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", - "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", - "peer": true - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" - }, - "node_modules/cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", - "dependencies": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "peer": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/co-body": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz", - "integrity": "sha512-sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ==", - "dependencies": { - "inflation": "^2.0.0", - "qs": "^6.4.0", - "raw-body": "^2.2.0", - "type-is": "^1.6.14" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "peer": true - }, - "node_modules/collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", - "dependencies": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "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=" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concurrently": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz", - "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==", - "dependencies": { - "chalk": "^2.4.2", - "date-fns": "^2.0.1", - "lodash": "^4.17.15", - "read-pkg": "^4.0.1", - "rxjs": "^6.5.2", - "spawn-command": "^0.0.2-1", - "supports-color": "^6.1.0", - "tree-kill": "^1.2.2", - "yargs": "^13.3.0" - }, - "bin": { - "concurrently": "bin/concurrently.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/concurrently/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==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/concurrently/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==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/concurrently/node_modules/chalk/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==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/concurrently/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "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==", - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-props": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", - "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", - "dependencies": { - "each-props": "^1.3.2", - "is-plain-object": "^5.0.0" - } - }, - "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true - }, - "node_modules/core-js-pure": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.1.tgz", - "integrity": "sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - }, - "node_modules/credit-card-type": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/credit-card-type/-/credit-card-type-9.1.0.tgz", - "integrity": "sha512-CpNFuLxiPFxuZqhSKml3M+t0K/484pMAnfYWH14JoD7OZMnmC0Lmo+P7JX9SobqFpRoo7ifA18kOHdxJywYPEA==" - }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dependencies": { - "node-fetch": "2.6.7" - } - }, - "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==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" - }, - "node_modules/cssfilter": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", - "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" - }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "peer": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "peer": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "peer": true - }, - "node_modules/csstype": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", - "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" - }, - "node_modules/cycle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "peer": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/data-urls/node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "peer": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/data-urls/node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "peer": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/data-urls/node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "peer": true - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "peer": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/date-fns": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz", - "integrity": "sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w==", - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "engines": { - "node": "*" - } - }, - "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decimal.js": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.0.tgz", - "integrity": "sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg==", - "peer": true - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "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==", - "peer": true - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "dependencies": { - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/default-gateway/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/default-gateway/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/default-shell": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/default-shell/-/default-shell-1.0.1.tgz", - "integrity": "sha512-/Os8tTMPSriNHCsVj3VLjMZblIl1sIg8EXz3qg7C5K+y9calfTA/qzlfPvCQ+LEgLWmtZ9wCnzE1w+S6TPPFyQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/del/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/deprecated-decorator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz", - "integrity": "sha512-MHidOOnCHGlZDKsI21+mbIIhf4Fff+hhCTB7gtVg4uoIqjcrTZc5v6M+GS2zVI0sV7PqK415rb8XaOSQsQkHOw==" - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", - "dependencies": { - "repeating": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/devtools-protocol": { - "version": "0.0.1019158", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", - "integrity": "sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==" - }, - "node_modules/dicer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", - "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", - "dependencies": { - "streamsearch": "0.1.2" - }, - "engines": { - "node": ">=4.5.0" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "peer": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", - "engines": { - "node": ">=10" - } - }, - "node_modules/dotenv-expand": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.3.tgz", - "integrity": "sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", - "dependencies": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" - } - }, - "node_modules/each-props/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.224", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.224.tgz", - "integrity": "sha512-dOujC5Yzj0nOVE23iD5HKqrRSDj2SD7RazpZS/b/WX85MtO6/LzKDF4TlYZTBteB+7fvSg5JpWh0sN7fImNF8w==", - "peer": true - }, - "node_modules/emittery": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", - "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-abstract/node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dependencies": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "peer": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "peer": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "peer": 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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" - }, - "node_modules/exec-sh": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", - "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", - "peer": true - }, - "node_modules/execa": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", - "integrity": "sha512-R66dW/hW3I8yV77Wg4xn6zMguRPUgt59VLm5e85NrOF05ZdPn7YOfPBSw0E9epJDvuzwVWEG+HmEaQ4muYuWKQ==", - "dependencies": { - "cross-spawn": "^4.0.0", - "get-stream": "^2.2.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", - "dependencies": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "node_modules/execa/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/execa/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/execa/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "peer": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expect": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", - "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", - "peer": true, - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-styles": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/expect/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/expect/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/expect/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==", - "peer": true - }, - "node_modules/express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/express/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", - "dependencies": { - "type": "^2.5.0" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/extract-zip/node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", - "engines": { - "node": "> 0.1.90" - } - }, - "node_modules/fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dependencies": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "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==" - }, - "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "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==" - }, - "node_modules/fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=" - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "peer": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/finalhandler/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/findup-sync/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fined/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fix-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fix-path/-/fix-path-3.0.0.tgz", - "integrity": "sha512-opGAl4+ip5jUikHR2C8Jo7czZ80pz8EK/0gMlAZu7xgDmBqIynlX8SMYg9KowYjAU6HT0nxsSJEWru0u+n+N2Q==", - "dependencies": { - "shell-path": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/formidable": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", - "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", - "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-capacitor": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-2.0.4.tgz", - "integrity": "sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA==", - "engines": { - "node": ">=8.5" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", - "dependencies": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "peer": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", - "dependencies": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/gists": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/gists/-/gists-2.0.0.tgz", - "integrity": "sha512-EVSWDpq2/H9ITsXsjdPo9+i2MI9U4E6DirXwR7/t6Mqgnynlh9ta6RMyezIINVNhkXZTCttmiSISd7JNkI2rQw==", - "dependencies": { - "github-base": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/github-base": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/github-base/-/github-base-1.0.0.tgz", - "integrity": "sha512-5A9OOCQWK80v+bjVRzdK0M/5UtERN9vx9TkJMlkiJA24wu/+lrQLsq5MPQIrSONrSWwt83eAPtBcuQOc2FyK8A==", - "dependencies": { - "get-value": "^3.0.1", - "needle": "^2.2.2", - "paged-request": "^1.0.2", - "parse-link-header": "^1.0.1", - "qs": "^6.5.1", - "use": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/github-base/node_modules/get-value": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-3.0.1.tgz", - "integrity": "sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", - "dependencies": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/glob-stream/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-stream/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", - "dependencies": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/glob-watcher/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/glob-watcher/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/glob-watcher/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/glob-watcher/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-watcher/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/micromatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/glob-watcher/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dependencies": { - "sparkles": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" - }, - "node_modules/graphql": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", - "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/graphql-extensions": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.15.0.tgz", - "integrity": "sha512-bVddVO8YFJPwuACn+3pgmrEg6I8iBuYLuwvxiE+lcQQ7POotVZxm2rgGw0PvVYmWWf3DT7nTVDZ5ROh/ALp8mA==", - "deprecated": "The `graphql-extensions` API has been removed from Apollo Server 3. Use the plugin API instead: https://www.apollographql.com/docs/apollo-server/integrations/plugins/", - "dependencies": { - "@apollographql/apollo-tools": "^0.5.0", - "apollo-server-env": "^3.1.0", - "apollo-server-types": "^0.9.0" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/graphql-playground-html": { - "version": "1.6.30", - "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.6.30.tgz", - "integrity": "sha512-tpCujhsJMva4aqE8ULnF7/l3xw4sNRZcSHu+R00VV+W0mfp+Q20Plvcrp+5UXD+2yS6oyCXncA+zoQJQqhGCEw==", - "dependencies": { - "xss": "^1.0.6" - } - }, - "node_modules/graphql-playground-middleware-express": { - "version": "1.7.23", - "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.23.tgz", - "integrity": "sha512-M/zbTyC1rkgiQjFSgmzAv6umMHOphYLNWZp6Ye5QrD77WfGOOoSqDsVmGUczc2pDkEPEzzGB/bvBO5rdzaTRgw==", - "dependencies": { - "graphql-playground-html": "^1.6.30" - }, - "peerDependencies": { - "express": "^4.16.2" - } - }, - "node_modules/graphql-subscriptions": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-1.2.1.tgz", - "integrity": "sha512-95yD/tKi24q8xYa7Q9rhQN16AYj5wPbrb8tmHGM3WRc9EBmWrG/0kkMl+tQG8wcEuE9ibR4zyOM31p5Sdr2v4g==", - "dependencies": { - "iterall": "^1.3.0" - }, - "peerDependencies": { - "graphql": "^0.10.5 || ^0.11.3 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/graphql-tools": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.8.tgz", - "integrity": "sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg==", - "deprecated": "This package has been deprecated and now it only exports makeExecutableSchema.\\nAnd it will no longer receive updates.\\nWe recommend you to migrate to scoped packages such as @graphql-tools/schema, @graphql-tools/utils and etc.\\nCheck out https://www.graphql-tools.com to learn what package you should use instead", - "dependencies": { - "apollo-link": "^1.2.14", - "apollo-utilities": "^1.0.1", - "deprecated-decorator": "^0.1.6", - "iterall": "^1.1.3", - "uuid": "^3.1.0" - }, - "peerDependencies": { - "graphql": "^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/graphql-tools/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", - "optional": true, - "peer": true - }, - "node_modules/gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "dependencies": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", - "dependencies": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp-cli/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/gulp-cli/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" - }, - "node_modules/gulp-cli/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "node_modules/gulp-cli/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" - }, - "node_modules/gulp-cli/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" - }, - "node_modules/gulp-cli/node_modules/yargs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", - "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", - "dependencies": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.1" - } - }, - "node_modules/gulp-cli/node_modules/yargs-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", - "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", - "dependencies": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" - } - }, - "node_modules/gulp-run-command": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/gulp-run-command/-/gulp-run-command-0.0.10.tgz", - "integrity": "sha512-i6o4XRqoadZB2doWCqkrCe7FmFwqPZ0Fxx74FGt83/KT5wKRRaKiFh598W64HE0Br9es6Oyq+nA+/AWbCfeSYQ==", - "dependencies": { - "babel-plugin-transform-runtime": "6.15.0", - "cross-spawn": "4.0.0", - "spawn-args": "0.2.0", - "timeout-as-promise": "^1.0.0" - } - }, - "node_modules/gulp-run-command/node_modules/cross-spawn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.0.tgz", - "integrity": "sha1-glR3SrR4a4xbPPTfumbOVjkywlI=", - "dependencies": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "node_modules/gulp-run-command/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/gulp-run-command/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/gulp-run-command/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "node_modules/gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dependencies": { - "glogg": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==", - "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues." - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "peer": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "peer": true - }, - "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "peer": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, - "node_modules/http-proxy/node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/i": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", - "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "peer": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "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": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "peer": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflation": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", - "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/inflight": { - "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" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/internal-ip": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", - "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", - "dependencies": { - "default-gateway": "^6.0.0", - "ipaddr.js": "^1.9.1", - "is-ip": "^3.1.0", - "p-event": "^4.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/internal-ip?sponsor=1" - } - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is_js": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/is_js/-/is_js-0.9.0.tgz", - "integrity": "sha512-8Y5EHSH+TonfUHX2g3pMJljdbGavg55q4jmHzghJCdqYDbdNROC8uw/YFQwIRCRqRJT1EY3pJefz+kglw+o7sg==" - }, - "node_modules/is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "optional": true, - "peer": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "engines": { - "node": ">=4" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "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==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", - "dependencies": { - "ip-regex": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "peer": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dependencies": { - "is-unc-path": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dependencies": { - "unc-path-regex": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "node_modules/is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "optional": true, - "peer": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "peer": true, - "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "peer": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "peer": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "peer": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/iterall": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", - "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" - }, - "node_modules/jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", - "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", - "peer": true, - "dependencies": { - "@jest/core": "^26.6.3", - "import-local": "^3.0.2", - "jest-cli": "^26.6.3" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-changed-files": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", - "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", - "peer": true, - "dependencies": { - "@jest/types": "^26.6.2", - "execa": "^4.0.0", - "throat": "^5.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-changed-files/node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "peer": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/jest-changed-files/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "peer": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "peer": true, - "engines": { - "node": ">=8.12.0" - } - }, - "node_modules/jest-changed-files/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "peer": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "peer": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/jest-cli": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", - "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", - "peer": true, - "dependencies": { - "@jest/core": "^26.6.3", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "is-ci": "^2.0.0", - "jest-config": "^26.6.3", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "prompts": "^2.0.1", - "yargs": "^15.4.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-cli/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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/jest-cli/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "peer": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/jest-cli/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-cli/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==", - "peer": true - }, - "node_modules/jest-cli/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "peer": true - }, - "node_modules/jest-cli/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "peer": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli/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==", - "peer": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "peer": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "peer": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-config": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", - "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", - "peer": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^26.6.3", - "@jest/types": "^26.6.2", - "babel-jest": "^26.6.3", - "chalk": "^4.0.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-environment-jsdom": "^26.6.2", - "jest-environment-node": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-jasmine2": "^26.6.3", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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/jest-config/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-config/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==", - "peer": true - }, - "node_modules/jest-config/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-diff/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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/chalk": { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-diff/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-diff/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==" - }, - "node_modules/jest-diff/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff/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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-docblock": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", - "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", - "peer": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-each": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", - "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", - "peer": true, - "dependencies": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-each/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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/jest-each/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-each/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==", - "peer": true - }, - "node_modules/jest-each/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-each/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", - "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", - "peer": true, - "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2", - "jsdom": "^16.4.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-environment-node": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", - "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", - "peer": true, - "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-haste-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", - "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", - "peer": true, - "dependencies": { - "@jest/types": "^26.6.2", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "micromatch": "^4.0.2", - "sane": "^4.0.3", - "walker": "^1.0.7" - }, - "engines": { - "node": ">= 10.14.2" - }, - "optionalDependencies": { - "fsevents": "^2.1.2" - } - }, - "node_modules/jest-jasmine2": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", - "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", - "peer": true, - "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^26.6.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "throat": "^5.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-jasmine2/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-jasmine2/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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/jest-jasmine2/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-jasmine2/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==", - "peer": true - }, - "node_modules/jest-jasmine2/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-jasmine2/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-leak-detector": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", - "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", - "peer": true, - "dependencies": { - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-matcher-utils": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", - "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-matcher-utils/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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/jest-matcher-utils/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-matcher-utils/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==", - "peer": true - }, - "node_modules/jest-matcher-utils/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-matcher-utils/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-message-util/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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/jest-message-util/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-message-util/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==", - "peer": true - }, - "node_modules/jest-message-util/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-mock": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", - "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", - "peer": true, - "dependencies": { - "@jest/types": "^26.6.2", - "@types/node": "*" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "peer": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", - "peer": true, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", - "peer": true, - "dependencies": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", - "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", - "peer": true, - "dependencies": { - "@jest/types": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-snapshot": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-resolve/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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/jest-resolve/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-resolve/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==", - "peer": true - }, - "node_modules/jest-resolve/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", - "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", - "peer": true, - "dependencies": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.7.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-docblock": "^26.0.0", - "jest-haste-map": "^26.6.2", - "jest-leak-detector": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "source-map-support": "^0.5.6", - "throat": "^5.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-runner/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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/jest-runner/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runner/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==", - "peer": true - }, - "node_modules/jest-runner/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", - "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", - "peer": true, - "dependencies": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/globals": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0", - "cjs-module-lexer": "^0.6.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^15.4.1" - }, - "bin": { - "jest-runtime": "bin/jest-runtime.js" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-runtime/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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/jest-runtime/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "peer": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/jest-runtime/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runtime/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==", - "peer": true - }, - "node_modules/jest-runtime/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "peer": true - }, - "node_modules/jest-runtime/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "peer": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/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==", - "peer": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "peer": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "peer": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-serializer": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", - "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", - "peer": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-snapshot": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", - "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", - "peer": true, - "dependencies": { - "@babel/types": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.0.0", - "chalk": "^4.0.0", - "expect": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-haste-map": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "natural-compare": "^1.4.0", - "pretty-format": "^26.6.2", - "semver": "^7.3.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-snapshot/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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/jest-snapshot/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-snapshot/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==", - "peer": true - }, - "node_modules/jest-snapshot/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", - "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", - "dependencies": { - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^2.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-util/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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/chalk": { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-util/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-util/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==" - }, - "node_modules/jest-util/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util/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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", - "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", - "peer": true, - "dependencies": { - "@jest/types": "^26.6.2", - "camelcase": "^6.0.0", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "leven": "^3.1.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-validate/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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/jest-validate/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-validate/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==", - "peer": true - }, - "node_modules/jest-validate/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", - "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", - "peer": true, - "dependencies": { - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^26.6.2", - "string-length": "^4.0.1" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-watcher/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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/jest-watcher/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watcher/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==", - "peer": true - }, - "node_modules/jest-watcher/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "peer": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/joi": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", - "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", - "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "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==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "peer": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "peer": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "peer": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jsdom/node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "peer": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsdom/node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "peer": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jsdom/node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "peer": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/jsdom/node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "peer": true - }, - "node_modules/jsdom/node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "peer": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==", - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "peer": true - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "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==" - }, - "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=" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "node_modules/json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=4", - "npm": ">=1.4.28" - } - }, - "node_modules/jsonwebtoken/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/just-debounce": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", - "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==" - }, - "node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/koa-body": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/koa-body/-/koa-body-4.2.0.tgz", - "integrity": "sha512-wdGu7b9amk4Fnk/ytH8GuWwfs4fsB5iNkY8kZPpgQVb04QZSv85T0M8reb+cJmvLE8cjPYvBzRikD3s6qz8OoA==", - "dependencies": { - "@types/formidable": "^1.0.31", - "co-body": "^5.1.1", - "formidable": "^1.1.1" - } - }, - "node_modules/last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", - "dependencies": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", - "dependencies": { - "flush-write-stream": "^1.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "peer": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dependencies": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/liftoff/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "peer": true - }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" - }, - "node_modules/loglevel": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", - "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", - "dependencies": { - "get-func-name": "^2.0.0" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "peer": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "node_modules/make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/make-iterator/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "peer": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "dependencies": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/matchdep/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/matchdep/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micro": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/micro/-/micro-9.4.1.tgz", - "integrity": "sha512-Lpjcbp6Y9GJIfewxDfTmu9eW0rt0MGo+Gs1d3yJLFa7mhErtKkCngGhDbA/O1gqUjEwsHh+jWPg8BJ0Bx4AgFA==", - "dependencies": { - "arg": "4.1.0", - "content-type": "1.0.4", - "raw-body": "2.4.1" - }, - "bin": { - "micro": "bin/micro.js" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/micro/node_modules/arg": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", - "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==" - }, - "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/microtime": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/microtime/-/microtime-3.1.1.tgz", - "integrity": "sha512-to1r7o24cDsud9IhN6/8wGmMx5R2kT0w2Xwm5okbYI3d1dk6Xv0m+Z+jg2vS9pt+ocgQHTCtgs/YuyJhySzxNg==", - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^5.0.0", - "node-gyp-build": "^4.4.0" - }, - "engines": { - "node": ">= 14.13.0" - } - }, - "node_modules/migrate": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/migrate/-/migrate-1.8.0.tgz", - "integrity": "sha512-K18j+/k0M/MWjhAwxc6t5WST9G4yAdbUEy04Y7XcTiTf62QQPDcMKcoxj5lpMvWjRJPG0QEnm0UPlmMoM0bRRQ==", - "dependencies": { - "chalk": "^2.4.2", - "commander": "^2.20.3", - "dateformat": "^3.0.3", - "dotenv": "^16.0.0", - "inherits": "^2.0.3", - "minimatch": "^5.0.1", - "mkdirp": "^0.5.1", - "slug": "^5.3.0" - }, - "bin": { - "migrate": "bin/migrate", - "migrate-create": "bin/migrate-create", - "migrate-down": "bin/migrate-down", - "migrate-init": "bin/migrate-init", - "migrate-list": "bin/migrate-list", - "migrate-up": "bin/migrate-up" - }, - "engines": { - "node": ">= 0.4.x" - } - }, - "node_modules/migrate/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==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/migrate/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/migrate/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==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/migrate/node_modules/dotenv": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", - "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/migrate/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/migrate/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==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/moesif-nodejs": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/moesif-nodejs/-/moesif-nodejs-3.2.2.tgz", - "integrity": "sha512-XP8ocHg/27jiEEQQpu6nJl04/H7Ivg45oVwoyXie4dR7fdujHH+r2/8TwWgM27QIFdHsk84xQB7pYD5hJN/JLA==", - "dependencies": { - "bytes": "^3.1.1", - "card-validator": "^8.1.1", - "content-type": "^1.0.4", - "crypto-js": "^4.1.1", - "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", - "koa-body": "^4.2.0", - "lodash": "^4.17.19", - "moesifapi": "^2.0.10", - "raw-body": "^2.4.2", - "request-ip": "^2.1.3", - "uuid4": "^2.0.2" - } - }, - "node_modules/moesif-nodejs/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/moesif-nodejs/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/moesif-nodejs/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/moesif-nodejs/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/moesif-nodejs/node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/moesif-nodejs/node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/moesif-nodejs/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/moesifapi": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/moesifapi/-/moesifapi-2.0.10.tgz", - "integrity": "sha512-ulN9tNqxEcjH3YMoelBOkIkSN3D2qF+qzNpvG7bhtUmGWP+/bHyBP24EtuGX30VAA+3jHL9XNin28RD8teriFA==", - "dependencies": { - "request": "^2.88.0" - } - }, - "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==" - }, - "node_modules/mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "node_modules/nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", - "optional": true - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "peer": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "peer": true - }, - "node_modules/needle": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", - "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/next": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/next/-/next-12.2.5.tgz", - "integrity": "sha512-tBdjqX5XC/oFs/6gxrZhjmiq90YWizUYU6qOWAfat7zJwrwapJ+BYgX2PmiacunXMaRpeVT4vz5MSPSLgNkrpA==", - "peer": true, - "dependencies": { - "@next/env": "12.2.5", - "@swc/helpers": "0.4.3", - "caniuse-lite": "^1.0.30001332", - "postcss": "8.4.14", - "styled-jsx": "5.0.4", - "use-sync-external-store": "1.2.0" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=12.22.0" - }, - "optionalDependencies": { - "@next/swc-android-arm-eabi": "12.2.5", - "@next/swc-android-arm64": "12.2.5", - "@next/swc-darwin-arm64": "12.2.5", - "@next/swc-darwin-x64": "12.2.5", - "@next/swc-freebsd-x64": "12.2.5", - "@next/swc-linux-arm-gnueabihf": "12.2.5", - "@next/swc-linux-arm64-gnu": "12.2.5", - "@next/swc-linux-arm64-musl": "12.2.5", - "@next/swc-linux-x64-gnu": "12.2.5", - "@next/swc-linux-x64-musl": "12.2.5", - "@next/swc-win32-arm64-msvc": "12.2.5", - "@next/swc-win32-ia32-msvc": "12.2.5", - "@next/swc-win32-x64-msvc": "12.2.5" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^6.0.0 || ^7.0.0", - "react": "^17.0.2 || ^18.0.0-0", - "react-dom": "^17.0.2 || ^18.0.0-0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "peer": true - }, - "node_modules/node-addon-api": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", - "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==" - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "peer": true - }, - "node_modules/node-notifier": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", - "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", - "optional": true, - "peer": true, - "dependencies": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - } - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "peer": true - }, - "node_modules/nodemon": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", - "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", - "hasInstallScript": true, - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nodemon/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/nodemon/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/nodemon/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==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-7.0.3.tgz", - "integrity": "sha512-RiCOdwdPnzvwcBFJE4iI1ss3dMVRIrEzFpn8ftje6iBfzBInqlnRrNhxcLwBEKjPPXQKzm1Ptlxtaiv9wdcj5w==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "dependencies": { - "once": "^1.3.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/npm": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/npm/-/npm-7.24.2.tgz", - "integrity": "sha512-120p116CE8VMMZ+hk8IAb1inCPk4Dj3VZw29/n2g6UI77urJKVYb7FZUDW8hY+EBnfsjI/2yrobBgFyzo7YpVQ==", - "bundleDependencies": [ - "@isaacs/string-locale-compare", - "@npmcli/arborist", - "@npmcli/ci-detect", - "@npmcli/config", - "@npmcli/map-workspaces", - "@npmcli/package-json", - "@npmcli/run-script", - "abbrev", - "ansicolors", - "ansistyles", - "archy", - "cacache", - "chalk", - "chownr", - "cli-columns", - "cli-table3", - "columnify", - "fastest-levenshtein", - "glob", - "graceful-fs", - "hosted-git-info", - "ini", - "init-package-json", - "is-cidr", - "json-parse-even-better-errors", - "libnpmaccess", - "libnpmdiff", - "libnpmexec", - "libnpmfund", - "libnpmhook", - "libnpmorg", - "libnpmpack", - "libnpmpublish", - "libnpmsearch", - "libnpmteam", - "libnpmversion", - "make-fetch-happen", - "minipass", - "minipass-pipeline", - "mkdirp", - "mkdirp-infer-owner", - "ms", - "node-gyp", - "nopt", - "npm-audit-report", - "npm-install-checks", - "npm-package-arg", - "npm-pick-manifest", - "npm-profile", - "npm-registry-fetch", - "npm-user-validate", - "npmlog", - "opener", - "pacote", - "parse-conflict-json", - "qrcode-terminal", - "read", - "read-package-json", - "read-package-json-fast", - "readdir-scoped-modules", - "rimraf", - "semver", - "ssri", - "tar", - "text-table", - "tiny-relative-date", - "treeverse", - "validate-npm-package-name", - "which", - "write-file-atomic" - ], - "dependencies": { - "@isaacs/string-locale-compare": "*", - "@npmcli/arborist": "*", - "@npmcli/ci-detect": "*", - "@npmcli/config": "*", - "@npmcli/map-workspaces": "*", - "@npmcli/package-json": "*", - "@npmcli/run-script": "*", - "abbrev": "*", - "ansicolors": "*", - "ansistyles": "*", - "archy": "*", - "cacache": "*", - "chalk": "*", - "chownr": "*", - "cli-columns": "*", - "cli-table3": "*", - "columnify": "*", - "fastest-levenshtein": "*", - "glob": "*", - "graceful-fs": "*", - "hosted-git-info": "*", - "ini": "*", - "init-package-json": "*", - "is-cidr": "*", - "json-parse-even-better-errors": "*", - "libnpmaccess": "*", - "libnpmdiff": "*", - "libnpmexec": "*", - "libnpmfund": "*", - "libnpmhook": "*", - "libnpmorg": "*", - "libnpmpack": "*", - "libnpmpublish": "*", - "libnpmsearch": "*", - "libnpmteam": "*", - "libnpmversion": "*", - "make-fetch-happen": "*", - "minipass": "*", - "minipass-pipeline": "*", - "mkdirp": "*", - "mkdirp-infer-owner": "*", - "ms": "*", - "node-gyp": "*", - "nopt": "*", - "npm-audit-report": "*", - "npm-install-checks": "*", - "npm-package-arg": "*", - "npm-pick-manifest": "*", - "npm-profile": "*", - "npm-registry-fetch": "*", - "npm-user-validate": "*", - "npmlog": "*", - "opener": "*", - "pacote": "*", - "parse-conflict-json": "*", - "qrcode-terminal": "*", - "read": "*", - "read-package-json": "*", - "read-package-json-fast": "*", - "readdir-scoped-modules": "*", - "rimraf": "*", - "semver": "*", - "ssri": "*", - "tar": "*", - "text-table": "*", - "tiny-relative-date": "*", - "treeverse": "*", - "validate-npm-package-name": "*", - "which": "*", - "write-file-atomic": "*" - }, - "bin": { - "npm": "bin/npm-cli.js", - "npx": "bin/npx-cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/npm/node_modules/@gar/promisify": { - "version": "1.1.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "2.9.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@isaacs/string-locale-compare": "^1.0.1", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^1.0.2", - "@npmcli/metavuln-calculator": "^1.1.0", - "@npmcli/move-file": "^1.1.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^1.0.1", - "@npmcli/package-json": "^1.0.1", - "@npmcli/run-script": "^1.8.2", - "bin-links": "^2.2.1", - "cacache": "^15.0.3", - "common-ancestor-path": "^1.0.1", - "json-parse-even-better-errors": "^2.3.1", - "json-stringify-nice": "^1.1.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^8.1.5", - "npm-pick-manifest": "^6.1.0", - "npm-registry-fetch": "^11.0.0", - "pacote": "^11.3.5", - "parse-conflict-json": "^1.1.1", - "proc-log": "^1.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "ssri": "^8.0.1", - "treeverse": "^1.0.4", - "walk-up-path": "^1.0.0" - }, - "bin": { - "arborist": "bin/index.js" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/@npmcli/ci-detect": { - "version": "1.3.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/config": { - "version": "2.3.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "ini": "^2.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "semver": "^7.3.4", - "walk-up-path": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/@npmcli/disparity-colors": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "ansi-styles": "^4.3.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/@npmcli/fs": { - "version": "1.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "node_modules/npm/node_modules/@npmcli/git": { - "version": "2.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^6.0.0", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^6.1.1", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - } - }, - "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "installed-package-contents": "index.js" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "1.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^7.1.6", - "minimatch": "^3.0.4", - "read-package-json-fast": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "1.1.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "cacache": "^15.0.5", - "pacote": "^11.1.11", - "semver": "^7.3.2" - } - }, - "node_modules/npm/node_modules/@npmcli/move-file": { - "version": "1.1.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/@npmcli/name-from-folder": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/node-gyp": { - "version": "1.0.2", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^2.3.1" - } - }, - "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "1.3.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "infer-owner": "^1.0.4" - } - }, - "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "1.8.6", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/node-gyp": "^1.0.2", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^7.1.0", - "read-package-json-fast": "^2.0.1" - } - }, - "node_modules/npm/node_modules/@tootallnate/once": { - "version": "1.1.2", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/abbrev": { - "version": "1.1.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/agent-base": { - "version": "6.0.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/npm/node_modules/agentkeepalive": { - "version": "4.1.4", - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/npm/node_modules/aggregate-error": { - "version": "3.1.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/ajv": { - "version": "6.12.6", - "inBundle": true, - "license": "MIT", - "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/npm/node_modules/ansi-regex": { - "version": "2.1.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/ansi-styles": { - "version": "4.3.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/npm/node_modules/ansicolors": { - "version": "0.3.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/ansistyles": { - "version": "0.1.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/aproba": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/archy": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/are-we-there-yet": { - "version": "1.1.6", - "inBundle": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/asap": { - "version": "2.0.6", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/asn1": { - "version": "0.2.4", - "inBundle": true, - "license": "MIT", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/npm/node_modules/assert-plus": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/npm/node_modules/asynckit": { - "version": "0.4.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/aws-sign2": { - "version": "0.7.0", - "inBundle": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/aws4": { - "version": "1.11.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/balanced-match": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "inBundle": true, - "license": "BSD-3-Clause", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/npm/node_modules/bin-links": { - "version": "2.2.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "cmd-shim": "^4.0.1", - "mkdirp": "^1.0.3", - "npm-normalize-package-bin": "^1.0.0", - "read-cmd-shim": "^2.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^3.0.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/binary-extensions": { - "version": "2.2.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/brace-expansion": { - "version": "1.1.11", - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/npm/node_modules/builtins": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/cacache": { - "version": "15.3.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/caseless": { - "version": "0.12.0", - "inBundle": true, - "license": "Apache-2.0" - }, - "node_modules/npm/node_modules/chalk": { - "version": "4.1.2", - "inBundle": true, - "license": "MIT", - "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/npm/node_modules/chownr": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/cidr-regex": { - "version": "3.1.1", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "ip-regex": "^4.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/clean-stack": { - "version": "2.2.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/cli-columns": { - "version": "3.1.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^2.0.0", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/npm/node_modules/cli-table3": { - "version": "0.6.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "object-assign": "^4.1.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "colors": "^1.1.2" - } - }, - "node_modules/npm/node_modules/cli-table3/node_modules/ansi-regex": { - "version": "5.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/cli-table3/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/cli-table3/node_modules/string-width": { - "version": "4.2.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/cli-table3/node_modules/strip-ansi": { - "version": "6.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/clone": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/npm/node_modules/cmd-shim": { - "version": "4.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "mkdirp-infer-owner": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/code-point-at": { - "version": "1.1.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/color-convert": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/npm/node_modules/color-name": { - "version": "1.1.4", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/color-support": { - "version": "1.1.3", - "inBundle": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/npm/node_modules/colors": { - "version": "1.4.0", - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/npm/node_modules/columnify": { - "version": "1.5.4", - "inBundle": true, - "license": "MIT", - "dependencies": { - "strip-ansi": "^3.0.0", - "wcwidth": "^1.0.0" - } - }, - "node_modules/npm/node_modules/combined-stream": { - "version": "1.0.8", - "inBundle": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/npm/node_modules/common-ancestor-path": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/concat-map": { - "version": "0.0.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/console-control-strings": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/core-util-is": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/dashdash": { - "version": "1.14.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/npm/node_modules/debug": { - "version": "4.3.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/npm/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/debuglog": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/defaults": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - } - }, - "node_modules/npm/node_modules/delayed-stream": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/npm/node_modules/delegates": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/depd": { - "version": "1.1.2", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/npm/node_modules/dezalgo": { - "version": "1.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/diff": { - "version": "5.0.0", - "inBundle": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/npm/node_modules/ecc-jsbn": { - "version": "0.1.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/npm/node_modules/emoji-regex": { - "version": "8.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/encoding": { - "version": "0.1.13", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/npm/node_modules/env-paths": { - "version": "2.2.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/err-code": { - "version": "2.0.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/extend": { - "version": "3.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/extsprintf": { - "version": "1.3.0", - "engines": [ - "node >=0.6.0" - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/fast-deep-equal": { - "version": "3.1.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/fastest-levenshtein": { - "version": "1.0.12", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/forever-agent": { - "version": "0.6.1", - "inBundle": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/fs-minipass": { - "version": "2.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/fs.realpath": { - "version": "1.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/function-bind": { - "version": "1.1.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/gauge": { - "version": "3.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1 || ^2.0.0", - "strip-ansi": "^3.0.1 || ^4.0.0", - "wide-align": "^1.1.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/getpass": { - "version": "0.1.7", - "inBundle": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/npm/node_modules/glob": { - "version": "7.2.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/graceful-fs": { - "version": "4.2.8", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/har-schema": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=4" - } - }, - "node_modules/npm/node_modules/har-validator": { - "version": "5.1.5", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/has": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/npm/node_modules/has-flag": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/hosted-git-info": { - "version": "4.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/http-cache-semantics": { - "version": "4.1.0", - "inBundle": true, - "license": "BSD-2-Clause" - }, - "node_modules/npm/node_modules/http-proxy-agent": { - "version": "4.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/http-signature": { - "version": "1.2.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/npm/node_modules/https-proxy-agent": { - "version": "5.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/humanize-ms": { - "version": "1.2.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" - } - }, - "node_modules/npm/node_modules/iconv-lite": { - "version": "0.6.3", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/ignore-walk": { - "version": "3.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "node_modules/npm/node_modules/imurmurhash": { - "version": "0.1.4", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/npm/node_modules/indent-string": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/infer-owner": { - "version": "1.0.4", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/inflight": { - "version": "1.0.6", - "inBundle": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/inherits": { - "version": "2.0.4", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/ini": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/init-package-json": { - "version": "2.0.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-package-arg": "^8.1.5", - "promzard": "^0.3.0", - "read": "~1.0.1", - "read-package-json": "^4.1.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/ip": { - "version": "1.1.5", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/ip-regex": { - "version": "4.3.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/is-cidr": { - "version": "4.0.2", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "cidr-regex": "^3.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/is-core-module": { - "version": "2.7.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/npm/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/npm/node_modules/is-lambda": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/is-typedarray": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/isexe": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/isstream": { - "version": "0.1.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/jsbn": { - "version": "0.1.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/json-schema": { - "version": "0.2.3", - "inBundle": true - }, - "node_modules/npm/node_modules/json-schema-traverse": { - "version": "0.4.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/json-stringify-nice": { - "version": "1.1.4", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/json-stringify-safe": { - "version": "5.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/jsonparse": { - "version": "1.3.1", - "engines": [ - "node >= 0.2.0" - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/jsprim": { - "version": "1.4.1", - "engines": [ - "node >=0.6.0" - ], - "inBundle": true, - "license": "MIT", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "node_modules/npm/node_modules/just-diff": { - "version": "3.1.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/just-diff-apply": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/libnpmaccess": { - "version": "4.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^8.1.2", - "npm-registry-fetch": "^11.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/libnpmdiff": { - "version": "2.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/disparity-colors": "^1.0.1", - "@npmcli/installed-package-contents": "^1.0.7", - "binary-extensions": "^2.2.0", - "diff": "^5.0.0", - "minimatch": "^3.0.4", - "npm-package-arg": "^8.1.4", - "pacote": "^11.3.4", - "tar": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/libnpmexec": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^2.3.0", - "@npmcli/ci-detect": "^1.3.0", - "@npmcli/run-script": "^1.8.4", - "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^8.1.2", - "pacote": "^11.3.1", - "proc-log": "^1.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", - "walk-up-path": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/libnpmfund": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^2.5.0" - } - }, - "node_modules/npm/node_modules/libnpmhook": { - "version": "6.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^11.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/libnpmorg": { - "version": "2.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^11.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/libnpmpack": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/run-script": "^1.8.3", - "npm-package-arg": "^8.1.0", - "pacote": "^11.2.6" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/libnpmpublish": { - "version": "4.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "normalize-package-data": "^3.0.2", - "npm-package-arg": "^8.1.2", - "npm-registry-fetch": "^11.0.0", - "semver": "^7.1.3", - "ssri": "^8.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/libnpmsearch": { - "version": "3.1.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-registry-fetch": "^11.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/libnpmteam": { - "version": "2.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^11.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/libnpmversion": { - "version": "1.2.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^2.0.7", - "@npmcli/run-script": "^1.8.4", - "json-parse-even-better-errors": "^2.3.1", - "semver": "^7.3.5", - "stringify-package": "^1.0.1" - } - }, - "node_modules/npm/node_modules/lru-cache": { - "version": "6.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/make-fetch-happen": { - "version": "9.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/mime-db": { - "version": "1.49.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/npm/node_modules/mime-types": { - "version": "2.1.32", - "inBundle": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.49.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/npm/node_modules/minimatch": { - "version": "3.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/minipass": { - "version": "3.1.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-collect": { - "version": "1.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-fetch": { - "version": "1.4.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "optionalDependencies": { - "encoding": "^0.1.12" - } - }, - "node_modules/npm/node_modules/minipass-flush": { - "version": "1.0.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-json-stream": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/npm/node_modules/minipass-pipeline": { - "version": "1.2.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-sized": { - "version": "1.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minizlib": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/mkdirp": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/mkdirp-infer-owner": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/ms": { - "version": "2.1.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/mute-stream": { - "version": "0.0.8", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/negotiator": { - "version": "0.6.2", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/npm/node_modules/node-gyp": { - "version": "7.1.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.3", - "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "request": "^2.88.2", - "rimraf": "^3.0.2", - "semver": "^7.3.2", - "tar": "^6.0.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": ">= 10.12.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/aproba": { - "version": "1.2.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { - "version": "2.7.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { - "version": "4.1.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/string-width": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/nopt": { - "version": "5.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/normalize-package-data": { - "version": "3.0.3", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/npm-audit-report": { - "version": "2.1.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "chalk": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/npm-bundled": { - "version": "1.1.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/npm/node_modules/npm-install-checks": { - "version": "4.0.0", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/npm-package-arg": { - "version": "8.1.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/npm-packlist": { - "version": "2.2.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.6", - "ignore-walk": "^3.0.3", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "npm-packlist": "bin/index.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "6.1.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^8.1.2", - "semver": "^7.3.4" - } - }, - "node_modules/npm/node_modules/npm-profile": { - "version": "5.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-registry-fetch": "^11.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "11.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "make-fetch-happen": "^9.0.1", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/npm-user-validate": { - "version": "1.0.1", - "inBundle": true, - "license": "BSD-2-Clause" - }, - "node_modules/npm/node_modules/npmlog": { - "version": "5.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, - "node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/number-is-nan": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/oauth-sign": { - "version": "0.9.0", - "inBundle": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/object-assign": { - "version": "4.1.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/once": { - "version": "1.4.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/opener": { - "version": "1.5.2", - "inBundle": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" - } - }, - "node_modules/npm/node_modules/p-map": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/pacote": { - "version": "11.3.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^2.1.0", - "@npmcli/installed-package-contents": "^1.0.6", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^1.8.2", - "cacache": "^15.0.5", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.3", - "mkdirp": "^1.0.3", - "npm-package-arg": "^8.0.1", - "npm-packlist": "^2.1.4", - "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^11.0.0", - "promise-retry": "^2.0.1", - "read-package-json-fast": "^2.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.0" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/parse-conflict-json": { - "version": "1.1.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "just-diff": "^3.0.1", - "just-diff-apply": "^3.0.0" - } - }, - "node_modules/npm/node_modules/path-is-absolute": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/performance-now": { - "version": "2.1.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/proc-log": { - "version": "1.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/promise-all-reject-late": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/promise-call-limit": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/promise-inflight": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/promise-retry": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/promzard": { - "version": "0.3.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "read": "1" - } - }, - "node_modules/npm/node_modules/psl": { - "version": "1.8.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/punycode": { - "version": "2.1.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/qrcode-terminal": { - "version": "0.12.0", - "inBundle": true, - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" - } - }, - "node_modules/npm/node_modules/qs": { - "version": "6.5.2", - "inBundle": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/npm/node_modules/read": { - "version": "1.0.7", - "inBundle": true, - "license": "ISC", - "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/npm/node_modules/read-cmd-shim": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/read-package-json": { - "version": "4.1.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/read-package-json-fast": { - "version": "2.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/readable-stream": { - "version": "3.6.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/readdir-scoped-modules": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, - "node_modules/npm/node_modules/request": { - "version": "2.88.2", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "inBundle": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/npm/node_modules/request/node_modules/tough-cookie": { - "version": "2.5.0", - "inBundle": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/npm/node_modules/retry": { - "version": "0.12.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/npm/node_modules/rimraf": { - "version": "3.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/safer-buffer": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/semver": { - "version": "7.3.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/set-blocking": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/signal-exit": { - "version": "3.0.3", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/smart-buffer": { - "version": "4.2.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/npm/node_modules/socks": { - "version": "2.6.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ip": "^1.1.5", - "smart-buffer": "^4.1.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "6.1.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/spdx-correct": { - "version": "3.1.1", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.3.0", - "inBundle": true, - "license": "CC-BY-3.0" - }, - "node_modules/npm/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.10", - "inBundle": true, - "license": "CC0-1.0" - }, - "node_modules/npm/node_modules/sshpk": { - "version": "1.16.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/ssri": { - "version": "8.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/string_decoder": { - "version": "1.3.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/npm/node_modules/string-width": { - "version": "2.1.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm/node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/npm/node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm/node_modules/stringify-package": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/strip-ansi": { - "version": "3.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/supports-color": { - "version": "7.2.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/tar": { - "version": "6.1.11", - "inBundle": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/text-table": { - "version": "0.2.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/tiny-relative-date": { - "version": "1.3.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/treeverse": { - "version": "1.0.4", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/tunnel-agent": { - "version": "0.6.0", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/tweetnacl": { - "version": "0.14.5", - "inBundle": true, - "license": "Unlicense" - }, - "node_modules/npm/node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "inBundle": true, - "license": "MIT", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/npm/node_modules/unique-filename": { - "version": "1.1.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/npm/node_modules/unique-slug": { - "version": "2.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/npm/node_modules/uri-js": { - "version": "4.4.1", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/npm/node_modules/util-deprecate": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/uuid": { - "version": "3.4.0", - "inBundle": true, - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/npm/node_modules/validate-npm-package-license": { - "version": "3.0.4", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "builtins": "^1.0.3" - } - }, - "node_modules/npm/node_modules/verror": { - "version": "1.10.0", - "engines": [ - "node >=0.6.0" - ], - "inBundle": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/npm/node_modules/walk-up-path": { - "version": "1.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/wcwidth": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/npm/node_modules/which": { - "version": "2.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/wide-align": { - "version": "1.1.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/npm/node_modules/wrappy": { - "version": "1.0.2", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/write-file-atomic": { - "version": "3.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/npm/node_modules/yallist": { - "version": "4.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nwsapi": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", - "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==", - "peer": true - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-path": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", - "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", - "engines": { - "node": ">= 10.12.0" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", - "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", - "dependencies": { - "array.prototype.reduce": "^1.0.4", - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors/node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optimism": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.1.tgz", - "integrity": "sha512-64i+Uw3otrndfq5kaoGNoY7pvOhSsjFEN4bdEFh80MWVk/dbgJfMv7VFDeCT8LxNAlEVhQmdVEbfE7X2nWNIIg==", - "dependencies": { - "@wry/context": "^0.6.0", - "@wry/trie": "^0.3.0" - } - }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "peer": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/optionator/node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "peer": true - }, - "node_modules/ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "dependencies": { - "readable-stream": "^2.0.1" - } - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-each-series": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-event": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", - "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", - "dependencies": { - "p-timeout": "^3.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/paged-request": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/paged-request/-/paged-request-1.0.2.tgz", - "integrity": "sha512-2NXKpT0pWoVo31LQhGOfsqD8wViifq6Ml28H8WrqY0GbMvltvpDPx1YZ6jMeVXNbywjECdEhmC2/uFFS1MdMFQ==", - "dependencies": { - "needle": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/parse-link-header": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-1.0.1.tgz", - "integrity": "sha512-Z0gpfHmwCIKDr5rRzjypL+p93aHVWO7e+0rFcUl9E3sC67njjs+xHFenuboSXZGlvYtmQqRzRaE3iFpTUnLmFQ==", - "dependencies": { - "xtend": "~4.0.1" - } - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "peer": true - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", - "dependencies": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=8" - } - }, - "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=", - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dependencies": { - "path-root-regex": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "engines": { - "node": "*" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "peer": true - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "engines": { - "node": ">=4" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "peer": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/platform": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", - "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "peer": true, - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "peer": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/pretty-format/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/pretty-format/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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/pretty-format/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/pretty-format/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==" - }, - "node_modules/pretty-format/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/prompt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.2.0.tgz", - "integrity": "sha512-iGerYRpRUg5ZyC+FJ/25G5PUKuWAGRjW1uOlhX7Pi3O5YygdK6R+KEaBjRbHSkU5vfS5PZCltSPZdDtUYwRCZA==", - "dependencies": { - "async": "~0.9.0", - "colors": "^1.1.2", - "read": "1.0.x", - "revalidator": "0.1.x", - "winston": "2.x" - }, - "engines": { - "node": ">= 0.6.6" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "peer": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" - }, - "node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.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==", - "engines": { - "node": ">=6" - } - }, - "node_modules/puppeteer": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-16.1.0.tgz", - "integrity": "sha512-lhykJLbH2bbBaP3NfYI2Vj0T4ctrdfVdEVf8glZITPnLfqrJ0nfUzAYuIz5YcA79k5lmFKANIhEXex+jQChU3g==", - "hasInstallScript": true, - "dependencies": { - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.1019158", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.8.1" - }, - "engines": { - "node": ">=14.1.0" - } - }, - "node_modules/puppeteer/node_modules/debug": { - "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" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/puppeteer/node_modules/ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", - "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.3", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body/node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "node_modules/raw-body/node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-cookie": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/react-cookie/-/react-cookie-4.1.1.tgz", - "integrity": "sha512-ffn7Y7G4bXiFbnE+dKhHhbP+b8I34mH9jqnm8Llhj89zF4nPxPutxHT1suUqMeCEhLDBI7InYwf1tpaSoK5w8A==", - "dependencies": { - "@types/hoist-non-react-statics": "^3.0.1", - "hoist-non-react-statics": "^3.0.0", - "universal-cookie": "^4.0.0" - }, - "peerDependencies": { - "react": ">= 16.3.0" - } - }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", - "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", - "dependencies": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "peer": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "peer": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "dependencies": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", - "dependencies": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", - "dependencies": { - "is-finite": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", - "dependencies": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request-ip": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-2.2.0.tgz", - "integrity": "sha512-Hn4zUAr+XHbUs2RrfHur62t7+UhvtevqK32ordFewguEfNHUkhSdYgbG7PDGmXZEzqEXll9bei0+VMe6gkmuUQ==", - "dependencies": { - "is_js": "^0.9.0" - } - }, - "node_modules/request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "peer": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", - "dependencies": { - "value-or-function": "^3.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated" - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "engines": { - "node": ">=0.12" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/revalidator": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", - "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/rimraf": { - "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" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", - "peer": true, - "engines": { - "node": "6.* || >= 7.*" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "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==" - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", - "peer": true, - "dependencies": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - }, - "bin": { - "sane": "src/cli.js" - }, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/sane/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "peer": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/sane/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "peer": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "peer": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/sane/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "peer": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sane/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "peer": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "peer": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sane/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "peer": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "peer": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/sane/node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "peer": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/sane/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "peer": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/sane/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "peer": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "peer": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sane/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "peer": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "peer": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", - "dependencies": { - "sver-compat": "^1.5.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/send/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.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==", - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-env": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/shell-env/-/shell-env-0.3.0.tgz", - "integrity": "sha512-VrC6OSm5riGAFWvlYExA80Rrlfi4STsztNXjyet9Jf20hbiVeeKvJIesb92gJk7zlmpQjB0wOZpy8ClzVdPVWQ==", - "dependencies": { - "default-shell": "^1.0.0", - "execa": "^0.5.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/shell-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/shell-path/-/shell-path-2.1.0.tgz", - "integrity": "sha512-w+mbrnpA+r5jSFS4MgFfxZJ1Wx8qMKkR4gvQ+wgaZEoZCMMYZ6Yl/dcNjW/zLMfmx5a9IVIFwGAtUJcnDMmFrg==", - "dependencies": { - "shell-env": "^0.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "optional": true, - "peer": true - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/simple-git": { - "version": "2.47.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.47.0.tgz", - "integrity": "sha512-+HfCpqPBEZTPWiW9fPdbiPJDslM22MLqrktfzNKyI2pWaJa6DhfNVx4Mds04KZzVv5vjC9/ksw3y5gVf8ECWDg==", - "dependencies": { - "@kwsites/file-exists": "^1.1.1", - "@kwsites/promise-deferred": "^1.1.1", - "debug": "^4.3.2" - } - }, - "node_modules/simple-update-notifier": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", - "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", - "dependencies": { - "semver": "~7.0.0" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "peer": true - }, - "node_modules/slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/slug": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/slug/-/slug-5.3.0.tgz", - "integrity": "sha512-h7yD2UDVyMcQRv/WLSjq7HDH6ToO/22MB381zfx6/ebtdWUlGcyxpJNVHl6WFvKjIMHf5ZxANFp/srsy4mfT/w==" - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated" - }, - "node_modules/sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/spawn-args": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/spawn-args/-/spawn-args-0.2.0.tgz", - "integrity": "sha1-+30L0dcP1DFr2ePew4nmX51jYbs=" - }, - "node_modules/spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=" - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", - "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==" - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "peer": true - }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "engines": { - "node": "*" - } - }, - "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", - "peer": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stoppable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", - "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", - "engines": { - "node": ">=4", - "npm": ">=6" - } - }, - "node_modules/stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" - }, - "node_modules/streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "peer": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-length/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-length/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==", - "peer": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend/node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart/node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/styled-jsx": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.4.tgz", - "integrity": "sha512-sDFWLbg4zR+UkNzfk5lPilyIgtpddfxXEULxhujorr5jtePTUqiPDc5BC0v1NRqTr/WaFBGQQUoYToGlF4B2KQ==", - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/subscriptions-transport-ws": { - "version": "0.9.19", - "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz", - "integrity": "sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw==", - "deprecated": "The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md", - "dependencies": { - "backo2": "^1.0.2", - "eventemitter3": "^3.1.0", - "iterall": "^1.2.1", - "symbol-observable": "^1.0.4", - "ws": "^5.2.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependencies": { - "graphql": ">=0.10.0" - } - }, - "node_modules/subscriptions-transport-ws/node_modules/symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz", - "integrity": "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", - "dependencies": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "peer": true - }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-fs/node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "peer": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "peer": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "peer": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "node_modules/time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/timeout-as-promise": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/timeout-as-promise/-/timeout-as-promise-1.0.0.tgz", - "integrity": "sha1-c2foEfyZKs/Nzaq/LlDfr4shV28=" - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "peer": true - }, - "node_modules/to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", - "dependencies": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", - "dependencies": { - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dependencies": { - "nopt": "~1.0.10" - }, - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ts-invariant": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", - "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-jest": { - "version": "26.5.6", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.6.tgz", - "integrity": "sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==", - "dependencies": { - "bs-logger": "0.x", - "buffer-from": "1.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^26.1.0", - "json5": "2.x", - "lodash": "4.x", - "make-error": "1.x", - "mkdirp": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "jest": ">=26 <27", - "typescript": ">=3.8 <5.0" - } - }, - "node_modules/ts-jest/node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ts-jest/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-jest/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-node": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", - "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", - "dependencies": { - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "typescript": ">=2.7" - } - }, - "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "peer": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "peer": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbox-primitive/node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "node_modules/unbzip2-stream/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" - }, - "node_modules/undertaker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", - "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", - "dependencies": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uniqid": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.4.0.tgz", - "integrity": "sha512-38JRbJ4Fj94VmnC7G/J/5n5SC7Ab46OM5iNtSstB/ko3l1b5g7ALt4qzHFgGciFkyiRNtDXtLNb+VsxtMSE77A==" - }, - "node_modules/unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dependencies": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "node_modules/universal-cookie": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-4.0.4.tgz", - "integrity": "sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw==", - "dependencies": { - "@types/cookie": "^0.3.3", - "cookie": "^0.4.0" - } - }, - "node_modules/universal-cookie/node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "peer": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "peer": true, - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "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" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated" - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "peer": true, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/util.promisify": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", - "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "for-each": "^0.3.3", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/uuid4": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid4/-/uuid4-2.0.3.tgz", - "integrity": "sha512-CTpAkEVXMNJl2ojgtpLXHgz23dh8z81u6/HEPiQFOvBc/c2pde6TVHmH4uwY0d/GLF3tb7+VDAj4+2eJaQSdZQ==" - }, - "node_modules/v8-to-istanbul": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", - "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/value-or-promise": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", - "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - }, - "node_modules/vinyl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", - "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", - "dependencies": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "dependencies": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", - "dependencies": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-sourcemap/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "peer": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "peer": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/wait-on": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", - "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", - "dependencies": { - "axios": "^0.25.0", - "joi": "^17.6.0", - "lodash": "^4.17.21", - "minimist": "^1.2.5", - "rxjs": "^7.5.4" - }, - "bin": { - "wait-on": "bin/wait-on" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/wait-on/node_modules/axios": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", - "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", - "dependencies": { - "follow-redirects": "^1.14.7" - } - }, - "node_modules/wait-on/node_modules/rxjs": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", - "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "peer": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "peer": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "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" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "node_modules/winston": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.5.tgz", - "integrity": "sha512-TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A==", - "dependencies": { - "async": "~1.0.0", - "colors": "1.0.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "stack-trace": "0.0.x" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/winston/node_modules/async": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", - "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" - }, - "node_modules/winston/node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/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==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "peer": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "peer": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "peer": true - }, - "node_modules/xss": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz", - "integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==", - "dependencies": { - "commander": "^2.20.3", - "cssfilter": "0.0.10" - }, - "bin": { - "xss": "bin/xss" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/yargs/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "engines": { - "node": ">=4" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/zen-observable": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" - }, - "node_modules/zen-observable-ts": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", - "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", - "dependencies": { - "zen-observable": "0.8.15" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "peer": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@apollo/client": { - "version": "3.6.9", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.6.9.tgz", - "integrity": "sha512-Y1yu8qa2YeaCUBVuw08x8NHenFi0sw2I3KCu7Kw9mDSu86HmmtHJkCAifKVrN2iPgDTW/BbP3EpSV8/EQCcxZA==", - "requires": { - "@graphql-typed-document-node/core": "^3.1.1", - "@wry/context": "^0.6.0", - "@wry/equality": "^0.5.0", - "@wry/trie": "^0.3.0", - "graphql-tag": "^2.12.6", - "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.16.1", - "prop-types": "^15.7.2", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.10.3", - "tslib": "^2.3.0", - "zen-observable-ts": "^1.2.5" - } - }, - "@apollo/protobufjs": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.2.tgz", - "integrity": "sha512-vF+zxhPiLtkwxONs6YanSt1EpwpGilThpneExUN5K3tCymuxNnVq2yojTvnpRjv2QfsEIt/n7ozPIIzBLwGIDQ==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - }, - "dependencies": { - "@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" - } - } - }, - "@apollo/react-hooks": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@apollo/react-hooks/-/react-hooks-4.0.0.tgz", - "integrity": "sha512-fCu0cbne3gbUl0QbA8X4L33iuuFVQbC5Jo2MIKRK8CyawR6PoxDpFdFA1kc6033ODZuZZ9Eo4RdeJFlFIIYcLA==", - "requires": { - "@apollo/client": "latest" - }, - "dependencies": { - "@apollo/client": { - "version": "3.6.9", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.6.9.tgz", - "integrity": "sha512-Y1yu8qa2YeaCUBVuw08x8NHenFi0sw2I3KCu7Kw9mDSu86HmmtHJkCAifKVrN2iPgDTW/BbP3EpSV8/EQCcxZA==", - "requires": { - "@graphql-typed-document-node/core": "^3.1.1", - "@wry/context": "^0.6.0", - "@wry/equality": "^0.5.0", - "@wry/trie": "^0.3.0", - "graphql-tag": "^2.12.6", - "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.16.1", - "prop-types": "^15.7.2", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.10.3", - "tslib": "^2.3.0", - "zen-observable-ts": "^1.2.5" - } - } - } - }, - "@apollo/utils.dropunuseddefinitions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz", - "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==", - "requires": {} - }, - "@apollo/utils.keyvaluecache": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.1.tgz", - "integrity": "sha512-nLgYLomqjVimEzQ4cdvVQkcryi970NDvcRVPfd0OPeXhBfda38WjBq+WhQFk+czSHrmrSp34YHBxpat0EtiowA==", - "requires": { - "@apollo/utils.logger": "^1.0.0", - "lru-cache": "^7.10.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==" - } - } - }, - "@apollo/utils.logger": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.0.tgz", - "integrity": "sha512-dx9XrjyisD2pOa+KsB5RcDbWIAdgC91gJfeyLCgy0ctJMjQe7yZK5kdWaWlaOoCeX0z6YI9iYlg7vMPyMpQF3Q==" - }, - "@apollo/utils.printwithreducedwhitespace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz", - "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==", - "requires": {} - }, - "@apollo/utils.removealiases": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz", - "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==", - "requires": {} - }, - "@apollo/utils.sortast": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz", - "integrity": "sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA==", - "requires": { - "lodash.sortby": "^4.7.0" - } - }, - "@apollo/utils.stripsensitiveliterals": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz", - "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==", - "requires": {} - }, - "@apollo/utils.usagereporting": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.0.tgz", - "integrity": "sha512-5PL7hJMkTPmdo3oxPtigRrIyPxDk/ddrUryHPDaezL1lSFExpNzsDd2f1j0XJoHOg350GRd3LyD64caLA2PU1w==", - "requires": { - "@apollo/utils.dropunuseddefinitions": "^1.1.0", - "@apollo/utils.printwithreducedwhitespace": "^1.1.0", - "@apollo/utils.removealiases": "1.0.0", - "@apollo/utils.sortast": "^1.1.0", - "@apollo/utils.stripsensitiveliterals": "^1.2.0", - "apollo-reporting-protobuf": "^3.3.1" - }, - "dependencies": { - "@apollo/protobufjs": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", - "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - } - }, - "@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" - }, - "apollo-reporting-protobuf": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", - "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", - "requires": { - "@apollo/protobufjs": "1.2.4" - } - } - } - }, - "@apollographql/apollo-tools": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz", - "integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==", - "requires": {} - }, - "@apollographql/graphql-playground-html": { - "version": "1.6.27", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.27.tgz", - "integrity": "sha512-tea2LweZvn6y6xFV11K0KC8ETjmm52mQrW+ezgB2O/aTQf8JGyFmMcRPFgUaQZeHbWdm8iisDC6EjOKsXu0nfw==", - "requires": { - "xss": "^1.0.8" - } - }, - "@apollographql/graphql-upload-8-fork": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-upload-8-fork/-/graphql-upload-8-fork-8.1.3.tgz", - "integrity": "sha512-ssOPUT7euLqDXcdVv3Qs4LoL4BPtfermW1IOouaqEmj36TpHYDmYDIbKoSQxikd9vtMumFnP87OybH7sC9fJ6g==", - "requires": { - "@types/express": "*", - "@types/fs-capacitor": "*", - "@types/koa": "*", - "busboy": "^0.3.1", - "fs-capacitor": "^2.0.4", - "http-errors": "^1.7.3", - "object-path": "^0.11.4" - } - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "peer": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", - "peer": true - }, - "@babel/core": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", - "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", - "peer": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.10", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.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" - }, - "dependencies": { - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "peer": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "peer": true - } - } - }, - "@babel/generator": { - "version": "7.18.12", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", - "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", - "peer": true, - "requires": { - "@babel/types": "^7.18.10", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "peer": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "peer": true - } - } - }, - "@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", - "peer": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "peer": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "peer": true - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "peer": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "peer": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "peer": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", - "peer": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", - "peer": true - }, - "@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "peer": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "peer": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", - "peer": true - }, - "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", - "peer": true - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "peer": true - }, - "@babel/helpers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", - "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", - "peer": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "peer": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "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==", - "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==", - "peer": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "peer": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz", - "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==", - "peer": true - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "peer": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - } - }, - "@babel/traverse": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.11.tgz", - "integrity": "sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==", - "peer": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.11", - "@babel/types": "^7.18.10", - "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==", - "peer": true - } - } - }, - "@babel/types": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", - "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", - "peer": true, - "requires": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - }, - "dependencies": { - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "peer": true - } - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "peer": true - }, - "@capacitor/core": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-4.0.1.tgz", - "integrity": "sha512-gita0j7UPoGyHejAUsrW1OrkyDSp7gfHn45fkeQclHRSz7UWLF4hqE1R/6INsVmIFu/amIApxfHed8h3m/Fm7g==", - "peer": true, - "requires": { - "tslib": "^2.1.0" - } - }, - "@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", - "peer": true, - "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - } - }, - "@deep-foundation/deeplinks": { - "version": "0.0.93", - "resolved": "https://registry.npmjs.org/@deep-foundation/deeplinks/-/deeplinks-0.0.93.tgz", - "integrity": "sha512-UIvVax1+QlM94ehM0oSeRRQHwBzq8cV3Ec/jMMFl7j+QXIr8QRqKf7TYipNRt+faFTlfK25wEbDGQJi0elTRPQ==", - "requires": { - "@apollo/client": "^3.5.8", - "@deep-foundation/hasura": "0.0.17", - "@deep-foundation/materialized-path": "^0.0.11", - "@deep-foundation/react-hasura": "0.0.5", - "@deep-foundation/store": "0.0.6", - "@types/jest": "^26.0.22", - "@types/node": "^14.17.34", - "@types/react": "^17.0.19", - "apollo-boost": "^0.4.9", - "apollo-server": "^2.21.0", - "apollo-server-core": "^3.6.1", - "apollo-server-express": "^3.5.0", - "atob": "^2.1.2", - "axios": "^0.24.0", - "body-parser": "^1.19.0", - "buffer": "^6.0.3", - "chai": "^4.3.4", - "cross-env": "^7.0.3", - "debug": "^4.3.3", - "dotenv": "^8.2.0", - "fix-path": "^3.0.0", - "get-port": "^5.1.1", - "gists": "^2.0.0", - "graphql": "^15.5.0", - "graphql-playground-middleware-express": "^1.7.23", - "graphql-tag": "^2.11.0", - "http-proxy-middleware": "^2.0.1", - "internal-ip": "^6.2.0", - "jsonwebtoken": "^8.5.1", - "microtime": "^3.0.0", - "moesif-nodejs": "^3.1.19", - "nodemon": "^2.0.15", - "rimraf": "^3.0.2", - "supports-color": "^9.2.1", - "ts-jest": "^26.5.4", - "uniqid": "^5.3.0", - "wait-on": "^6.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - } - } - }, - "@deep-foundation/hasura": { - "version": "0.0.17", - "resolved": "https://registry.npmjs.org/@deep-foundation/hasura/-/hasura-0.0.17.tgz", - "integrity": "sha512-rtB7gG8/fsX9k6ykLo7/p1zQlD7XcVNv0MetDPjW5Flq65UZsSdT6xaqo4TmdhF7bWTOku6u3f8SW4xOoFgIRw==", - "requires": { - "@apollo/client": "^3.5.5", - "@apollo/react-hooks": "^4.0.0", - "@types/node": "^14.17.14", - "@types/react": "^17.0.19", - "apollo-boost": "^0.4.9", - "apollo-link": "^1.2.14", - "apollo-link-ws": "^1.0.20", - "apollo-server-micro": "^2.21.0", - "axios": "^0.21.1", - "babel-register": "^6.26.0", - "cors": "^2.8.5", - "debug": "^4.3.1", - "dotenv": "^8.2.0", - "express": "^4.17.1", - "migrate": "^1.7.0", - "node-fetch": "^2.6.1", - "normalize-url": "^7.0.2", - "path": "^0.12.7", - "react": "^17.0.1", - "rimraf": "^3.0.2", - "ts-node": "^9.1.1", - "ws": "^7.5.6" - }, - "dependencies": { - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "requires": { - "follow-redirects": "^1.14.0" - } - }, - "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - } - } - }, - "@deep-foundation/materialized-path": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/@deep-foundation/materialized-path/-/materialized-path-0.0.11.tgz", - "integrity": "sha512-VUiqjTRRwWTm+JZd03w5czSwAOzmKN8Y0h0Hse1jtRFz277qWQqPCL2T40QsQODddn8mEMpiHg2eDS7atBKkhA==", - "requires": { - "@types/jest": "^26.0.22", - "@types/node": "^14.0.23", - "@types/react": "^17.0.2", - "benchmark": "^2.1.4", - "chance": "^1.1.7", - "graphql": "^15.5.3", - "microtime": "^3.0.0", - "ts-jest": "^26.5.4", - "typescript": "^3.9.7" - }, - "dependencies": { - "typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==" - } - } - }, - "@deep-foundation/react-hasura": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@deep-foundation/react-hasura/-/react-hasura-0.0.5.tgz", - "integrity": "sha512-3ah7heyiamk3TzEIJ+wA9GLFcarph3e9qjWb/pGIdmZer9aaIOE5hXPba26g4Q7raKmevZK4QC7Cou2/uwbXMA==", - "requires": { - "@apollo/react-hooks": "^4.0.0", - "debug": "^4.3.1" - } - }, - "@deep-foundation/store": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@deep-foundation/store/-/store-0.0.6.tgz", - "integrity": "sha512-KBpyvl9S4Pkl71oAnC6c0pQg3uTQGRN3GMclkinM6OR1UVFXMGMSXKk6DQ8QWWEKJ0KW7evUR2Ha0CW2aW1ptA==", - "requires": { - "debug": "^4.1.1", - "lodash": "^4.17.19", - "react-cookie": "^4.0.3", - "universal-cookie": "^4.0.3" - } - }, - "@graphql-tools/merge": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.3.tgz", - "integrity": "sha512-EfULshN2s2s2mhBwbV9WpGnoehRLe7eIMdZrKfHhxlBWOvtNUd3KSCN0PUdAMd7lj1jXUW9KYdn624JrVn6qzg==", - "requires": { - "@graphql-tools/utils": "8.10.0", - "tslib": "^2.4.0" - } - }, - "@graphql-tools/mock": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.7.3.tgz", - "integrity": "sha512-U9e3tZenFvSTf0TAaFgwqO84cGNEbgzWXvboqJPth873dMag8sOlLyOBZceVzAZP7ptwfLbhm3S0Qq4ffI7mCw==", - "requires": { - "@graphql-tools/schema": "9.0.1", - "@graphql-tools/utils": "8.10.0", - "fast-json-stable-stringify": "^2.1.0", - "tslib": "^2.4.0" - }, - "dependencies": { - "@graphql-tools/schema": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.1.tgz", - "integrity": "sha512-Y6apeiBmvXEz082IAuS/ainnEEQrzMECP1MRIV72eo2WPa6ZtLYPycvIbd56Z5uU2LKP4XcWRgK6WUbCyN16Rw==", - "requires": { - "@graphql-tools/merge": "8.3.3", - "@graphql-tools/utils": "8.10.0", - "tslib": "^2.4.0", - "value-or-promise": "1.0.11" - } - } - } - }, - "@graphql-tools/schema": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz", - "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==", - "requires": { - "@graphql-tools/merge": "8.3.1", - "@graphql-tools/utils": "8.9.0", - "tslib": "^2.4.0", - "value-or-promise": "1.0.11" - }, - "dependencies": { - "@graphql-tools/merge": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz", - "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==", - "requires": { - "@graphql-tools/utils": "8.9.0", - "tslib": "^2.4.0" - } - }, - "@graphql-tools/utils": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", - "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", - "requires": { - "tslib": "^2.4.0" - } - } - } - }, - "@graphql-tools/utils": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.10.0.tgz", - "integrity": "sha512-yI+V373FdXQbYfqdarehn9vRWDZZYuvyQ/xwiv5ez2BbobHrqsexF7qs56plLRaQ8ESYpVAjMQvJWe9s23O0Jg==", - "requires": { - "tslib": "^2.4.0" - } - }, - "@graphql-typed-document-node/core": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", - "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", - "requires": {} - }, - "@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "peer": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "peer": true - }, - "@jest/console": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", - "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", - "peer": true, - "requires": { - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^26.6.2", - "jest-util": "^26.6.2", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": 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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/core": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", - "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", - "peer": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/reporters": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^26.6.2", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-resolve-dependencies": "^26.6.3", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "jest-watcher": "^26.6.2", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "peer": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "peer": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/environment": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", - "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", - "peer": true, - "requires": { - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2" - } - }, - "@jest/fake-timers": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", - "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", - "peer": true, - "requires": { - "@jest/types": "^26.6.2", - "@sinonjs/fake-timers": "^6.0.1", - "@types/node": "*", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" - } - }, - "@jest/globals": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", - "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", - "peer": true, - "requires": { - "@jest/environment": "^26.6.2", - "@jest/types": "^26.6.2", - "expect": "^26.6.2" - } - }, - "@jest/reporters": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", - "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", - "peer": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "node-notifier": "^8.0.0", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^7.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": 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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/source-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", - "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", - "peer": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": true - } - } - }, - "@jest/test-result": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", - "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", - "peer": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", - "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", - "peer": true, - "requires": { - "@jest/test-result": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3" - } - }, - "@jest/transform": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", - "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", - "peer": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^26.6.2", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-util": "^26.6.2", - "micromatch": "^4.0.2", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": 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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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==", - "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==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "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==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@josephg/resolvable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", - "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==" - }, - "@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==", - "peer": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "peer": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "peer": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "peer": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", - "peer": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@kwsites/file-exists": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", - "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", - "requires": { - "debug": "^4.1.1" - } - }, - "@kwsites/promise-deferred": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", - "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==" - }, - "@next/env": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.2.5.tgz", - "integrity": "sha512-vLPLV3cpPGjUPT3PjgRj7e3nio9t6USkuew3JE/jMeon/9Mvp1WyR18v3iwnCuX7eUAm1HmAbJHHLAbcu/EJcw==", - "peer": true - }, - "@next/swc-android-arm-eabi": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.5.tgz", - "integrity": "sha512-cPWClKxGhgn2dLWnspW+7psl3MoLQUcNqJqOHk2BhNcou9ARDtC0IjQkKe5qcn9qg7I7U83Gp1yh2aesZfZJMA==", - "optional": true, - "peer": true - }, - "@next/swc-android-arm64": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.2.5.tgz", - "integrity": "sha512-vMj0efliXmC5b7p+wfcQCX0AfU8IypjkzT64GiKJD9PgiA3IILNiGJr1fw2lyUDHkjeWx/5HMlMEpLnTsQslwg==", - "optional": true, - "peer": true - }, - "@next/swc-darwin-arm64": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.5.tgz", - "integrity": "sha512-VOPWbO5EFr6snla/WcxUKtvzGVShfs302TEMOtzYyWni6f9zuOetijJvVh9CCTzInnXAZMtHyNhefijA4HMYLg==", - "optional": true, - "peer": true - }, - "@next/swc-darwin-x64": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.5.tgz", - "integrity": "sha512-5o8bTCgAmtYOgauO/Xd27vW52G2/m3i5PX7MUYePquxXAnX73AAtqA3WgPXBRitEB60plSKZgOTkcpqrsh546A==", - "optional": true, - "peer": true - }, - "@next/swc-freebsd-x64": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.5.tgz", - "integrity": "sha512-yYUbyup1JnznMtEBRkK4LT56N0lfK5qNTzr6/DEyDw5TbFVwnuy2hhLBzwCBkScFVjpFdfiC6SQAX3FrAZzuuw==", - "optional": true, - "peer": true - }, - "@next/swc-linux-arm-gnueabihf": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.5.tgz", - "integrity": "sha512-2ZE2/G921Acks7UopJZVMgKLdm4vN4U0yuzvAMJ6KBavPzqESA2yHJlm85TV/K9gIjKhSk5BVtauIUntFRP8cg==", - "optional": true, - "peer": true - }, - "@next/swc-linux-arm64-gnu": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.5.tgz", - "integrity": "sha512-/I6+PWVlz2wkTdWqhlSYYJ1pWWgUVva6SgX353oqTh8njNQp1SdFQuWDqk8LnM6ulheVfSsgkDzxrDaAQZnzjQ==", - "optional": true, - "peer": true - }, - "@next/swc-linux-arm64-musl": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.5.tgz", - "integrity": "sha512-LPQRelfX6asXyVr59p5sTpx5l+0yh2Vjp/R8Wi4X9pnqcayqT4CUJLiHqCvZuLin3IsFdisJL0rKHMoaZLRfmg==", - "optional": true, - "peer": true - }, - "@next/swc-linux-x64-gnu": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.5.tgz", - "integrity": "sha512-0szyAo8jMCClkjNK0hknjhmAngUppoRekW6OAezbEYwHXN/VNtsXbfzgYOqjKWxEx3OoAzrT3jLwAF0HdX2MEw==", - "optional": true, - "peer": true - }, - "@next/swc-linux-x64-musl": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.5.tgz", - "integrity": "sha512-zg/Y6oBar1yVnW6Il1I/08/2ukWtOG6s3acdJdEyIdsCzyQi4RLxbbhkD/EGQyhqBvd3QrC6ZXQEXighQUAZ0g==", - "optional": true, - "peer": true - }, - "@next/swc-win32-arm64-msvc": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.5.tgz", - "integrity": "sha512-3/90DRNSqeeSRMMEhj4gHHQlLhhKg5SCCoYfE3kBjGpE63EfnblYUqsszGGZ9ekpKL/R4/SGB40iCQr8tR5Jiw==", - "optional": true, - "peer": true - }, - "@next/swc-win32-ia32-msvc": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.5.tgz", - "integrity": "sha512-hGLc0ZRAwnaPL4ulwpp4D2RxmkHQLuI8CFOEEHdzZpS63/hMVzv81g8jzYA0UXbb9pus/iTc3VRbVbAM03SRrw==", - "optional": true, - "peer": true - }, - "@next/swc-win32-x64-msvc": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.5.tgz", - "integrity": "sha512-7h5/ahY7NeaO2xygqVrSG/Y8Vs4cdjxIjowTZ5W6CKoTKn7tmnuxlUc2h74x06FKmbhAd9agOjr/AOKyxYYm9Q==", - "optional": true, - "peer": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" - }, - "@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "peer": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", - "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", - "peer": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@swc/helpers": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.3.tgz", - "integrity": "sha512-6JrF+fdUK2zbGpJIlN7G3v966PQjyx/dPt1T9km2wj+EUBqgrxCk3uX4Kct16MIm9gGxfKRcfax2hVf5jvlTzA==", - "peer": true, - "requires": { - "tslib": "^2.4.0" - } - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "peer": true - }, - "@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", - "peer": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "peer": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "peer": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.0.tgz", - "integrity": "sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw==", - "peer": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/content-disposition": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", - "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==" - }, - "@types/cookie": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz", - "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==" - }, - "@types/cookies": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", - "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", - "requires": { - "@types/connect": "*", - "@types/express": "*", - "@types/keygrip": "*", - "@types/node": "*" - } - }, - "@types/cors": { - "version": "2.8.10", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", - "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==" - }, - "@types/expect": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", - "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==" - }, - "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.30", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", - "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/formidable": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.2.5.tgz", - "integrity": "sha512-zu3mQJa4hDNubEMViSj937602XdDGzK7Q5pJ5QmLUbNxclbo9tZGt5jtwM352ssZ+pqo5V4H14TBvT/ALqQQcA==", - "requires": { - "@types/node": "*" - } - }, - "@types/fs-capacitor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz", - "integrity": "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/glob-stream": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-6.1.1.tgz", - "integrity": "sha512-AGOUTsTdbPkRS0qDeyeS+6KypmfVpbT5j23SN8UPG63qjKXNKjXn6V9wZUr8Fin0m9l8oGYaPK8b2WUMF8xI1A==", - "requires": { - "@types/glob": "*", - "@types/node": "*" - } - }, - "@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "peer": true, - "requires": { - "@types/node": "*" - } - }, - "@types/gulp": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.9.tgz", - "integrity": "sha512-zzT+wfQ8uwoXjDhRK9Zkmmk09/fbLLmN/yDHFizJiEKIve85qutOnXcP/TM2sKPBTU+Jc16vfPbOMkORMUBN7Q==", - "requires": { - "@types/undertaker": "*", - "@types/vinyl-fs": "*", - "chokidar": "^3.3.1" - } - }, - "@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "requires": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - } - }, - "@types/http-assert": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", - "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==" - }, - "@types/http-errors": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", - "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==" - }, - "@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", - "requires": { - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "26.0.24", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", - "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", - "requires": { - "jest-diff": "^26.0.0", - "pretty-format": "^26.0.0" - } - }, - "@types/keygrip": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", - "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" - }, - "@types/koa": { - "version": "2.13.5", - "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz", - "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==", - "requires": { - "@types/accepts": "*", - "@types/content-disposition": "*", - "@types/cookies": "*", - "@types/http-assert": "*", - "@types/http-errors": "*", - "@types/keygrip": "*", - "@types/koa-compose": "*", - "@types/node": "*" - } - }, - "@types/koa-compose": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", - "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", - "requires": { - "@types/koa": "*" - } - }, - "@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" - }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" - }, - "@types/node": { - "version": "14.18.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.18.tgz", - "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig==" - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "peer": true - }, - "@types/prettier": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz", - "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==", - "peer": true - }, - "@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - }, - "@types/react": { - "version": "17.0.48", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.48.tgz", - "integrity": "sha512-zJ6IYlJ8cYYxiJfUaZOQee4lh99mFihBoqkOSEGV+dFi9leROW6+PgstzQ+w3gWTnUfskALtQPGHK6dYmPj+2A==", - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "requires": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "peer": true - }, - "@types/undertaker": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.7.tgz", - "integrity": "sha512-xuY7nBwo1zSRoY2aitp/HArHfTulFAKql2Fr4b4mWbBBP+F50n7Jm6nwISTTMaDk2xvl92O10TTejVF0Q9mInw==", - "requires": { - "@types/node": "*", - "@types/undertaker-registry": "*", - "async-done": "~1.3.2" - } - }, - "@types/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==" - }, - "@types/vinyl": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", - "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", - "requires": { - "@types/expect": "^1.20.4", - "@types/node": "*" - } - }, - "@types/vinyl-fs": { - "version": "2.4.12", - "resolved": "https://registry.npmjs.org/@types/vinyl-fs/-/vinyl-fs-2.4.12.tgz", - "integrity": "sha512-LgBpYIWuuGsihnlF+OOWWz4ovwCYlT03gd3DuLwex50cYZLmX3yrW+sFF9ndtmh7zcZpS6Ri47PrIu+fV+sbXw==", - "requires": { - "@types/glob-stream": "*", - "@types/node": "*", - "@types/vinyl": "*" - } - }, - "@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", - "requires": { - "@types/node": "*" - } - }, - "@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" - }, - "@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "@types/zen-observable": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz", - "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==" - }, - "@wry/context": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.6.1.tgz", - "integrity": "sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@wry/equality": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.3.tgz", - "integrity": "sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@wry/trie": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.2.tgz", - "integrity": "sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "peer": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "accept": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/accept/-/accept-3.1.3.tgz", - "integrity": "sha512-OgOEAidVEOKPup+Gv2+2wdH2AgVKI9LxsJ4hicdJ6cY0faUuZdZoi56kkXWlHp9qicN1nWQLmW5ZRGk+SBS5xg==", - "requires": { - "boom": "7.x.x", - "hoek": "6.x.x" - } - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "peer": true - }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "peer": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "peer": true - } - } - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "peer": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "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-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "requires": { - "ansi-wrap": "^0.1.0" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "peer": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" - }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "apollo-boost": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/apollo-boost/-/apollo-boost-0.4.9.tgz", - "integrity": "sha512-05y5BKcDaa8w47f8d81UVwKqrAjn8uKLv6QM9fNdldoNzQ+rnOHgFlnrySUZRz9QIT3vPftQkEz2UEASp1Mi5g==", - "requires": { - "apollo-cache": "^1.3.5", - "apollo-cache-inmemory": "^1.6.6", - "apollo-client": "^2.6.10", - "apollo-link": "^1.0.6", - "apollo-link-error": "^1.0.3", - "apollo-link-http": "^1.3.1", - "graphql-tag": "^2.4.2", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0" - }, - "dependencies": { - "ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "requires": { - "tslib": "^1.9.3" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "apollo-cache": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.5.tgz", - "integrity": "sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA==", - "requires": { - "apollo-utilities": "^1.3.4", - "tslib": "^1.10.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "apollo-cache-control": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.14.0.tgz", - "integrity": "sha512-qN4BCq90egQrgNnTRMUHikLZZAprf3gbm8rC5Vwmc6ZdLolQ7bFsa769Hqi6Tq/lS31KLsXBLTOsRbfPHph12w==", - "requires": { - "apollo-server-env": "^3.1.0", - "apollo-server-plugin-base": "^0.13.0" - } - }, - "apollo-cache-inmemory": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6.tgz", - "integrity": "sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A==", - "requires": { - "apollo-cache": "^1.3.5", - "apollo-utilities": "^1.3.4", - "optimism": "^0.10.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0" - }, - "dependencies": { - "@wry/context": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.4.4.tgz", - "integrity": "sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==", - "requires": { - "@types/node": ">=6", - "tslib": "^1.9.3" - } - }, - "optimism": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.10.3.tgz", - "integrity": "sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw==", - "requires": { - "@wry/context": "^0.4.0" - } - }, - "ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "requires": { - "tslib": "^1.9.3" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "apollo-client": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.6.10.tgz", - "integrity": "sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA==", - "requires": { - "@types/zen-observable": "^0.8.0", - "apollo-cache": "1.3.5", - "apollo-link": "^1.0.0", - "apollo-utilities": "1.3.4", - "symbol-observable": "^1.0.2", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0", - "zen-observable": "^0.8.0" - }, - "dependencies": { - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" - }, - "ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "requires": { - "tslib": "^1.9.3" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "apollo-datasource": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.9.0.tgz", - "integrity": "sha512-y8H99NExU1Sk4TvcaUxTdzfq2SZo6uSj5dyh75XSQvbpH6gdAXIW9MaBcvlNC7n0cVPsidHmOcHOWxJ/pTXGjA==", - "requires": { - "apollo-server-caching": "^0.7.0", - "apollo-server-env": "^3.1.0" - } - }, - "apollo-graphql": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.9.7.tgz", - "integrity": "sha512-bezL9ItUWUGHTm1bI/XzIgiiZbhXpsC7uxk4UxFPmcVJwJsDc3ayZ99oXxAaK+3Rbg/IoqrHckA6CwmkCsbaSA==", - "requires": { - "core-js-pure": "^3.10.2", - "lodash.sortby": "^4.7.0", - "sha.js": "^2.4.11" - } - }, - "apollo-link": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz", - "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==", - "requires": { - "apollo-utilities": "^1.3.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.9.3", - "zen-observable-ts": "^0.8.21" - }, - "dependencies": { - "ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "requires": { - "tslib": "^1.9.3" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "zen-observable-ts": { - "version": "0.8.21", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz", - "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==", - "requires": { - "tslib": "^1.9.3", - "zen-observable": "^0.8.0" - } - } - } - }, - "apollo-link-error": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.13.tgz", - "integrity": "sha512-jAZOOahJU6bwSqb2ZyskEK1XdgUY9nkmeclCrW7Gddh1uasHVqmoYc4CKdb0/H0Y1J9lvaXKle2Wsw/Zx1AyUg==", - "requires": { - "apollo-link": "^1.2.14", - "apollo-link-http-common": "^0.2.16", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "apollo-link-http": { - "version": "1.5.17", - "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.17.tgz", - "integrity": "sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg==", - "requires": { - "apollo-link": "^1.2.14", - "apollo-link-http-common": "^0.2.16", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "apollo-link-http-common": { - "version": "0.2.16", - "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz", - "integrity": "sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg==", - "requires": { - "apollo-link": "^1.2.14", - "ts-invariant": "^0.4.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "requires": { - "tslib": "^1.9.3" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "apollo-link-ws": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/apollo-link-ws/-/apollo-link-ws-1.0.20.tgz", - "integrity": "sha512-mjSFPlQxmoLArpHBeUb2Xj+2HDYeTaJqFGOqQ+I8NVJxgL9lJe84PDWcPah/yMLv3rB7QgBDSuZ0xoRFBPlySw==", - "requires": { - "apollo-link": "^1.2.14", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "apollo-reporting-protobuf": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-0.8.0.tgz", - "integrity": "sha512-B3XmnkH6Y458iV6OsA7AhfwvTgeZnFq9nPVjbxmLKnvfkEl8hYADtz724uPa0WeBiD7DSFcnLtqg9yGmCkBohg==", - "requires": { - "@apollo/protobufjs": "1.2.2" - } - }, - "apollo-server": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-2.25.4.tgz", - "integrity": "sha512-CNvaSd0wkacfsvprSI843qTLKfBQpLik9e0y77On+OhdObkmq1ij8qkpF8awNg0iJPG5+RYBGNC7c/PA6vO53A==", - "requires": { - "apollo-server-core": "^2.25.4", - "apollo-server-express": "^2.25.4", - "express": "^4.0.0", - "graphql-subscriptions": "^1.0.0", - "graphql-tools": "^4.0.8", - "stoppable": "^1.1.0" - }, - "dependencies": { - "@types/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "apollo-server-core": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.25.4.tgz", - "integrity": "sha512-1u3BnFKbCt6F9SPM7ZoWmtHK6ubme56H8hV5Mjv3KbfSairU76SU79IhO05BEJE57S6N+ddb1rm3Uk93X6YeGw==", - "requires": { - "@apollographql/apollo-tools": "^0.5.0", - "@apollographql/graphql-playground-html": "1.6.27", - "@apollographql/graphql-upload-8-fork": "^8.1.3", - "@josephg/resolvable": "^1.0.0", - "@types/ws": "^7.0.0", - "apollo-cache-control": "^0.14.0", - "apollo-datasource": "^0.9.0", - "apollo-graphql": "^0.9.0", - "apollo-reporting-protobuf": "^0.8.0", - "apollo-server-caching": "^0.7.0", - "apollo-server-env": "^3.1.0", - "apollo-server-errors": "^2.5.0", - "apollo-server-plugin-base": "^0.13.0", - "apollo-server-types": "^0.9.0", - "apollo-tracing": "^0.15.0", - "async-retry": "^1.2.1", - "fast-json-stable-stringify": "^2.0.0", - "graphql-extensions": "^0.15.0", - "graphql-tag": "^2.11.0", - "graphql-tools": "^4.0.8", - "loglevel": "^1.6.7", - "lru-cache": "^6.0.0", - "sha.js": "^2.4.11", - "subscriptions-transport-ws": "^0.9.19", - "uuid": "^8.0.0" - } - }, - "apollo-server-express": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.25.4.tgz", - "integrity": "sha512-1Yd9DscLlCP5BhfAkNxg+aGcaTKnL36FyezdL7Iqc+KelON5PAyX8qpAChKL8Z3L2YHJzIk/Haf4dFJLKUjx9w==", - "requires": { - "@apollographql/graphql-playground-html": "1.6.27", - "@types/accepts": "^1.3.5", - "@types/body-parser": "1.19.0", - "@types/cors": "2.8.10", - "@types/express": "^4.17.12", - "@types/express-serve-static-core": "^4.17.21", - "accepts": "^1.3.5", - "apollo-server-core": "^2.25.4", - "apollo-server-types": "^0.9.0", - "body-parser": "^1.18.3", - "cors": "^2.8.5", - "express": "^4.17.1", - "graphql-subscriptions": "^1.0.0", - "graphql-tools": "^4.0.8", - "parseurl": "^1.3.2", - "subscriptions-transport-ws": "^0.9.19", - "type-is": "^1.6.16" - } - } - } - }, - "apollo-server-caching": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.7.0.tgz", - "integrity": "sha512-MsVCuf/2FxuTFVhGLK13B+TZH9tBd2qkyoXKKILIiGcZ5CDUEBO14vIV63aNkMkS1xxvK2U4wBcuuNj/VH2Mkw==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "apollo-server-core": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.10.1.tgz", - "integrity": "sha512-UFFziv6h15QbKRZOA6wLyr1Sle9kns3JuQ5DEB7OYe5AIoOJNjZkWXX/tmLFUrSmlnDDryi6Sf5pDzpYmUC/UA==", - "requires": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "@apollo/utils.usagereporting": "^1.0.0", - "@apollographql/apollo-tools": "^0.5.3", - "@apollographql/graphql-playground-html": "1.6.29", - "@graphql-tools/mock": "^8.1.2", - "@graphql-tools/schema": "^8.0.0", - "@josephg/resolvable": "^1.0.0", - "apollo-datasource": "^3.3.2", - "apollo-reporting-protobuf": "^3.3.2", - "apollo-server-env": "^4.2.1", - "apollo-server-errors": "^3.3.1", - "apollo-server-plugin-base": "^3.6.2", - "apollo-server-types": "^3.6.2", - "async-retry": "^1.2.1", - "fast-json-stable-stringify": "^2.1.0", - "graphql-tag": "^2.11.0", - "loglevel": "^1.6.8", - "lru-cache": "^6.0.0", - "sha.js": "^2.4.11", - "uuid": "^8.0.0", - "whatwg-mimetype": "^3.0.0" - }, - "dependencies": { - "@apollo/protobufjs": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", - "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - } - }, - "@apollographql/graphql-playground-html": { - "version": "1.6.29", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", - "integrity": "sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==", - "requires": { - "xss": "^1.0.8" - } - }, - "@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" - }, - "apollo-datasource": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", - "integrity": "sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==", - "requires": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "apollo-server-env": "^4.2.1" - } - }, - "apollo-reporting-protobuf": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", - "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", - "requires": { - "@apollo/protobufjs": "1.2.4" - } - }, - "apollo-server-env": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", - "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", - "requires": { - "node-fetch": "^2.6.7" - } - }, - "apollo-server-errors": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz", - "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==", - "requires": {} - }, - "apollo-server-plugin-base": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.6.2.tgz", - "integrity": "sha512-erWXjLOO1u7fxQkbxJ2cwSO7p0tYzNied91I1SJ9tikXZ/2eZUyDyvrpI+4g70kOdEi+AmJ5Fo8ahEXKJ75zdg==", - "requires": { - "apollo-server-types": "^3.6.2" - } - }, - "apollo-server-types": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.2.tgz", - "integrity": "sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==", - "requires": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "apollo-reporting-protobuf": "^3.3.2", - "apollo-server-env": "^4.2.1" - } - } - } - }, - "apollo-server-env": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-3.1.0.tgz", - "integrity": "sha512-iGdZgEOAuVop3vb0F2J3+kaBVi4caMoxefHosxmgzAbbSpvWehB8Y1QiSyyMeouYC38XNVk5wnZl+jdGSsWsIQ==", - "requires": { - "node-fetch": "^2.6.1", - "util.promisify": "^1.0.0" - } - }, - "apollo-server-errors": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.5.0.tgz", - "integrity": "sha512-lO5oTjgiC3vlVg2RKr3RiXIIQ5pGXBFxYGGUkKDhTud3jMIhs+gel8L8zsEjKaKxkjHhCQAA/bcEfYiKkGQIvA==", - "requires": {} - }, - "apollo-server-express": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.10.1.tgz", - "integrity": "sha512-r0esst3YGNdlphYiOrflfBqJ15VAZAhYhWSFo2kPF4knsIGK5HUkeqwjMr+fFDBn4DEfYzC+I1+LnsF/hFN8VQ==", - "requires": { - "@types/accepts": "^1.3.5", - "@types/body-parser": "1.19.2", - "@types/cors": "2.8.12", - "@types/express": "4.17.13", - "@types/express-serve-static-core": "4.17.30", - "accepts": "^1.3.5", - "apollo-server-core": "^3.10.1", - "apollo-server-types": "^3.6.2", - "body-parser": "^1.19.0", - "cors": "^2.8.5", - "parseurl": "^1.3.3" - }, - "dependencies": { - "@apollo/protobufjs": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", - "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - } - }, - "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" - }, - "@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" - }, - "apollo-reporting-protobuf": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", - "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", - "requires": { - "@apollo/protobufjs": "1.2.4" - } - }, - "apollo-server-env": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", - "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", - "requires": { - "node-fetch": "^2.6.7" - } - }, - "apollo-server-types": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.2.tgz", - "integrity": "sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==", - "requires": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "apollo-reporting-protobuf": "^3.3.2", - "apollo-server-env": "^4.2.1" - } - } - } - }, - "apollo-server-micro": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/apollo-server-micro/-/apollo-server-micro-2.25.4.tgz", - "integrity": "sha512-tx9VC9VdMMZLi9TFfl/pX4jr/qqhgu2To9KI5jlXzYxowROwOt/TwTx9ClT77YdJDoSIAvippYSaw+njuejN/A==", - "requires": { - "@apollographql/graphql-playground-html": "1.6.27", - "accept": "^3.0.2", - "apollo-server-core": "^2.25.4", - "apollo-server-types": "^0.9.0", - "micro": "^9.3.2" - }, - "dependencies": { - "apollo-server-core": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.25.4.tgz", - "integrity": "sha512-1u3BnFKbCt6F9SPM7ZoWmtHK6ubme56H8hV5Mjv3KbfSairU76SU79IhO05BEJE57S6N+ddb1rm3Uk93X6YeGw==", - "requires": { - "@apollographql/apollo-tools": "^0.5.0", - "@apollographql/graphql-playground-html": "1.6.27", - "@apollographql/graphql-upload-8-fork": "^8.1.3", - "@josephg/resolvable": "^1.0.0", - "@types/ws": "^7.0.0", - "apollo-cache-control": "^0.14.0", - "apollo-datasource": "^0.9.0", - "apollo-graphql": "^0.9.0", - "apollo-reporting-protobuf": "^0.8.0", - "apollo-server-caching": "^0.7.0", - "apollo-server-env": "^3.1.0", - "apollo-server-errors": "^2.5.0", - "apollo-server-plugin-base": "^0.13.0", - "apollo-server-types": "^0.9.0", - "apollo-tracing": "^0.15.0", - "async-retry": "^1.2.1", - "fast-json-stable-stringify": "^2.0.0", - "graphql-extensions": "^0.15.0", - "graphql-tag": "^2.11.0", - "graphql-tools": "^4.0.8", - "loglevel": "^1.6.7", - "lru-cache": "^6.0.0", - "sha.js": "^2.4.11", - "subscriptions-transport-ws": "^0.9.19", - "uuid": "^8.0.0" - } - } - } - }, - "apollo-server-plugin-base": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.13.0.tgz", - "integrity": "sha512-L3TMmq2YE6BU6I4Tmgygmd0W55L+6XfD9137k+cWEBFu50vRY4Re+d+fL5WuPkk5xSPKd/PIaqzidu5V/zz8Kg==", - "requires": { - "apollo-server-types": "^0.9.0" - } - }, - "apollo-server-types": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-0.9.0.tgz", - "integrity": "sha512-qk9tg4Imwpk732JJHBkhW0jzfG0nFsLqK2DY6UhvJf7jLnRePYsPxWfPiNkxni27pLE2tiNlCwoDFSeWqpZyBg==", - "requires": { - "apollo-reporting-protobuf": "^0.8.0", - "apollo-server-caching": "^0.7.0", - "apollo-server-env": "^3.1.0" - } - }, - "apollo-tracing": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.15.0.tgz", - "integrity": "sha512-UP0fztFvaZPHDhIB/J+qGuy6hWO4If069MGC98qVs0I8FICIGu4/8ykpX3X3K6RtaQ56EDAWKykCxFv4ScxMeA==", - "requires": { - "apollo-server-env": "^3.1.0", - "apollo-server-plugin-base": "^0.13.0" - } - }, - "apollo-utilities": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz", - "integrity": "sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==", - "requires": { - "@wry/equality": "^0.1.2", - "fast-json-stable-stringify": "^2.0.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0" - }, - "dependencies": { - "@wry/equality": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz", - "integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==", - "requires": { - "tslib": "^1.9.3" - } - }, - "ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "requires": { - "tslib": "^1.9.3" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", - "requires": { - "buffer-equal": "^1.0.0" - } - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "peer": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", - "requires": { - "make-iterator": "^1.0.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", - "requires": { - "make-iterator": "^1.0.0" - } - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", - "requires": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" - } - } - }, - "array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" - } - } - }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" - }, - "array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "requires": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "array.prototype.reduce": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", - "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - } - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" - }, - "async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - } - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" - }, - "async-retry": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", - "requires": { - "retry": "0.13.1" - } - }, - "async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", - "requires": { - "async-done": "^1.2.2" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", - "requires": { - "follow-redirects": "^1.14.4" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==" - } - } - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==", - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", - "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", - "peer": true, - "requires": { - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/babel__core": "^7.1.7", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": 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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "dependencies": { - "istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", - "peer": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "peer": true - } - } - }, - "babel-plugin-jest-hoist": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", - "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", - "peer": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-plugin-transform-runtime": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.15.0.tgz", - "integrity": "sha1-PXW02Umtga8VdXAnOEb7Wa6w1Xw=", - "requires": { - "babel-runtime": "^6.9.0" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "peer": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", - "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", - "peer": true, - "requires": { - "babel-plugin-jest-hoist": "^26.6.2", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==", - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - }, - "dependencies": { - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "requires": { - "source-map": "^0.5.6" - } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - }, - "bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", - "requires": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - } - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "benchmark": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", - "integrity": "sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==", - "requires": { - "lodash": "^4.17.4", - "platform": "^1.3.3" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "apollo-server-core": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.10.1.tgz", + "integrity": "sha512-UFFziv6h15QbKRZOA6wLyr1Sle9kns3JuQ5DEB7OYe5AIoOJNjZkWXX/tmLFUrSmlnDDryi6Sf5pDzpYmUC/UA==", "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "@apollo/utils.keyvaluecache": "^1.0.1", + "@apollo/utils.logger": "^1.0.0", + "@apollo/utils.usagereporting": "^1.0.0", + "@apollographql/apollo-tools": "^0.5.3", + "@apollographql/graphql-playground-html": "1.6.29", + "@graphql-tools/mock": "^8.1.2", + "@graphql-tools/schema": "^8.0.0", + "@josephg/resolvable": "^1.0.0", + "apollo-datasource": "^3.3.2", + "apollo-reporting-protobuf": "^3.3.2", + "apollo-server-env": "^4.2.1", + "apollo-server-errors": "^3.3.1", + "apollo-server-plugin-base": "^3.6.2", + "apollo-server-types": "^3.6.2", + "async-retry": "^1.2.1", + "fast-json-stable-stringify": "^2.1.0", + "graphql-tag": "^2.11.0", + "loglevel": "^1.6.8", + "lru-cache": "^6.0.0", + "sha.js": "^2.4.11", + "uuid": "^8.0.0", + "whatwg-mimetype": "^3.0.0" }, "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "@apollo/protobufjs": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", + "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", "requires": { - "ms": "2.0.0" + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" } }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "@apollographql/graphql-playground-html": { + "version": "1.6.29", + "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", + "integrity": "sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==", + "requires": { + "xss": "^1.0.8" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "apollo-datasource": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", + "integrity": "sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==", "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "@apollo/utils.keyvaluecache": "^1.0.1", + "apollo-server-env": "^4.2.1" } }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - } - } - }, - "boom": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-7.3.0.tgz", - "integrity": "sha512-Swpoyi2t5+GhOEGw8rEsKvTxFLIDiiKoUc2gsoV6Lyr43LHBIzch3k2MvYUs8RTROrIkVJ3Al0TkaOGjnb+B6A==", - "requires": { - "hoek": "6.x.x" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "peer": true - }, - "browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", - "peer": true, - "requires": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "peer": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" - }, - "buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "busboy": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", - "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", - "requires": { - "dicer": "0.3.0" - } - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "peer": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "caniuse-lite": { - "version": "1.0.30001378", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001378.tgz", - "integrity": "sha512-JVQnfoO7FK7WvU4ZkBRbPjaot4+YqxogSDosHv0Hv5mWpUESmN+UubMU6L/hGz8QlQ2aY5U0vR6MOs6j/CXpNA==", - "peer": true - }, - "capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", - "peer": true, - "requires": { - "rsvp": "^4.8.4" - } - }, - "card-validator": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/card-validator/-/card-validator-8.1.1.tgz", - "integrity": "sha512-cN4FsKwoTfTFnqPwVc7TQLSsH/QMDB3n/gWm0XelcApz4sKipnOQ6k33sa3bWsNnnIpgs7eXOF+mUV2UQAX2Sw==", - "requires": { - "credit-card-type": "^9.1.0" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - }, - "chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==" - } - } - }, - "chance": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.8.tgz", - "integrity": "sha512-v7fi5Hj2VbR6dJEGRWLmJBA83LJMS47pkAbmROFxHWd9qmE1esHRZW8Clf1Fhzr3rjxnNZVCjOEv/ivFxeIMtg==" - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "peer": true - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==" - }, - "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - }, - "cjs-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", - "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", - "peer": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "apollo-reporting-protobuf": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", + "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", "requires": { - "is-descriptor": "^0.1.0" + "@apollo/protobufjs": "1.2.4" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "apollo-server-env": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", + "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } + "node-fetch": "^2.6.7" } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "apollo-server-errors": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz", + "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==" }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "apollo-server-plugin-base": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.6.2.tgz", + "integrity": "sha512-erWXjLOO1u7fxQkbxJ2cwSO7p0tYzNied91I1SJ9tikXZ/2eZUyDyvrpI+4g70kOdEi+AmJ5Fo8ahEXKJ75zdg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "apollo-server-types": "^3.6.2" } - } - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "apollo-server-types": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.2.tgz", + "integrity": "sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==", "requires": { - "ansi-regex": "^4.1.0" + "@apollo/utils.keyvaluecache": "^1.0.1", + "@apollo/utils.logger": "^1.0.0", + "apollo-reporting-protobuf": "^3.3.2", + "apollo-server-env": "^4.2.1" } } } }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" - }, - "cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "peer": true - }, - "co-body": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz", - "integrity": "sha512-sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ==", - "requires": { - "inflation": "^2.0.0", - "qs": "^6.4.0", - "raw-body": "^2.2.0", - "type-is": "^1.6.14" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "peer": true - }, - "collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", - "requires": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.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==", - "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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" - }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "apollo-server-env": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-3.1.0.tgz", + "integrity": "sha512-iGdZgEOAuVop3vb0F2J3+kaBVi4caMoxefHosxmgzAbbSpvWehB8Y1QiSyyMeouYC38XNVk5wnZl+jdGSsWsIQ==", "requires": { - "delayed-stream": "~1.0.0" + "node-fetch": "^2.6.1", + "util.promisify": "^1.0.0" } }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "apollo-server-errors": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.5.0.tgz", + "integrity": "sha512-lO5oTjgiC3vlVg2RKr3RiXIIQ5pGXBFxYGGUkKDhTud3jMIhs+gel8L8zsEjKaKxkjHhCQAA/bcEfYiKkGQIvA==" }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "apollo-server-express": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.10.1.tgz", + "integrity": "sha512-r0esst3YGNdlphYiOrflfBqJ15VAZAhYhWSFo2kPF4knsIGK5HUkeqwjMr+fFDBn4DEfYzC+I1+LnsF/hFN8VQ==", "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "@types/accepts": "^1.3.5", + "@types/body-parser": "1.19.2", + "@types/cors": "2.8.12", + "@types/express": "4.17.13", + "@types/express-serve-static-core": "4.17.30", + "accepts": "^1.3.5", + "apollo-server-core": "^3.10.1", + "apollo-server-types": "^3.6.2", + "body-parser": "^1.19.0", + "cors": "^2.8.5", + "parseurl": "^1.3.3" + }, + "dependencies": { + "@apollo/protobufjs": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", + "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + } + }, + "@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + }, + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "apollo-reporting-protobuf": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", + "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", + "requires": { + "@apollo/protobufjs": "1.2.4" + } + }, + "apollo-server-env": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", + "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", + "requires": { + "node-fetch": "^2.6.7" + } + }, + "apollo-server-types": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.2.tgz", + "integrity": "sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==", + "requires": { + "@apollo/utils.keyvaluecache": "^1.0.1", + "@apollo/utils.logger": "^1.0.0", + "apollo-reporting-protobuf": "^3.3.2", + "apollo-server-env": "^4.2.1" + } + } } }, - "concurrently": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz", - "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==", + "apollo-server-micro": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/apollo-server-micro/-/apollo-server-micro-2.25.4.tgz", + "integrity": "sha512-tx9VC9VdMMZLi9TFfl/pX4jr/qqhgu2To9KI5jlXzYxowROwOt/TwTx9ClT77YdJDoSIAvippYSaw+njuejN/A==", "requires": { - "chalk": "^2.4.2", - "date-fns": "^2.0.1", - "lodash": "^4.17.15", - "read-pkg": "^4.0.1", - "rxjs": "^6.5.2", - "spawn-command": "^0.0.2-1", - "supports-color": "^6.1.0", - "tree-kill": "^1.2.2", - "yargs": "^13.3.0" + "@apollographql/graphql-playground-html": "1.6.27", + "accept": "^3.0.2", + "apollo-server-core": "^2.25.4", + "apollo-server-types": "^0.9.0", + "micro": "^9.3.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==", - "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==", + "apollo-server-core": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.25.4.tgz", + "integrity": "sha512-1u3BnFKbCt6F9SPM7ZoWmtHK6ubme56H8hV5Mjv3KbfSairU76SU79IhO05BEJE57S6N+ddb1rm3Uk93X6YeGw==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@apollographql/apollo-tools": "^0.5.0", + "@apollographql/graphql-playground-html": "1.6.27", + "@apollographql/graphql-upload-8-fork": "^8.1.3", + "@josephg/resolvable": "^1.0.0", + "@types/ws": "^7.0.0", + "apollo-cache-control": "^0.14.0", + "apollo-datasource": "^0.9.0", + "apollo-graphql": "^0.9.0", + "apollo-reporting-protobuf": "^0.8.0", + "apollo-server-caching": "^0.7.0", + "apollo-server-env": "^3.1.0", + "apollo-server-errors": "^2.5.0", + "apollo-server-plugin-base": "^0.13.0", + "apollo-server-types": "^0.9.0", + "apollo-tracing": "^0.15.0", + "async-retry": "^1.2.1", + "fast-json-stable-stringify": "^2.0.0", + "graphql-extensions": "^0.15.0", + "graphql-tag": "^2.11.0", + "graphql-tools": "^4.0.8", + "loglevel": "^1.6.7", + "lru-cache": "^6.0.0", + "sha.js": "^2.4.11", + "subscriptions-transport-ws": "^0.9.19", + "uuid": "^8.0.0" }, "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "subscriptions-transport-ws": { + "version": "0.9.19", + "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz", + "integrity": "sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw==", "requires": { - "has-flag": "^3.0.0" + "backo2": "^1.0.2", + "eventemitter3": "^3.1.0", + "iterall": "^1.2.1", + "symbol-observable": "^1.0.4", + "ws": "^5.2.0 || ^6.0.0 || ^7.0.0" } } } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" } } }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "apollo-server-plugin-base": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.13.0.tgz", + "integrity": "sha512-L3TMmq2YE6BU6I4Tmgygmd0W55L+6XfD9137k+cWEBFu50vRY4Re+d+fL5WuPkk5xSPKd/PIaqzidu5V/zz8Kg==", "requires": { - "safe-buffer": "5.2.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } + "apollo-server-types": "^0.9.0" } }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "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==", + "apollo-server-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-0.9.0.tgz", + "integrity": "sha512-qk9tg4Imwpk732JJHBkhW0jzfG0nFsLqK2DY6UhvJf7jLnRePYsPxWfPiNkxni27pLE2tiNlCwoDFSeWqpZyBg==", "requires": { - "safe-buffer": "~5.1.1" + "apollo-reporting-protobuf": "^0.8.0", + "apollo-server-caching": "^0.7.0", + "apollo-server-env": "^3.1.0" } }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "copy-props": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", - "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "apollo-tracing": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.15.0.tgz", + "integrity": "sha512-UP0fztFvaZPHDhIB/J+qGuy6hWO4If069MGC98qVs0I8FICIGu4/8ykpX3X3K6RtaQ56EDAWKykCxFv4ScxMeA==", "requires": { - "each-props": "^1.3.2", - "is-plain-object": "^5.0.0" + "apollo-server-env": "^3.1.0", + "apollo-server-plugin-base": "^0.13.0" } }, - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" - }, - "core-js-pure": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.1.tgz", - "integrity": "sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg==" - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "apollo-utilities": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz", + "integrity": "sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==", + "requires": { + "@wry/equality": "^0.1.2", + "fast-json-stable-stringify": "^2.0.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0" + }, + "dependencies": { + "@wry/equality": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz", + "integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==", + "requires": { + "tslib": "^1.9.3" + } + }, + "ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "requires": { + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", "requires": { - "object-assign": "^4", - "vary": "^1" + "buffer-equal": "^1.0.0" } }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" }, - "credit-card-type": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/credit-card-type/-/credit-card-type-9.1.0.tgz", - "integrity": "sha512-CpNFuLxiPFxuZqhSKml3M+t0K/484pMAnfYWH14JoD7OZMnmC0Lmo+P7JX9SobqFpRoo7ifA18kOHdxJywYPEA==" + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" }, - "cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", "requires": { - "cross-spawn": "^7.0.1" + "make-iterator": "^1.0.0" } }, - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "requires": { - "node-fetch": "2.6.7" - } + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "make-iterator": "^1.0.0" } }, - "crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, - "cssfilter": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", - "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "peer": true + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "peer": true, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", "requires": { - "cssom": "~0.3.6" + "array-slice": "^1.0.0", + "is-number": "^4.0.0" }, "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "peer": true + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" } } }, - "csstype": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", - "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } + } }, - "cycle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "array.prototype.reduce": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", + "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", "requires": { - "assert-plus": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" } }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "peer": true, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "dependencies": { - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "peer": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "peer": true - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "peer": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "peer": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - } + "safer-buffer": "~2.1.0" } }, - "date-fns": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz", - "integrity": "sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w==" + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" }, - "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", "requires": { - "ms": "2.1.2" + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decimal.js": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.0.tgz", - "integrity": "sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg==", - "peer": true + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + "async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "requires": { + "retry": "0.13.1" + } }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", "requires": { - "type-detect": "^4.0.0" + "async-done": "^1.2.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==", - "peer": true + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "peer": true + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, - "default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", "requires": { - "kind-of": "^5.0.2" + "follow-redirects": "^1.14.4" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==" + } } }, - "default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "requires": { - "execa": "^5.0.0" + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" }, "dependencies": { - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "ms": "2.0.0" } }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "requires": { - "path-key": "^3.0.0" - } + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, - "default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=" + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + } }, - "default-shell": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/default-shell/-/default-shell-1.0.1.tgz", - "integrity": "sha512-/Os8tTMPSriNHCsVj3VLjMZblIl1sIg8EXz3qg7C5K+y9calfTA/qzlfPvCQ+LEgLWmtZ9wCnzE1w+S6TPPFyQ==" + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==", + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", "requires": { - "object-keys": "^1.0.12" + "babel-runtime": "^6.22.0" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "babel-plugin-transform-runtime": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.15.0.tgz", + "integrity": "sha1-PXW02Umtga8VdXAnOEb7Wa6w1Xw=", "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "babel-runtime": "^6.9.0" } }, - "del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==", "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" }, "dependencies": { - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "requires": { + "source-map": "^0.5.6" + } } } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" - }, - "deprecated-decorator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz", - "integrity": "sha512-MHidOOnCHGlZDKsI21+mbIIhf4Fff+hhCTB7gtVg4uoIqjcrTZc5v6M+GS2zVI0sV7PqK415rb8XaOSQsQkHOw==" - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", - "requires": { - "repeating": "^2.0.0" - } - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "peer": true - }, - "devtools-protocol": { - "version": "0.0.1019158", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", - "integrity": "sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==" - }, - "dicer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", - "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "streamsearch": "0.1.2" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" } }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - }, - "diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==" - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", "requires": { - "path-type": "^4.0.0" + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" } }, - "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "peer": true, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", "requires": { - "webidl-conversions": "^5.0.0" + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" }, "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "peer": true + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, - "dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } }, - "dotenv-expand": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.3.tgz", - "integrity": "sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==" + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" } }, - "each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "requires": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "isobject": "^3.0.1" + "is-descriptor": "^1.0.0" } } } }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "tweetnacl": "^0.14.3" } }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "benchmark": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", + "integrity": "sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==", "requires": { - "safe-buffer": "^5.0.1" + "lodash": "^4.17.4", + "platform": "^1.3.3" } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "electron-to-chromium": { - "version": "1.4.224", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.224.tgz", - "integrity": "sha512-dOujC5Yzj0nOVE23iD5HKqrRSDj2SD7RazpZS/b/WX85MtO6/LzKDF4TlYZTBteB+7fvSg5JpWh0sN7fImNF8w==", - "peer": true - }, - "emittery": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", - "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", - "peer": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, "requires": { - "once": "^1.4.0" + "file-uri-to-path": "1.0.0" } }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "requires": { - "is-arrayish": "^0.2.1" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, - "es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "dependencies": { - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" } } }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "boom": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-7.3.0.tgz", + "integrity": "sha512-Swpoyi2t5+GhOEGw8rEsKvTxFLIDiiKoUc2gsoV6Lyr43LHBIzch3k2MvYUs8RTROrIkVJ3Al0TkaOGjnb+B6A==", "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "hoek": "6.x.x" } }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "fill-range": "^7.0.1" } }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" + "fast-json-stable-stringify": "2.x" } }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "peer": true + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "peer": true, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "busboy": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", + "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true, - "peer": true - } + "dicer": "0.3.0" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "peer": true + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "peer": true + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, - "eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" + "card-validator": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/card-validator/-/card-validator-8.1.1.tgz", + "integrity": "sha512-cN4FsKwoTfTFnqPwVc7TQLSsH/QMDB3n/gWm0XelcApz4sKipnOQ6k33sa3bWsNnnIpgs7eXOF+mUV2UQAX2Sw==", + "requires": { + "credit-card-type": "^9.1.0" + } }, - "exec-sh": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", - "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", - "peer": true + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, - "execa": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", - "integrity": "sha512-R66dW/hW3I8yV77Wg4xn6zMguRPUgt59VLm5e85NrOF05ZdPn7YOfPBSw0E9epJDvuzwVWEG+HmEaQ4muYuWKQ==", + "chai": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", "requires": { - "cross-spawn": "^4.0.0", - "get-stream": "^2.2.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { - "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==" } } }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "peer": true + "chance": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.8.tgz", + "integrity": "sha512-v7fi5Hj2VbR6dJEGRWLmJBA83LJMS47pkAbmROFxHWd9qmE1esHRZW8Clf1Fhzr3rjxnNZVCjOEv/ivFxeIMtg==" + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==" + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "requires": { - "debug": "^2.3.3", + "arr-union": "^3.1.0", "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", @@ -24626,14 +2588,6 @@ "is-descriptor": "^0.1.0" } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -24661,965 +2615,917 @@ }, "dependencies": { "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "expect": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", - "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", - "peer": true, - "requires": { - "@jest/types": "^26.6.2", - "ansi-styles": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "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==", - "peer": 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==", - "peer": true - } - } - }, - "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - } - } - }, - "ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", - "requires": { - "type": "^2.5.0" - }, - "dependencies": { - "type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-extendable": "^0.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" } } }, - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" }, "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "ansi-regex": "^4.1.0" } } } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" }, - "eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" } }, - "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==" - }, - "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "co-body": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz", + "integrity": "sha512-sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ==", "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "inflation": "^2.0.0", + "qs": "^6.4.0", + "raw-body": "^2.2.0", + "type-is": "^1.6.14" } }, - "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==" - }, - "fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=" + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", "requires": { - "reusify": "^1.0.4" + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" } }, - "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "peer": true, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "requires": { - "bser": "2.1.1" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "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==", "requires": { - "pend": "~1.2.0" + "color-name": "1.1.3" } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - } + "delayed-stream": "~1.0.0" } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "concurrently": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz", + "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==", "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" + "chalk": "^2.4.2", + "date-fns": "^2.0.1", + "lodash": "^4.17.15", + "read-pkg": "^4.0.1", + "rxjs": "^6.5.2", + "spawn-command": "^0.0.2-1", + "supports-color": "^6.1.0", + "tree-kill": "^1.2.2", + "yargs": "^13.3.0" }, "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "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==", "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } + "color-convert": "^1.9.0" } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "is-extendable": "^0.1.0" + "has-flag": "^3.0.0" } } } }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-number": { + "has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "has-flag": "^3.0.0" } } } }, - "fined": { + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "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==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "copy-props": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", + "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "requires": { + "each-props": "^1.3.2", + "is-plain-object": "^5.0.0" + } + }, + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + }, + "core-js-pure": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.1.tgz", + "integrity": "sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg==" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, + "credit-card-type": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/credit-card-type/-/credit-card-type-9.1.0.tgz", + "integrity": "sha512-CpNFuLxiPFxuZqhSKml3M+t0K/484pMAnfYWH14JoD7OZMnmC0Lmo+P7JX9SobqFpRoo7ifA18kOHdxJywYPEA==" + }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "requires": { + "node-fetch": "2.6.7" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" + }, + "csstype": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", + "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" + }, + "cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-fns": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz", + "integrity": "sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w==" + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" + "type-detect": "^4.0.0" + } + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "requires": { + "kind-of": "^5.0.2" + } + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "requires": { + "execa": "^5.0.0" }, "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "requires": { - "isobject": "^3.0.1" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" } } } }, - "fix-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fix-path/-/fix-path-3.0.0.tgz", - "integrity": "sha512-opGAl4+ip5jUikHR2C8Jo7czZ80pz8EK/0gMlAZu7xgDmBqIynlX8SMYg9KowYjAU6HT0nxsSJEWru0u+n+N2Q==", - "requires": { - "shell-path": "^2.1.0" - } + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=" }, - "flagged-respawn": { + "default-shell": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" + "resolved": "https://registry.npmjs.org/default-shell/-/default-shell-1.0.1.tgz", + "integrity": "sha512-/Os8tTMPSriNHCsVj3VLjMZblIl1sIg8EXz3qg7C5K+y9calfTA/qzlfPvCQ+LEgLWmtZ9wCnzE1w+S6TPPFyQ==" }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" + "object-keys": "^1.0.12" } }, - "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", "requires": { - "is-callable": "^1.1.3" + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + } } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, - "for-own": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" + }, + "deprecated-decorator": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz", + "integrity": "sha512-MHidOOnCHGlZDKsI21+mbIIhf4Fff+hhCTB7gtVg4uoIqjcrTZc5v6M+GS2zVI0sV7PqK415rb8XaOSQsQkHOw==" + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "detect-file": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", "requires": { - "for-in": "^1.0.1" + "repeating": "^2.0.0" } }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" + "devtools-protocol": { + "version": "0.0.1019158", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", + "integrity": "sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==" }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dicer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", + "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "streamsearch": "0.1.2" } }, - "formidable": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", - "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==" + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==" }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "requires": { - "map-cache": "^0.2.2" + "path-type": "^4.0.0" } }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "fs-capacitor": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-2.0.4.tgz", - "integrity": "sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA==" + "dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + "dotenv-expand": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.3.tgz", + "integrity": "sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==" }, - "fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "requires": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } }, - "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==", - "peer": true + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==" + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "once": "^1.4.0" } }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "peer": true - }, - "get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==" - }, - "get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" + "is-arrayish": "^0.2.1" } }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", "requires": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + } } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "requires": { - "assert-plus": "^1.0.0" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, - "gists": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/gists/-/gists-2.0.0.tgz", - "integrity": "sha512-EVSWDpq2/H9ITsXsjdPo9+i2MI9U4E6DirXwR7/t6Mqgnynlh9ta6RMyezIINVNhkXZTCttmiSISd7JNkI2rQw==", + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", "requires": { - "github-base": "^1.0.0" + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" } }, - "github-base": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/github-base/-/github-base-1.0.0.tgz", - "integrity": "sha512-5A9OOCQWK80v+bjVRzdK0M/5UtERN9vx9TkJMlkiJA24wu/+lrQLsq5MPQIrSONrSWwt83eAPtBcuQOc2FyK8A==", + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "requires": { - "get-value": "^3.0.1", - "needle": "^2.2.2", - "paged-request": "^1.0.2", - "parse-link-header": "^1.0.1", - "qs": "^6.5.1", - "use": "^3.1.0" - }, - "dependencies": { - "get-value": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-3.0.1.tgz", - "integrity": "sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==", - "requires": { - "isobject": "^3.0.1" - } - } + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" } }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "d": "^1.0.1", + "ext": "^1.1.2" } }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", "requires": { - "is-glob": "^4.0.1" + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" } }, - "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" + }, + "execa": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", + "integrity": "sha512-R66dW/hW3I8yV77Wg4xn6zMguRPUgt59VLm5e85NrOF05ZdPn7YOfPBSw0E9epJDvuzwVWEG+HmEaQ4muYuWKQ==", "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" + "cross-spawn": "^4.0.0", + "get-stream": "^2.2.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" }, "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "lru-cache": "^4.0.1", + "which": "^1.2.9" } }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "requires": { - "is-extglob": "^2.1.0" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" } } }, - "glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } + "ms": "2.0.0" } }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } + "is-descriptor": "^0.1.0" } }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "is-extendable": "^0.1.0" } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "kind-of": "^3.0.2" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-extendable": "^0.1.0" + "is-buffer": "^1.1.5" } } } }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "kind-of": "^3.0.2" }, "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-extglob": "^2.1.0" + "is-buffer": "^1.1.5" } } } }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "binary-extensions": "^1.0.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "is-extendable": { @@ -25627,2371 +3533,1973 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "kind-of": "^3.0.2" + "ms": "2.0.0" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" } }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" } } }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "type": "^2.5.0" + }, + "dependencies": { + "type": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" + } } }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "isexe": "^2.0.0" + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" } } }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" - }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" }, "dependencies": { - "slash": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "pump": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } } } }, - "glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "requires": { - "sparkles": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" }, - "graphql": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", - "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==" + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" }, - "graphql-extensions": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.15.0.tgz", - "integrity": "sha512-bVddVO8YFJPwuACn+3pgmrEg6I8iBuYLuwvxiE+lcQQ7POotVZxm2rgGw0PvVYmWWf3DT7nTVDZ5ROh/ALp8mA==", + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", "requires": { - "@apollographql/apollo-tools": "^0.5.0", - "apollo-server-env": "^3.1.0", - "apollo-server-types": "^0.9.0" + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" } }, - "graphql-playground-html": { - "version": "1.6.30", - "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.6.30.tgz", - "integrity": "sha512-tpCujhsJMva4aqE8ULnF7/l3xw4sNRZcSHu+R00VV+W0mfp+Q20Plvcrp+5UXD+2yS6oyCXncA+zoQJQqhGCEw==", - "requires": { - "xss": "^1.0.6" - } + "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==" }, - "graphql-playground-middleware-express": { - "version": "1.7.23", - "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.23.tgz", - "integrity": "sha512-M/zbTyC1rkgiQjFSgmzAv6umMHOphYLNWZp6Ye5QrD77WfGOOoSqDsVmGUczc2pDkEPEzzGB/bvBO5rdzaTRgw==", + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "requires": { - "graphql-playground-html": "^1.6.30" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" } }, - "graphql-subscriptions": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-1.2.1.tgz", - "integrity": "sha512-95yD/tKi24q8xYa7Q9rhQN16AYj5wPbrb8tmHGM3WRc9EBmWrG/0kkMl+tQG8wcEuE9ibR4zyOM31p5Sdr2v4g==", - "requires": { - "iterall": "^1.3.0" - } + "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==" }, - "graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=" + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "requires": { - "tslib": "^2.1.0" + "reusify": "^1.0.4" } }, - "graphql-tools": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.8.tgz", - "integrity": "sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg==", + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "requires": { - "apollo-link": "^1.2.14", - "apollo-utilities": "^1.0.1", - "deprecated-decorator": "^0.1.6", - "iterall": "^1.1.3", - "uuid": "^3.1.0" - }, - "dependencies": { - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - } + "pend": "~1.2.0" } }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", - "optional": true, - "peer": true + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true }, - "gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "requires": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" + "to-regex-range": "^5.0.1" } }, - "gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "requires": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" }, "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "ms": "2.0.0" } }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + } + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, - "yargs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", - "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.1" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } }, - "yargs-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", - "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } } } }, - "gulp-run-command": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/gulp-run-command/-/gulp-run-command-0.0.10.tgz", - "integrity": "sha512-i6o4XRqoadZB2doWCqkrCe7FmFwqPZ0Fxx74FGt83/KT5wKRRaKiFh598W64HE0Br9es6Oyq+nA+/AWbCfeSYQ==", + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", "requires": { - "babel-plugin-transform-runtime": "6.15.0", - "cross-spawn": "4.0.0", - "spawn-args": "0.2.0", - "timeout-as-promise": "^1.0.0" + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" }, "dependencies": { - "cross-spawn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.0.tgz", - "integrity": "sha1-glR3SrR4a4xbPPTfumbOVjkywlI=", - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "isexe": "^2.0.0" + "isobject": "^3.0.1" } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "fix-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fix-path/-/fix-path-3.0.0.tgz", + "integrity": "sha512-opGAl4+ip5jUikHR2C8Jo7czZ80pz8EK/0gMlAZu7xgDmBqIynlX8SMYg9KowYjAU6HT0nxsSJEWru0u+n+N2Q==", "requires": { - "glogg": "^1.0.0" + "shell-path": "^2.1.0" } }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "requires": { - "ansi-regex": "^2.0.0" + "is-callable": "^1.1.3" } }, - "has-bigints": { + "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - }, - "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==" + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, - "has-property-descriptors": { + "for-own": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", "requires": { - "get-intrinsic": "^1.1.1" + "for-in": "^1.0.1" } }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "requires": { - "has-symbols": "^1.0.2" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "formidable": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", + "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==" + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "map-cache": "^0.2.2" } }, - "has-values": { + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "fs-capacitor": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-2.0.4.tgz", + "integrity": "sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA==" + }, + "fs-constants": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" } }, - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { - "react-is": "^16.7.0" - } + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", "requires": { - "parse-passwd": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" } }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "peer": true, - "requires": { - "whatwg-encoding": "^1.0.5" - } + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "peer": true + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==" }, - "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" } }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==" + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "dependencies": { - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - } + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" } }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "peer": true, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" } }, - "http-proxy-middleware": { + "get-value": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "requires": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "requires": { + "assert-plus": "^1.0.0" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "gists": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gists/-/gists-2.0.0.tgz", + "integrity": "sha512-EVSWDpq2/H9ITsXsjdPo9+i2MI9U4E6DirXwR7/t6Mqgnynlh9ta6RMyezIINVNhkXZTCttmiSISd7JNkI2rQw==", "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "github-base": "^1.0.0" } }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "github-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/github-base/-/github-base-1.0.0.tgz", + "integrity": "sha512-5A9OOCQWK80v+bjVRzdK0M/5UtERN9vx9TkJMlkiJA24wu/+lrQLsq5MPQIrSONrSWwt83eAPtBcuQOc2FyK8A==", "requires": { - "agent-base": "6", - "debug": "4" + "get-value": "^3.0.1", + "needle": "^2.2.2", + "paged-request": "^1.0.2", + "parse-link-header": "^1.0.1", + "qs": "^6.5.1", + "use": "^3.1.0" + }, + "dependencies": { + "get-value": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-3.0.1.tgz", + "integrity": "sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==", + "requires": { + "isobject": "^3.0.1" + } + } } }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - }, - "i": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", - "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==" - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==" - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "peer": true, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" + "is-glob": "^4.0.1" } }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "peer": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - }, - "inflation": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", - "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==" + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } } }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "internal-ip": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", - "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "requires": { - "default-gateway": "^6.0.0", - "ipaddr.js": "^1.9.1", - "is-ip": "^3.1.0", - "p-event": "^4.2.0" + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" } }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } } }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", "requires": { - "loose-envify": "^1.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + } } }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is_js": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/is_js/-/is_js-0.9.0.tgz", - "integrity": "sha512-8Y5EHSH+TonfUHX2g3pMJljdbGavg55q4jmHzghJCdqYDbdNROC8uw/YFQwIRCRqRJT1EY3pJefz+kglw+o7sg==" - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" + "sparkles": "^1.0.0" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "graphql": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", + "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", + "dev": true }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "graphql-extensions": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.15.0.tgz", + "integrity": "sha512-bVddVO8YFJPwuACn+3pgmrEg6I8iBuYLuwvxiE+lcQQ7POotVZxm2rgGw0PvVYmWWf3DT7nTVDZ5ROh/ALp8mA==", "requires": { - "has-bigints": "^1.0.1" + "@apollographql/apollo-tools": "^0.5.0", + "apollo-server-env": "^3.1.0", + "apollo-server-types": "^0.9.0" } }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "graphql-playground-html": { + "version": "1.6.30", + "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.6.30.tgz", + "integrity": "sha512-tpCujhsJMva4aqE8ULnF7/l3xw4sNRZcSHu+R00VV+W0mfp+Q20Plvcrp+5UXD+2yS6oyCXncA+zoQJQqhGCEw==", "requires": { - "binary-extensions": "^2.0.0" + "xss": "^1.0.6" } }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "graphql-playground-middleware-express": { + "version": "1.7.23", + "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.23.tgz", + "integrity": "sha512-M/zbTyC1rkgiQjFSgmzAv6umMHOphYLNWZp6Ye5QrD77WfGOOoSqDsVmGUczc2pDkEPEzzGB/bvBO5rdzaTRgw==", "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "graphql-playground-html": "^1.6.30" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "graphql-subscriptions": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-1.2.1.tgz", + "integrity": "sha512-95yD/tKi24q8xYa7Q9rhQN16AYj5wPbrb8tmHGM3WRc9EBmWrG/0kkMl+tQG8wcEuE9ibR4zyOM31p5Sdr2v4g==", "requires": { - "ci-info": "^2.0.0" + "iterall": "^1.3.0" } }, - "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", "requires": { - "has": "^1.0.3" + "tslib": "^2.1.0" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "graphql-tools": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.8.tgz", + "integrity": "sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg==", "requires": { - "kind-of": "^6.0.0" + "apollo-link": "^1.2.14", + "apollo-utilities": "^1.0.1", + "deprecated-decorator": "^0.1.6", + "iterall": "^1.1.3", + "uuid": "^3.1.0" }, "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" } } }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", "requires": { - "has-tostringtag": "^1.0.0" + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" }, "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + }, + "yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + }, + "yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "requires": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } } } }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "optional": true, - "peer": true - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "gulp-run-command": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/gulp-run-command/-/gulp-run-command-0.0.10.tgz", + "integrity": "sha512-i6o4XRqoadZB2doWCqkrCe7FmFwqPZ0Fxx74FGt83/KT5wKRRaKiFh598W64HE0Br9es6Oyq+nA+/AWbCfeSYQ==", "requires": { - "is-plain-object": "^2.0.4" + "babel-plugin-transform-runtime": "6.15.0", + "cross-spawn": "4.0.0", + "spawn-args": "0.2.0", + "timeout-as-promise": "^1.0.0" }, "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "cross-spawn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.0.tgz", + "integrity": "sha1-glR3SrR4a4xbPPTfumbOVjkywlI=", "requires": { - "isobject": "^3.0.1" + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "requires": { + "glogg": "^1.0.0" + } }, - "is-fullwidth-code-point": { + "har-schema": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "peer": true + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "requires": { - "is-extglob": "^2.1.1" + "ajv": "^6.12.3", + "har-schema": "^2.0.0" } }, - "is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "requires": { - "ip-regex": "^4.0.0" + "function-bind": "^1.1.1" } }, - "is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", "requires": { - "has-tostringtag": "^1.0.0" + "ansi-regex": "^2.0.0" } }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" }, - "is-plain-obj": { + "has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" - }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" - }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "peer": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, - "is-relative": { + "has-property-descriptors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "requires": { - "is-unc-path": "^1.0.0" + "get-intrinsic": "^1.1.1" } }, - "is-shared-array-buffer": { + "has-symbols": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "requires": { - "has-tostringtag": "^1.0.0" - } + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "requires": { "has-symbols": "^1.0.2" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "is-unc-path": { + "has-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "requires": { - "unc-path-regex": "^0.1.2" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "is-valid-glob": { + "has-values": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "requires": { - "call-bind": "^1.0.2" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + "hoek": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", + "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "optional": true, - "peer": true, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "requires": { - "is-docker": "^2.0.0" + "react-is": "^16.7.0" } }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { + "home-or-tmp": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "peer": true + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, - "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "peer": true, - "requires": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "peer": true - } + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" } }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "peer": true, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": 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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" } } }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "peer": true, + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": true - } + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" } }, - "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "peer": true, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, - "iterall": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", - "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" - }, - "jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", - "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", - "peer": true, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "requires": { - "@jest/core": "^26.6.3", - "import-local": "^3.0.2", - "jest-cli": "^26.6.3" + "agent-base": "6", + "debug": "4" } }, - "jest-changed-files": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", - "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", - "peer": true, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + }, + "i": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", + "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { - "@jest/types": "^26.6.2", - "execa": "^4.0.0", - "throat": "^5.0.0" - }, - "dependencies": { - "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "peer": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "peer": true, - "requires": { - "pump": "^3.0.0" - } - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "peer": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "peer": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "peer": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "peer": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } + "safer-buffer": ">= 2.1.2 < 3" } }, - "jest-cli": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", - "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", - "peer": true, - "requires": { - "@jest/core": "^26.6.3", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "is-ci": "^2.0.0", - "jest-config": "^26.6.3", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "prompts": "^2.0.1", - "yargs": "^15.4.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "peer": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "peer": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.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==", - "peer": 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==", - "peer": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "peer": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "peer": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "peer": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "peer": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "peer": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "peer": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==" + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "inflation": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", + "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" } }, - "jest-config": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", - "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", - "peer": true, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "internal-ip": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", + "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^26.6.3", - "@jest/types": "^26.6.2", - "babel-jest": "^26.6.3", - "chalk": "^4.0.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-environment-jsdom": "^26.6.2", - "jest-environment-node": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-jasmine2": "^26.6.3", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": 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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "default-gateway": "^6.0.0", + "ipaddr.js": "^1.9.1", + "is-ip": "^3.1.0", + "p-event": "^4.2.0" } }, - "jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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==", - "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==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "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==", - "requires": { - "has-flag": "^4.0.0" - } - } + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" } }, - "jest-docblock": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", - "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", - "peer": true, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "requires": { - "detect-newline": "^3.0.0" + "loose-envify": "^1.0.0" } }, - "jest-each": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", - "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", - "peer": true, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", "requires": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2" + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": 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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, - "jest-environment-jsdom": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", - "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", - "peer": true, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "requires": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2", - "jsdom": "^16.4.0" + "binary-extensions": "^2.0.0" } }, - "jest-environment-node": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", - "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", - "peer": true, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "requires": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, - "jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, - "jest-haste-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", - "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", - "peer": true, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "requires": { - "@jest/types": "^26.6.2", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.1.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "micromatch": "^4.0.2", - "sane": "^4.0.3", - "walker": "^1.0.7" - } - }, - "jest-jasmine2": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", - "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", - "peer": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^26.6.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "throat": "^5.0.0" + "ci-info": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": 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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, - "jest-leak-detector": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", - "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", - "peer": true, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "requires": { - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "has-tostringtag": "^1.0.0" } }, - "jest-matcher-utils": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", - "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", - "peer": true, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": 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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, - "jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", - "peer": true, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.2" + "is-plain-object": "^2.0.4" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": 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==", - "peer": true, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "has-flag": "^4.0.0" + "isobject": "^3.0.1" } } } }, - "jest-mock": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", - "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", - "peer": true, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-ip": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", + "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", + "requires": { + "ip-regex": "^4.0.0" + } + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "requires": { - "@jest/types": "^26.6.2", - "@types/node": "*" + "has-tostringtag": "^1.0.0" } }, - "jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "peer": true, - "requires": {} - }, - "jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", - "peer": true - }, - "jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", - "peer": true, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "requires": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": 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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, - "jest-resolve-dependencies": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", - "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", - "peer": true, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", "requires": { - "@jest/types": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-snapshot": "^26.6.2" + "is-unc-path": "^1.0.0" } }, - "jest-runner": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", - "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", - "peer": true, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "requires": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.7.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-docblock": "^26.0.0", - "jest-haste-map": "^26.6.2", - "jest-leak-detector": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "source-map-support": "^0.5.6", - "throat": "^5.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": 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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "call-bind": "^1.0.2" } }, - "jest-runtime": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", - "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", - "peer": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/globals": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0", - "cjs-module-lexer": "^0.6.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^15.4.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "peer": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "peer": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.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==", - "peer": 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==", - "peer": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "peer": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "peer": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "peer": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "peer": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "peer": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "peer": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" } }, - "jest-serializer": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", - "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", - "peer": true, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" + "has-symbols": "^1.0.2" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" } }, - "jest-snapshot": { + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is_js": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/is_js/-/is_js-0.9.0.tgz", + "integrity": "sha512-8Y5EHSH+TonfUHX2g3pMJljdbGavg55q4jmHzghJCdqYDbdNROC8uw/YFQwIRCRqRJT1EY3pJefz+kglw+o7sg==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "iterall": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", + "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" + }, + "jest-diff": { "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", - "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", - "peer": true, + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.0.0", "chalk": "^4.0.0", - "expect": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-diff": "^26.6.2", + "diff-sequences": "^26.6.2", "jest-get-type": "^26.3.0", - "jest-haste-map": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "natural-compare": "^1.4.0", - "pretty-format": "^26.6.2", - "semver": "^7.3.2" + "pretty-format": "^26.6.2" }, "dependencies": { "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -28000,7 +5508,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -28010,7 +5517,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -28018,26 +5524,28 @@ "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==", - "peer": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "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==", - "peer": true, "requires": { "has-flag": "^4.0.0" } } } }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + }, "jest-util": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", @@ -28096,171 +5604,6 @@ } } }, - "jest-validate": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", - "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", - "peer": true, - "requires": { - "@jest/types": "^26.6.2", - "camelcase": "^6.0.0", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "leven": "^3.1.0", - "pretty-format": "^26.6.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "peer": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": 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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-watcher": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", - "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", - "peer": true, - "requires": { - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^26.6.2", - "string-length": "^4.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": 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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "peer": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": 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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "joi": { "version": "17.6.0", "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", @@ -28278,112 +5621,11 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "peer": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" }, - "jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "peer": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "peer": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "peer": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - } - }, - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "peer": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "peer": true - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "peer": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "peer": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - } - } - }, "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", @@ -28394,12 +5636,6 @@ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "peer": true - }, "json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", @@ -28489,12 +5725,6 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "peer": true - }, "koa-body": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/koa-body/-/koa-body-4.2.0.tgz", @@ -28538,22 +5768,6 @@ "flush-write-stream": "^1.0.2" } }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "peer": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "peer": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, "liftoff": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", @@ -28579,12 +5793,6 @@ } } }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "peer": true - }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -28701,27 +5909,10 @@ }, "lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "peer": true, + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "peer": true - } + "yallist": "^4.0.0" } }, "make-error": { @@ -28744,15 +5935,6 @@ } } }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "peer": true, - "requires": { - "tmpl": "1.0.5" - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -29191,12 +6373,6 @@ "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", "optional": true }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "peer": true - }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -29222,12 +6398,6 @@ } } }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "peer": true - }, "needle": { "version": "2.9.1", "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", @@ -29253,44 +6423,11 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, - "next": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/next/-/next-12.2.5.tgz", - "integrity": "sha512-tBdjqX5XC/oFs/6gxrZhjmiq90YWizUYU6qOWAfat7zJwrwapJ+BYgX2PmiacunXMaRpeVT4vz5MSPSLgNkrpA==", - "peer": true, - "requires": { - "@next/env": "12.2.5", - "@next/swc-android-arm-eabi": "12.2.5", - "@next/swc-android-arm64": "12.2.5", - "@next/swc-darwin-arm64": "12.2.5", - "@next/swc-darwin-x64": "12.2.5", - "@next/swc-freebsd-x64": "12.2.5", - "@next/swc-linux-arm-gnueabihf": "12.2.5", - "@next/swc-linux-arm64-gnu": "12.2.5", - "@next/swc-linux-arm64-musl": "12.2.5", - "@next/swc-linux-x64-gnu": "12.2.5", - "@next/swc-linux-x64-musl": "12.2.5", - "@next/swc-win32-arm64-msvc": "12.2.5", - "@next/swc-win32-ia32-msvc": "12.2.5", - "@next/swc-win32-x64-msvc": "12.2.5", - "@swc/helpers": "0.4.3", - "caniuse-lite": "^1.0.30001332", - "postcss": "8.4.14", - "styled-jsx": "5.0.4", - "use-sync-external-store": "1.2.0" - } - }, "next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "peer": true - }, "node-addon-api": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", @@ -29309,33 +6446,6 @@ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==" }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "peer": true - }, - "node-notifier": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", - "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", - "optional": true, - "peer": true, - "requires": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - } - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "peer": true - }, "nodemon": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", @@ -29425,76 +6535,76 @@ "resolved": "https://registry.npmjs.org/npm/-/npm-7.24.2.tgz", "integrity": "sha512-120p116CE8VMMZ+hk8IAb1inCPk4Dj3VZw29/n2g6UI77urJKVYb7FZUDW8hY+EBnfsjI/2yrobBgFyzo7YpVQ==", "requires": { - "@isaacs/string-locale-compare": "*", - "@npmcli/arborist": "*", - "@npmcli/ci-detect": "*", - "@npmcli/config": "*", - "@npmcli/map-workspaces": "*", - "@npmcli/package-json": "*", - "@npmcli/run-script": "*", - "abbrev": "*", - "ansicolors": "*", - "ansistyles": "*", - "archy": "*", - "cacache": "*", - "chalk": "*", - "chownr": "*", - "cli-columns": "*", - "cli-table3": "*", - "columnify": "*", - "fastest-levenshtein": "*", - "glob": "*", - "graceful-fs": "*", - "hosted-git-info": "*", - "ini": "*", - "init-package-json": "*", - "is-cidr": "*", - "json-parse-even-better-errors": "*", - "libnpmaccess": "*", - "libnpmdiff": "*", - "libnpmexec": "*", - "libnpmfund": "*", - "libnpmhook": "*", - "libnpmorg": "*", - "libnpmpack": "*", - "libnpmpublish": "*", - "libnpmsearch": "*", - "libnpmteam": "*", - "libnpmversion": "*", - "make-fetch-happen": "*", - "minipass": "*", - "minipass-pipeline": "*", - "mkdirp": "*", - "mkdirp-infer-owner": "*", - "ms": "*", - "node-gyp": "*", - "nopt": "*", - "npm-audit-report": "*", - "npm-install-checks": "*", - "npm-package-arg": "*", - "npm-pick-manifest": "*", - "npm-profile": "*", - "npm-registry-fetch": "*", - "npm-user-validate": "*", - "npmlog": "*", - "opener": "*", - "pacote": "*", - "parse-conflict-json": "*", - "qrcode-terminal": "*", - "read": "*", - "read-package-json": "*", - "read-package-json-fast": "*", - "readdir-scoped-modules": "*", - "rimraf": "*", - "semver": "*", - "ssri": "*", - "tar": "*", - "text-table": "*", - "tiny-relative-date": "*", - "treeverse": "*", - "validate-npm-package-name": "*", - "which": "*", - "write-file-atomic": "*" + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^2.9.0", + "@npmcli/ci-detect": "^1.2.0", + "@npmcli/config": "^2.3.0", + "@npmcli/map-workspaces": "^1.0.4", + "@npmcli/package-json": "^1.0.1", + "@npmcli/run-script": "^1.8.6", + "abbrev": "~1.1.1", + "ansicolors": "~0.3.2", + "ansistyles": "~0.1.3", + "archy": "~1.0.0", + "cacache": "^15.3.0", + "chalk": "^4.1.2", + "chownr": "^2.0.0", + "cli-columns": "^3.1.2", + "cli-table3": "^0.6.0", + "columnify": "~1.5.4", + "fastest-levenshtein": "^1.0.12", + "glob": "^7.2.0", + "graceful-fs": "^4.2.8", + "hosted-git-info": "^4.0.2", + "ini": "^2.0.0", + "init-package-json": "^2.0.5", + "is-cidr": "^4.0.2", + "json-parse-even-better-errors": "^2.3.1", + "libnpmaccess": "^4.0.2", + "libnpmdiff": "^2.0.4", + "libnpmexec": "^2.0.1", + "libnpmfund": "^1.1.0", + "libnpmhook": "^6.0.2", + "libnpmorg": "^2.0.2", + "libnpmpack": "^2.0.1", + "libnpmpublish": "^4.0.1", + "libnpmsearch": "^3.1.1", + "libnpmteam": "^2.0.3", + "libnpmversion": "^1.2.1", + "make-fetch-happen": "^9.1.0", + "minipass": "^3.1.3", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "ms": "^2.1.2", + "node-gyp": "^7.1.2", + "nopt": "^5.0.0", + "npm-audit-report": "^2.1.5", + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.1.5", + "npm-pick-manifest": "^6.1.1", + "npm-profile": "^5.0.3", + "npm-registry-fetch": "^11.0.0", + "npm-user-validate": "^1.0.1", + "npmlog": "^5.0.1", + "opener": "^1.5.2", + "pacote": "^11.3.5", + "parse-conflict-json": "^1.1.1", + "qrcode-terminal": "^0.12.0", + "read": "~1.0.7", + "read-package-json": "^4.1.1", + "read-package-json-fast": "^2.0.3", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "ssri": "^8.0.1", + "tar": "^6.1.11", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^1.0.4", + "validate-npm-package-name": "~3.0.0", + "which": "^2.0.2", + "write-file-atomic": "^3.0.3" }, "dependencies": { "@gar/promisify": { @@ -31064,13 +8174,6 @@ "minipass": "^3.1.1" } }, - "string_decoder": { - "version": "1.3.0", - "bundled": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, "string-width": { "version": "2.1.1", "bundled": true, @@ -31092,6 +8195,13 @@ } } }, + "string_decoder": { + "version": "1.3.0", + "bundled": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, "stringify-package": { "version": "1.0.1", "bundled": true @@ -31270,12 +8380,6 @@ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, - "nwsapi": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", - "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==", - "peer": true - }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -31473,28 +8577,6 @@ "@wry/trie": "^0.3.0" } }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "peer": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "dependencies": { - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "peer": true - } - } - }, "ordered-read-streams": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", @@ -31521,12 +8603,6 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" }, - "p-each-series": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", - "peer": true - }, "p-event": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", @@ -31622,12 +8698,6 @@ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "peer": true - }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -31710,12 +8780,6 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "peer": true - }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -31739,12 +8803,6 @@ "pinkie": "^2.0.0" } }, - "pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "peer": true - }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -31763,23 +8821,6 @@ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, - "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "peer": true, - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "peer": true - }, "pretty-format": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", @@ -31861,16 +8902,6 @@ "winston": "2.x" } }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "peer": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, "prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -31964,8 +8995,7 @@ "ws": { "version": "8.8.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", - "requires": {} + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==" } } }, @@ -32026,7 +9056,7 @@ "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "peer": true, + "dev": true, "requires": { "loose-envify": "^1.1.0" } @@ -32041,16 +9071,6 @@ "universal-cookie": "^4.0.0" } }, - "react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - } - }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -32074,57 +9094,6 @@ "pify": "^3.0.0" } }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "peer": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "peer": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "peer": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "peer": true - } - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "peer": true - } - } - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -32221,473 +9190,198 @@ "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", - "requires": { - "is-finite": "^1.0.0" - } - }, - "replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==" - }, - "replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", - "requires": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - } - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - } - } - }, - "request-ip": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-2.2.0.tgz", - "integrity": "sha512-Hn4zUAr+XHbUs2RrfHur62t7+UhvtevqK32ordFewguEfNHUkhSdYgbG7PDGmXZEzqEXll9bei0+VMe6gkmuUQ==", - "requires": { - "is_js": "^0.9.0" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "peer": true, - "requires": { - "resolve-from": "^5.0.0" - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "peer": true - }, - "resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", - "requires": { - "value-or-function": "^3.0.0" - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, - "revalidator": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", - "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=" - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", "requires": { - "glob": "^7.1.3" + "is-finite": "^1.0.0" } }, - "rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", - "peer": true + "replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==" }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", "requires": { - "queue-microtask": "^1.2.2" + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" } }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "requires": { - "tslib": "^1.9.0" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" }, "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" } } }, - "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==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "request-ip": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-2.2.0.tgz", + "integrity": "sha512-Hn4zUAr+XHbUs2RrfHur62t7+UhvtevqK32ordFewguEfNHUkhSdYgbG7PDGmXZEzqEXll9bei0+VMe6gkmuUQ==", "requires": { - "ret": "~0.1.10" + "is_js": "^0.9.0" } }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, - "sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "peer": true, - "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "peer": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "peer": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "peer": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "peer": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "peer": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "peer": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "peer": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "peer": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "peer": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "peer": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "peer": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "peer": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "peer": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "peer": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "peer": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "peer": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "peer": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "peer": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "peer": true - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "peer": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "peer": true, - "requires": { - "isexe": "^2.0.0" - } - } + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" } }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "peer": true, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", "requires": { - "xmlchars": "^2.2.0" + "value-or-function": "^3.0.0" } }, - "scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "peer": true, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "revalidator": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", + "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "requires": { - "loose-envify": "^1.1.0" + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "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==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -32863,13 +9557,6 @@ "shell-env": "^0.3.0" } }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "optional": true, - "peer": true - }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -32910,12 +9597,6 @@ } } }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "peer": true - }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -33066,12 +9747,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "peer": true - }, "source-map-resolve": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", @@ -33156,12 +9831,6 @@ "extend-shallow": "^3.0.0" } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "peer": true - }, "sshpk": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", @@ -33183,23 +9852,6 @@ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" }, - "stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", - "peer": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "peer": true - } - } - }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -33290,48 +9942,6 @@ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", "integrity": "sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA==" }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "peer": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "peer": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "peer": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -33399,6 +10009,21 @@ } } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -33407,12 +10032,6 @@ "ansi-regex": "^2.0.0" } }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "peer": true - }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -33423,17 +10042,11 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" }, - "styled-jsx": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.4.tgz", - "integrity": "sha512-sDFWLbg4zR+UkNzfk5lPilyIgtpddfxXEULxhujorr5jtePTUqiPDc5BC0v1NRqTr/WaFBGQQUoYToGlF4B2KQ==", - "peer": true, - "requires": {} - }, "subscriptions-transport-ws": { - "version": "0.9.19", - "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz", - "integrity": "sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz", + "integrity": "sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==", + "dev": true, "requires": { "backo2": "^1.0.2", "eventemitter3": "^3.1.0", @@ -33445,7 +10058,8 @@ "symbol-observable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true } } }, @@ -33454,33 +10068,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz", "integrity": "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==" }, - "supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", - "peer": true, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": 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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "sver-compat": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", @@ -33495,12 +10082,6 @@ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==" }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "peer": true - }, "tar-fs": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", @@ -33547,33 +10128,6 @@ } } }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "peer": true, - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "peer": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "peer": true - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -33607,12 +10161,6 @@ "resolved": "https://registry.npmjs.org/timeout-as-promise/-/timeout-as-promise-1.0.0.tgz", "integrity": "sha1-c2foEfyZKs/Nzaq/LlDfr4shV28=" }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "peer": true - }, "to-absolute-glob": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", @@ -33787,26 +10335,11 @@ "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "peer": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "peer": true - }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -33821,15 +10354,6 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "peer": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, "typescript": { "version": "4.4.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", @@ -33953,12 +10477,6 @@ } } }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "peer": true - }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -34005,16 +10523,6 @@ "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" }, - "update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", - "peer": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -34033,13 +10541,6 @@ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, - "use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "peer": true, - "requires": {} - }, "util": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", @@ -34087,25 +10588,6 @@ "resolved": "https://registry.npmjs.org/uuid4/-/uuid4-2.0.3.tgz", "integrity": "sha512-CTpAkEVXMNJl2ojgtpLXHgz23dh8z81u6/HEPiQFOvBc/c2pde6TVHmH4uwY0d/GLF3tb7+VDAj4+2eJaQSdZQ==" }, - "v8-to-istanbul": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", - "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", - "peer": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "peer": true - } - } - }, "v8flags": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", @@ -34216,24 +10698,6 @@ } } }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "peer": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "peer": true, - "requires": { - "xml-name-validator": "^3.0.0" - } - }, "wait-on": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", @@ -34264,29 +10728,11 @@ } } }, - "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "peer": true, - "requires": { - "makeerror": "1.0.12" - } - }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "peer": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, "whatwg-mimetype": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", @@ -34351,12 +10797,6 @@ } } }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "peer": true - }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", @@ -34395,35 +10835,10 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "peer": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "requires": {} - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "peer": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "peer": true + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" }, "xss": { "version": "1.0.14", diff --git a/package.json b/package.json index fea22056..bda3132d 100644 --- a/package.json +++ b/package.json @@ -88,5 +88,11 @@ "ts-node": "^9.1.1", "typescript": "^4.1.5", "uniqid": "^5.4.0" + }, + "devDependencies": { + "graphql": "^16.6.0", + "lodash": "^4.17.21", + "react": "^18.2.0", + "subscriptions-transport-ws": "^0.11.0" } } From 06fcc3626758e06ed2b1cb79ed219ac9f6280f44 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 04:42:53 +0000 Subject: [PATCH 239/683] Add PCancelled to tree --- payments-eacq.cjs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 75c4fc30..e50bffa3 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -851,6 +851,10 @@ const f = async () => { type_id: TreeIncludeUp, to_id: PPayed, }, + { + type_id: TreeIncludeUp, + to_id: PCancelled, + }, { type_id: TreeIncludeUp, to_id: PPay, From bd2b505748d359dda6fff2e214efe36b27a3a385 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 05:01:26 +0000 Subject: [PATCH 240/683] Generate token in function --- payments-eacq.cjs | 225 +++++++++++----------------------------------- 1 file changed, 52 insertions(+), 173 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index e50bffa3..fa98d932 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -218,7 +218,7 @@ const f = async () => { const response = await axios({ method: 'post', url: getUrl('GetState'), - data: options, + data: {...options, Token: generateToken(options)}, }); const error = getError(response.data.ErrorCode); @@ -252,7 +252,7 @@ const f = async () => { headers: { 'Content-Type': 'application/json', }, - data: options, + data: {...options, Token: generateToken(options)}, }); const error = getError(response.data.ErrorCode); @@ -279,7 +279,7 @@ const f = async () => { headers: { 'Content-Type': 'application/json', }, - data: options, + data: {...options, Token: generateToken(options)}, }); const error = getError(response.data.ErrorCode || '0'); @@ -313,7 +313,7 @@ const f = async () => { headers: { 'Content-Type': 'application/json', }, - data: options, + data: {...options, Token: generateToken(options)}, }); const error = getError(response.data.ErrorCode); @@ -336,21 +336,12 @@ const f = async () => { } }; - const sendInit = async (noTokenData) => { - const options = { - ...noTokenData, - Token: generateToken(noTokenData), - }; - - return init(options); - }; - const confirm = async (options) => { try { const response = await axios({ method: 'post', url: getUrl('Confirm'), - data: options, + data: {...options, Token: generateToken(options)}, }); const error = getError(response.data.ErrorCode); @@ -381,7 +372,7 @@ const f = async () => { const response = await axios({ method: 'post', url: getUrl('Resend'), - data: options, + data: {...options, Token: generateToken(options)}, }); const error = getError(response.data.ErrorCode); @@ -408,7 +399,7 @@ const f = async () => { headers: { 'Content-Type': 'application/json', }, - data: options, + data: {...options, Token: generateToken(options)}, }); const error = getError(response.data.ErrorCode); @@ -435,7 +426,7 @@ const f = async () => { headers: { 'Content-Type': 'application/json', }, - data: options, + data: {...options, Token: generateToken(options)}, }); const error = getError(response.data.ErrorCode); @@ -462,7 +453,7 @@ const f = async () => { headers: { 'Content-Type': 'application/json', }, - data: options, + data: {...options, Token: generateToken(options)}, }); const error = getError(response.data.ErrorCode); @@ -489,7 +480,7 @@ const f = async () => { headers: { 'Content-Type': 'application/json', }, - data: options, + data: {...options, Token: generateToken(options)}, }); const error = getError(response.data.ErrorCode); @@ -509,16 +500,11 @@ const f = async () => { }; const getBankPaymentId = async (orderId) => { - const noTokenCheckOrderOptions = { + const checkOrderOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, OrderId: orderId, }; - const checkOrderOptions = { - ...noTokenCheckOrderOptions, - Token: generateToken(noTokenCheckOrderOptions), - }; - const checkOrderResult = await checkOrder(checkOrderOptions); expect(checkOrderResult.error).to.equal(undefined); @@ -973,7 +959,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { headers: { 'Content-Type': 'application/json', }, - data: options, + data: {...options, Token: generateToken(options)}, }); const error = getError(response.data.ErrorCode); @@ -996,15 +982,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { } }; - const sendInit = async (noTokenData) => { - const options = { - ...noTokenData, - Token: generateToken(noTokenData), - }; - - return init(options); - }; - const mpDownPay = await deep.select({ down: { link_id: { _eq: payLink.id }, @@ -1052,7 +1029,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({options}); - let initResult = await sendInit(options); + let initResult = await init(options); console.log({initResult}); @@ -1235,7 +1212,7 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { const response = await axios({ method: 'post', url: getUrl('Cancel'), - data: options, + data: {...options, Token: generateToken(options)}, }); const error = getError(response.data.ErrorCode); @@ -1274,17 +1251,12 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { const bankPaymentId = (await getPayLink(cancelledLink)).value.value.bankPaymentId; - const noTokenCancelOptions = { + const cancelOptions = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", PaymentId: bankPaymentId, Amount: cancelledLink.value.value } - const cancelOptions = { - ...noTokenCancelOptions, - Token: generateToken(noTokenCancelOptions) - } - const cancelResult = await cancel(cancelOptions); if(cancelResult.error) { @@ -1445,7 +1417,7 @@ async ( const response = await axios({ method: 'post', url: getUrl('Confirm'), - data: options, + data: {...options, Token: generateToken(options)}, }); const error = getError(response.data.ErrorCode); @@ -1474,24 +1446,16 @@ async ( const status = req.body.Status; console.log({status}); if (status == 'AUTHORIZED') { - const noTokenConfirmOptions = { + const confirmOptions = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", PaymentId: req.body.PaymentId, Amount: req.body.Amount, // Receipt: req.body.Receipt, }; - const confirmOptions = { - ...noTokenConfirmOptions, - Token: generateToken(noTokenConfirmOptions) - } const confirmResult = await confirm(confirmOptions); console.log({confirmResult}); } else if (status == 'CONFIRMED') { - const {data: payWithSpecificValueAndFromIdQueryData} = await deep.select({value: req.body.OrderId, type_id: ${PPay}, from_id: req.body.CustomerKey}); - console.log({payWithSpecificValueAndFromIdQueryData}); - const {data: payQueryData} = await deep.select({value: req.body.OrderId, type_id: ${PPay}, from_id: req.body.CustomerKey}); - console.log({payQueryData}); const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: ${PPay}, from_id: req.body.CustomerKey}); const payedInsertData = await deep.insert({ type_id: ${PPayed}, @@ -1600,7 +1564,7 @@ async ( const response = await axios({ method: 'post', url: getUrl('Cancel'), - data: options, + data: {...options, Token: generateToken(options)}, }); const error = getError(response.data.ErrorCode); @@ -1848,7 +1812,7 @@ async ( console.log({ options: initOptions }); - let initResult = await sendInit(initOptions); + let initResult = await init(initOptions); console.log({ initResult }); @@ -1867,17 +1831,12 @@ async ( const bankPaymentId = initResult.response.PaymentId; - const noTokenCancelData = { + const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: PRICE, }; - const cancelOptions = { - ...noTokenCancelData, - Token: generateToken(noTokenCancelData), - }; - console.log({ cancelOptions }); const cancelResult = await cancel(cancelOptions); @@ -1922,7 +1881,7 @@ async ( console.log({ options: initOptions }); - let initResult = await sendInit(initOptions); + let initResult = await init(initOptions); console.log({ initResult }); @@ -1940,17 +1899,12 @@ async ( const bankPaymentId = initResult.response.PaymentId; - const noTokenCancelData = { + const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: Math.floor(PRICE / 3), }; - const cancelOptions = { - ...noTokenCancelData, - Token: generateToken(noTokenCancelData), - }; - console.log({ cancelOptions }); { @@ -1986,20 +1940,15 @@ async ( payLink?.value?.value ?? payLink.id ); - const noTokenCancelData = { + const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: PRICE, }; - const options = { - ...noTokenCancelData, - Token: generateToken(noTokenCancelData), - }; - - console.log({ options }); + console.log({ cancelOptions }); - const cancelResult = await cancel(options); + const cancelResult = await cancel(cancelOptions); expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('REFUNDED'); @@ -2020,27 +1969,22 @@ async ( payLink?.value?.value ?? payLink.id ); - const noTokenCancelData = { + const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: Math.floor(PRICE / 3), }; - const options = { - ...noTokenCancelData, - Token: generateToken(noTokenCancelData), - }; - - console.log({ options }); + console.log({ cancelOptions }); { - const cancelResult = await cancel(options); + const cancelResult = await cancel(cancelOptions); expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); } { - const cancelResult = await cancel(options); + const cancelResult = await cancel(cancelOptions); expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); @@ -2062,20 +2006,15 @@ async ( payLink?.value?.value ?? payLink.id ); - const noTokenCancelData = { + const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: PRICE, }; - const options = { - ...noTokenCancelData, - Token: generateToken(noTokenCancelData), - }; - - console.log({ options }); + console.log({ cancelOptions }); - const cancelResult = await cancel(options); + const cancelResult = await cancel(cancelOptions); expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('CANCELED'); @@ -2214,21 +2153,12 @@ async ( payLink?.value?.value ?? payLink.id ); - const noTokenGetStateData = { + const getStateOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - }; - - const newGetStateData = { - ...noTokenGetStateData, PaymentId: bankPaymentId, }; - const options = { - ...newGetStateData, - Token: generateToken(newGetStateData), - }; - - const getStateResult = await getState(options); + const getStateResult = await getState(getStateOptions); expect(getStateResult.error).to.equal(undefined); console.log('testGetState-end'); @@ -2238,17 +2168,12 @@ async ( console.log('testGetCardList-end'); await testFinishAuthorize(); - const noTokenGetCardListData = { + const getCardListOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: deep.linkId, }; - const options = { - ...noTokenGetCardListData, - Token: generateToken(noTokenGetCardListData), - }; - - const getCardListResult = await getCardList(options); + const getCardListResult = await getCardList(getCardListOptions); expect(getCardListResult.error).to.equal(undefined); console.log('testGetCardList-end'); @@ -2256,15 +2181,9 @@ async ( const testResend = async () => { console.log('testResend-start'); - const noTokenResendOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - }; - const resendOptions = { - ...noTokenResendOptions, - Token: generateToken(noTokenResendOptions), + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, }; - console.log({ resendOptions }); const resendResult = await resend(resendOptions); @@ -2279,7 +2198,7 @@ async ( const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); - const initResult = await sendInit({ + const initResult = await init({ TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, Amount: 5500, OrderId: uniqid(), @@ -2293,53 +2212,38 @@ async ( url: initResult.response.PaymentURL, }); - const noTokenGetCardListOptions = { + const getCardListOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: deep.linkId, }; - const getCardListOptions = { - ...noTokenGetCardListOptions, - Token: generateToken(noTokenGetCardListOptions), - }; - const getCardListResult = await getCardList(getCardListOptions); expect(getCardListResult.response[0].RebillId).to.have.length.above(0); - const noTokenGetStateOptions = { + const getStateOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: initResult.response.PaymentId, }; - const getStateOptions = { - ...noTokenGetStateOptions, - Token: generateToken(noTokenGetStateOptions), - }; - const getStateResult = await getState(getStateOptions); expect(getStateResult.response.Status).to.equal('AUTHORIZED'); - const newInitResult = await sendInit({ + const newInitResult = await init({ TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, Amount: 5500, OrderId: uniqid(), CustomerKey: deep.linkId, }); - const newChargeData = { + const newChargeOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: newInitResult.response.PaymentId, RebillId: Number(getCardListResult.response[0].RebillId), }; - const options = { - ...newChargeData, - Token: generateToken(newChargeData), - }; - - const chargeResult = await charge(options); + const chargeResult = await charge(newChargeOptions); expect(chargeResult.error).to.equal(undefined); console.log('testCharge-end'); @@ -2350,16 +2254,11 @@ async ( const customerKey = uniqid(); - const noTokenAddCustomerOptions = { + const addCustomerOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: customerKey, }; - const addCustomerOptions = { - ...noTokenAddCustomerOptions, - Token: generateToken(noTokenAddCustomerOptions), - }; - const addCustomerResult = await addCustomer(addCustomerOptions); expect(addCustomerResult.error).to.equal(undefined); @@ -2371,31 +2270,21 @@ async ( const customerKey = uniqid(); - const noTokenAddCustomerData = { + const customerOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: customerKey, }; - const newAddCustomerData = { - ...noTokenAddCustomerData, - Phone: process.env.PAYMENT_TEST_PHONE, - }; - const addCustomerDataOptions = { - ...newAddCustomerData, - Token: generateToken(newAddCustomerData), + ...customerOptions, + Phone: process.env.PAYMENT_TEST_PHONE, }; const addResult = await addCustomer(addCustomerDataOptions); expect(addResult.error).to.equal(undefined); - const getCustomerDataOptions = { - ...noTokenAddCustomerData, - Token: generateToken(noTokenAddCustomerData), - }; - - const getResult = await getCustomer(getCustomerDataOptions); + const getResult = await getCustomer(customerOptions); expect(getResult.error).to.equal(undefined); expect(getResult.response.Phone).to.equal(process.env.PAYMENT_TEST_PHONE); @@ -2408,31 +2297,21 @@ async ( const customerKey = uniqid(); - const noTokenRemoveCustomerData = { + const removeCustomerData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: customerKey, }; const newAddCustomerData = { - ...noTokenRemoveCustomerData, + ...removeCustomerData, Phone: process.env.PAYMENT_TEST_PHONE, }; - const addCustomerDataOptions = { - ...newAddCustomerData, - Token: generateToken(newAddCustomerData), - }; - - const addResult = await addCustomer(addCustomerDataOptions); + const addResult = await addCustomer(newAddCustomerData); expect(addResult.error).to.equal(undefined); - const removeCustomerDataOptions = { - ...noTokenRemoveCustomerData, - Token: generateToken(noTokenRemoveCustomerData), - }; - - const removeResult = await removeCustomer(removeCustomerDataOptions); + const removeResult = await removeCustomer(removeCustomerData); expect(removeResult.error).to.equal(undefined); From 21ee6e56a380a85e2b46e3923a4e221413321601 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 05:03:22 +0000 Subject: [PATCH 241/683] Remove redundant customer key variable --- payments-eacq.cjs | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index fa98d932..8248a510 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2252,11 +2252,9 @@ async ( const testAddCustomer = async () => { console.log('testAddCustomer-start'); - const customerKey = uniqid(); - const addCustomerOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: customerKey, + CustomerKey: uniqid(), }; const addCustomerResult = await addCustomer(addCustomerOptions); @@ -2268,11 +2266,9 @@ async ( const testGetCustomer = async () => { console.log('testGetCustomer-start'); - const customerKey = uniqid(); - const customerOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: customerKey, + CustomerKey: uniqid(), }; const addCustomerDataOptions = { @@ -2295,11 +2291,9 @@ async ( const testRemoveCustomer = async () => { console.log('testRemoveCustomer-start'); - const customerKey = uniqid(); - const removeCustomerData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: customerKey, + CustomerKey: uniqid(), }; const newAddCustomerData = { From 86534997b57c47cf55eac31f704f89df35b79c18 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 05:12:50 +0000 Subject: [PATCH 242/683] Separate tests --- payments-eacq.cjs | 1212 ++++++++++++++++++++++----------------------- 1 file changed, 602 insertions(+), 610 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 8248a510..fffa0047 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1592,9 +1592,6 @@ async ( const callTests = async () => { console.log('callTests-start'); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const PPayment = await deep.id(packageName, 'Payment'); const PObject = await deep.id(packageName, 'Object'); const PSum = await deep.id(packageName, 'Sum'); @@ -1603,11 +1600,7 @@ async ( const PPayed = await deep.id(packageName, 'Payed'); const PError = await deep.id(packageName, 'Error'); const PCancelled = await deep.id(packageName, 'Cancelled'); - const paymentTreeId = await deep.id(packageName, 'paymentTree'); - - console.log({ paymentTreeId }); - const Type = await deep.id('@deep-foundation/core', 'Type'); const Any = await deep.id('@deep-foundation/core', 'Any'); @@ -1657,438 +1650,548 @@ async ( console.log("deleteTestLinks-start"); }; - const testInit = async () => { - console.log('testInit-start'); - const { - data: [{ id: paymentId }], - } = await deep.insert({ - type_id: PPayment, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ paymentId }); - - const { - data: [{ id: sumId }], - } = await deep.insert({ - type_id: PSum, - from_id: sumProviderId, - to_id: paymentId, - number: { data: { value: 150 } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ sum: sumId }); - - const { - data: [{ id: objectId }], - } = await deep.insert({ - type_id: PObject, - from_id: paymentId, - to_id: productId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, + const callRealizationTests = async () => { + const testCancel = async () => { + console.log('testCancel-start'); + const testCancelAfterPayBeforeConfirmFullPrice = async () => { + console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + Amount: PRICE, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, }, - ], - }, - }); - - console.log({ object: objectId }); - - const { - data: [{ id: payId }], - } = await deep.insert({ - type_id: PPay, - from_id: deep.linkId, - to_id: sumId, - string: { data: { value: uniqid() } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // } + }; + + console.log({ options: initOptions }); + + let initResult = await init(initOptions); + + console.log({ initResult }); + + expect(initResult.error).to.equal(undefined); + + const url = initResult.response.PaymentURL; + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + await payInBrowser({ + browser, + page, + url, + }); + + const bankPaymentId = initResult.response.PaymentId; + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; + + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + + console.log({ cancelResponse: cancelResult }); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('REVERSED'); + console.log('testCanselAfterPayBeforeConfirmFullPrice-end'); + }; + + const testCancelAfterPayBeforeConfirmCustomPriceX2 = async () => { + console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-start'); + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + Amount: PRICE, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, }, - ], - }, - }); - - console.log({ pay: payId }); - - await sleep(9000); - - const { - data: { length }, - } = await deep.select({ - type_id: PUrl, - to_id: payId, - }); - - expect(length).to.greaterThan(0); - console.log('testInit-end'); - }; - - const testFinishAuthorize = async () => { - console.log('testFinishAuthorize-start'); - await testInit(); - const { - data: [ + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // } + }; + + console.log({ options: initOptions }); + + let initResult = await init(initOptions); + + console.log({ initResult }); + + expect(initResult.error).to.equal(undefined); + + const url = initResult.response.PaymentURL; + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); + + const bankPaymentId = initResult.response.PaymentId; + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: Math.floor(PRICE / 3), + }; + + console.log({ cancelOptions }); + { - value: { value: url }, - }, - ], - } = await deep.select({ - type_id: PUrl, - }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, - }); - console.log('testFinishAuthorize-end'); - }; - - const testConfirm = async () => { - console.log('testConfirm-start'); - await testFinishAuthorize(); - await sleep(17000); - let { data } = await deep.select({ - type_id: PPayed, - }); - expect(data.length).to.greaterThan(0); - console.log('testConfirm-end'); - }; + const cancelResult = await cancel(cancelOptions); + + console.log({ cancelResponse: cancelResult }); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); + } + { + const cancelResult = await cancel(cancelOptions); + + console.log({ cancelResponse: cancelResult }); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); + } + console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-end'); + }; + + const testCancelAfterPayAfterConfirmFullPrice = async () => { + console.log('testCancelAfterPayAfterConfirmFullPrice-start'); + await testConfirm(); + + const { + data: [payLink], + } = await deep.select({ + type_id: PPay, + }); + + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; + + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('REFUNDED'); + console.log('testCancelAfterPayAfterConfirmFullPrice-end'); + }; + + const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); + await testConfirm(); + + const { + data: [payLink], + } = await deep.select({ + type_id: PPay, + }); + + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: Math.floor(PRICE / 3), + }; + + console.log({ cancelOptions }); + + { + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); + } + { + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); + } + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); + }; + + const testCancelBeforePay = async () => { + console.log('testCancelBeforePay-start'); + await testInit(); + + const { + data: [payLink], + } = await deep.select({ + type_id: PPay, + }); + + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; + + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('CANCELED'); + console.log('testCancelBeforePay-end'); + }; + await testCancelAfterPayBeforeConfirmFullPrice(); + await deleteTestLinks(); + await testCancelAfterPayBeforeConfirmCustomPriceX2(); + await deleteTestLinks(); + await testCancelAfterPayAfterConfirmFullPrice(); + await deleteTestLinks(); + await testCancelAfterPayAfterConfirmCustomPriceX2(); + await deleteTestLinks(); + await testCancelBeforePay(); + await deleteTestLinks(); + + console.log('testCancel-end'); + }; - const testCancelRealization = async () => { - console.log('testCancel-start'); - const testCancelAfterPayBeforeConfirmFullPrice = async () => { - console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); - const initOptions = { + const testResend = async () => { + console.log('testResend-start'); + const resendOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - Amount: PRICE, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: sum, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // } }; + console.log({ resendOptions }); + + const resendResult = await resend(resendOptions); + console.log({ resendResult }); + + expect(resendResult.error).to.equal(undefined); + console.log('testResend-end'); + }; - console.log({ options: initOptions }); - - let initResult = await init(initOptions); - - console.log({ initResult }); - - expect(initResult.error).to.equal(undefined); - - const url = initResult.response.PaymentURL; - + const testCharge = async () => { + console.log('testCharge-start'); const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); - + + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: 5500, + OrderId: uniqid(), + CustomerKey: deep.linkId, + Recurrent: 'Y', + }); + await payInBrowser({ browser, page, - url, + url: initResult.response.PaymentURL, }); - - const bankPaymentId = initResult.response.PaymentId; - - const cancelOptions = { + + const getCardListOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, + CustomerKey: deep.linkId, }; - - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - - console.log({ cancelResponse: cancelResult }); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('REVERSED'); - console.log('testCanselAfterPayBeforeConfirmFullPrice-end'); - }; - - const testCancelAfterPayBeforeConfirmCustomPriceX2 = async () => { - console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-start'); - const initOptions = { + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.response[0].RebillId).to.have.length.above(0); + + const getStateOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.response.Status).to.equal('AUTHORIZED'); + + const newInitResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: 5500, OrderId: uniqid(), CustomerKey: deep.linkId, - PayType: 'T', - Amount: PRICE, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: sum, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // } - }; - - console.log({ options: initOptions }); - - let initResult = await init(initOptions); - - console.log({ initResult }); - - expect(initResult.error).to.equal(undefined); - - const url = initResult.response.PaymentURL; - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, }); - - const bankPaymentId = initResult.response.PaymentId; - - const cancelOptions = { + + const newChargeOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: Math.floor(PRICE / 3), + PaymentId: newInitResult.response.PaymentId, + RebillId: Number(getCardListResult.response[0].RebillId), }; - - console.log({ cancelOptions }); - - { - const cancelResult = await cancel(cancelOptions); - - console.log({ cancelResponse: cancelResult }); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); - } - { - const cancelResult = await cancel(cancelOptions); - - console.log({ cancelResponse: cancelResult }); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); - } - console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-end'); + + const chargeResult = await charge(newChargeOptions); + + expect(chargeResult.error).to.equal(undefined); + console.log('testCharge-end'); }; - const testCancelAfterPayAfterConfirmFullPrice = async () => { - console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - await testConfirm(); - - const { - data: [payLink], - } = await deep.select({ - type_id: PPay, - }); - - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); - - const cancelOptions = { + const testAddCustomer = async () => { + console.log('testAddCustomer-start'); + + const addCustomerOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, + CustomerKey: uniqid(), }; - - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('REFUNDED'); - console.log('testCancelAfterPayAfterConfirmFullPrice-end'); + + const addCustomerResult = await addCustomer(addCustomerOptions); + + expect(addCustomerResult.error).to.equal(undefined); + console.log('testAddCustomer-end'); }; - const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); - await testConfirm(); - - const { - data: [payLink], - } = await deep.select({ - type_id: PPay, - }); - - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); - - const cancelOptions = { + const testGetCustomer = async () => { + console.log('testGetCustomer-start'); + + const customerOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: Math.floor(PRICE / 3), + CustomerKey: uniqid(), }; - - console.log({ cancelOptions }); - - { - const cancelResult = await cancel(cancelOptions); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); - } - { - const cancelResult = await cancel(cancelOptions); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); - } - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); + + const addCustomerDataOptions = { + ...customerOptions, + Phone: process.env.PAYMENT_TEST_PHONE, + }; + + const addResult = await addCustomer(addCustomerDataOptions); + + expect(addResult.error).to.equal(undefined); + + const getResult = await getCustomer(customerOptions); + + expect(getResult.error).to.equal(undefined); + expect(getResult.response.Phone).to.equal(process.env.PAYMENT_TEST_PHONE); + + console.log('testGetCustomer-end'); }; - const testCancelBeforePay = async () => { - console.log('testCancelBeforePay-start'); - await testInit(); - - const { - data: [payLink], - } = await deep.select({ - type_id: PPay, - }); - - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); - - const cancelOptions = { + const testRemoveCustomer = async () => { + console.log('testRemoveCustomer-start'); + + const removeCustomerData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, + CustomerKey: uniqid(), }; - - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('CANCELED'); - console.log('testCancelBeforePay-end'); + + const newAddCustomerData = { + ...removeCustomerData, + Phone: process.env.PAYMENT_TEST_PHONE, + }; + + const addResult = await addCustomer(newAddCustomerData); + + expect(addResult.error).to.equal(undefined); + + const removeResult = await removeCustomer(removeCustomerData); + + expect(removeResult.error).to.equal(undefined); + + console.log('testRemoveCustomer-end'); }; - await testCancelAfterPayBeforeConfirmFullPrice(); - await deleteTestLinks(); - await testCancelAfterPayBeforeConfirmCustomPriceX2(); - await deleteTestLinks(); - await testCancelAfterPayAfterConfirmFullPrice(); - await deleteTestLinks(); - await testCancelAfterPayAfterConfirmCustomPriceX2(); - await deleteTestLinks(); - await testCancelBeforePay(); - await deleteTestLinks(); - - console.log('testCancel-end'); + + await testCancel(); + await testResend(); + await testCharge(); + await testAddCustomer(); + await testGetCustomer(); + await testRemoveCustomer(); }; - const testCancelIntegration = async () => { - console.log('testCancelIntegration-start'); - const testCancelAfterPayAfterConfirmFullPrice = async () => { - console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - await testConfirm(); + const callIntegrationTests = async () => { + const testInit = async () => { + console.log('testInit-start'); const { - data: [payLink], - } = await deep.select({ - type_id: PPay, + data: [{ id: paymentId }], + } = await deep.insert({ + type_id: PPayment, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); - - const {data: [payedLink]} = await deep.select({ - type_id: PPayed, - to_id: payLink.id + console.log({ paymentId }); + + const { + data: [{ id: sumId }], + } = await deep.insert({ + type_id: PSum, + from_id: sumProviderId, + to_id: paymentId, + number: { data: { value: 150 } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); - - const {data: [cancelledLink]} = await deep.insert({ - type_id: PCancelled, - from_id: tinkoffProviderId, - to_id: payedLink.id, - number: {data: {value: PRICE}} + + console.log({ sum: sumId }); + + const { + data: [{ id: objectId }], + } = await deep.insert({ + type_id: PObject, + from_id: paymentId, + to_id: productId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); - - await sleep(5000); - - const {data: cancelledErrors} = await deep.select({ - type_id: PError, - to_id: cancelledLink.id + + console.log({ object: objectId }); + + const { + data: [{ id: payId }], + } = await deep.insert({ + type_id: PPay, + from_id: deep.linkId, + to_id: sumId, + string: { data: { value: uniqid() } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); - - expect(cancelledErrors.length).to.equal(0); - console.log('testCancelAfterPayAfterConfirmFullPrice-end'); + + console.log({ pay: payId }); + + await sleep(9000); + + const { + data: { length }, + } = await deep.select({ + type_id: PUrl, + to_id: payId, + }); + + expect(length).to.greaterThan(0); + console.log('testInit-end'); }; - const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); - await testConfirm(); - + const testFinishAuthorize = async () => { + console.log('testFinishAuthorize-start'); + await testInit(); const { - data: [payLink], + data: [ + { + value: { value: url }, + }, + ], } = await deep.select({ - type_id: PPay, + type_id: PUrl, + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, }); + console.log('testFinishAuthorize-end'); + }; - const {data: [payedLink]} = await deep.select({ + const testConfirm = async () => { + console.log('testConfirm-start'); + await testFinishAuthorize(); + await sleep(17000); + let { data } = await deep.select({ type_id: PPayed, - to_id: payLink.id }); + expect(data.length).to.greaterThan(0); + console.log('testConfirm-end'); + }; - for (let i = 0; i < 2; i++) { + const testCancelIntegration = async () => { + console.log('testCancelIntegration-start'); + const testCancelAfterPayAfterConfirmFullPrice = async () => { + console.log('testCancelAfterPayAfterConfirmFullPrice-start'); + await testConfirm(); + + const { + data: [payLink], + } = await deep.select({ + type_id: PPay, + }); + + const {data: [payedLink]} = await deep.select({ + type_id: PPayed, + to_id: payLink.id + }); + const {data: [cancelledLink]} = await deep.insert({ type_id: PCancelled, from_id: tinkoffProviderId, to_id: payedLink.id, - number: {data: {value: Math.floor(PRICE / 3)}} + number: {data: {value: PRICE}} }); await sleep(5000); @@ -2097,243 +2200,132 @@ async ( type_id: PError, to_id: cancelledLink.id }); - + expect(cancelledErrors.length).to.equal(0); - } - - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); + console.log('testCancelAfterPayAfterConfirmFullPrice-end'); + }; + + const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); + await testConfirm(); + + const { + data: [payLink], + } = await deep.select({ + type_id: PPay, + }); + + const {data: [payedLink]} = await deep.select({ + type_id: PPayed, + to_id: payLink.id + }); + + for (let i = 0; i < 2; i++) { + const {data: [cancelledLink]} = await deep.insert({ + type_id: PCancelled, + from_id: tinkoffProviderId, + to_id: payedLink.id, + number: {data: {value: Math.floor(PRICE / 3)}} + }); + + await sleep(5000); + + const {data: cancelledErrors} = await deep.select({ + type_id: PError, + to_id: cancelledLink.id + }); + + expect(cancelledErrors.length).to.equal(0); + } + + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); + }; + + const testCancelBeforePay = async () => { + console.log('testCancelBeforePay-start'); + await testInit(); + + const { + data: [payLink], + } = await deep.select({ + type_id: PPay, + }); + + const {data: [cancelledLink]} = await deep.insert({ + type_id: PCancelled, + from_id: tinkoffProviderId, + to_id: payLink.id, + number: {data: {value: PRICE}} + }); + + await sleep(5000); + + const {data: cancelledErrors} = await deep.select({ + type_id: PError, + to_id: cancelledLink.id + }); + + expect(cancelledErrors.length).to.equal(0); + console.log('testCancelBeforePay-end'); + }; + await testCancelAfterPayAfterConfirmFullPrice(); + await deleteTestLinks(); + await testCancelAfterPayAfterConfirmCustomPriceX2(); + await deleteTestLinks(); + await testCancelBeforePay(); + await deleteTestLinks(); + + console.log('testCancelIntegration-end'); }; - const testCancelBeforePay = async () => { - console.log('testCancelBeforePay-start'); - await testInit(); - + const testGetState = async () => { + console.log('testGetState-start'); + await testFinishAuthorize(); + const { data: [payLink], - } = await deep.select({ - type_id: PPay, - }); - - const {data: [cancelledLink]} = await deep.insert({ - type_id: PCancelled, - from_id: tinkoffProviderId, - to_id: payLink.id, - number: {data: {value: PRICE}} - }); - - await sleep(5000); - - const {data: cancelledErrors} = await deep.select({ - type_id: PError, - to_id: cancelledLink.id - }); - - expect(cancelledErrors.length).to.equal(0); - console.log('testCancelBeforePay-end'); + } = await deep.select({ type_id: PPay }); + + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); + + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.error).to.equal(undefined); + console.log('testGetState-end'); }; - await testCancelAfterPayAfterConfirmFullPrice(); - await deleteTestLinks(); - await testCancelAfterPayAfterConfirmCustomPriceX2(); - await deleteTestLinks(); - await testCancelBeforePay(); - await deleteTestLinks(); - - console.log('testCancelIntegration-end'); - }; - - const testGetState = async () => { - console.log('testGetState-start'); - await testFinishAuthorize(); - - const { - data: [payLink], - } = await deep.select({ type_id: PPay }); - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); - - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, + const testGetCardList = async () => { + console.log('testGetCardList-end'); + await testFinishAuthorize(); + + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.error).to.equal(undefined); + console.log('testGetCardList-end'); }; - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.error).to.equal(undefined); - console.log('testGetState-end'); - }; - - const testGetCardList = async () => { - console.log('testGetCardList-end'); + await testInit(); await testFinishAuthorize(); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.error).to.equal(undefined); - console.log('testGetCardList-end'); - }; - - const testResend = async () => { - console.log('testResend-start'); - const resendOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - }; - console.log({ resendOptions }); - - const resendResult = await resend(resendOptions); - console.log({ resendResult }); - - expect(resendResult.error).to.equal(undefined); - console.log('testResend-end'); - }; - - const testCharge = async () => { - console.log('testCharge-start'); - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: 5500, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Recurrent: 'Y', - }); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.response[0].RebillId).to.have.length.above(0); - - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.response.Status).to.equal('AUTHORIZED'); - - const newInitResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: 5500, - OrderId: uniqid(), - CustomerKey: deep.linkId, - }); - - const newChargeOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: newInitResult.response.PaymentId, - RebillId: Number(getCardListResult.response[0].RebillId), - }; - - const chargeResult = await charge(newChargeOptions); - - expect(chargeResult.error).to.equal(undefined); - console.log('testCharge-end'); - }; - - const testAddCustomer = async () => { - console.log('testAddCustomer-start'); - - const addCustomerOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - - const addCustomerResult = await addCustomer(addCustomerOptions); - - expect(addCustomerResult.error).to.equal(undefined); - console.log('testAddCustomer-end'); - }; - - const testGetCustomer = async () => { - console.log('testGetCustomer-start'); - - const customerOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - - const addCustomerDataOptions = { - ...customerOptions, - Phone: process.env.PAYMENT_TEST_PHONE, - }; - - const addResult = await addCustomer(addCustomerDataOptions); - - expect(addResult.error).to.equal(undefined); - - const getResult = await getCustomer(customerOptions); - - expect(getResult.error).to.equal(undefined); - expect(getResult.response.Phone).to.equal(process.env.PAYMENT_TEST_PHONE); - - console.log('testGetCustomer-end'); - }; - - const testRemoveCustomer = async () => { - console.log('testRemoveCustomer-start'); - - const removeCustomerData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - - const newAddCustomerData = { - ...removeCustomerData, - Phone: process.env.PAYMENT_TEST_PHONE, - }; - - const addResult = await addCustomer(newAddCustomerData); - - expect(addResult.error).to.equal(undefined); - - const removeResult = await removeCustomer(removeCustomerData); - - expect(removeResult.error).to.equal(undefined); - - console.log('testRemoveCustomer-end'); + await testConfirm(); + await testCancelIntegration(); + await testGetState(); + await testGetCardList(); }; - await testInit(); - await deleteTestLinks(); - await testConfirm(); - await deleteTestLinks(); - await testCancelRealization(); - await deleteTestLinks(); - await testCancelIntegration(); - await deleteTestLinks(); - await testGetState(); - await deleteTestLinks(); - await testGetCardList(); - await deleteTestLinks(); - await testResend(); - await deleteTestLinks(); - await testCharge(); - await deleteTestLinks(); - await testAddCustomer(); - await deleteTestLinks(); - await testGetCustomer(); - await deleteTestLinks(); - await testRemoveCustomer(); - await deleteTestLinks(); + await callRealizationTests(); + await callIntegrationTests(); }; await callTests(); From c35ba523980ce8fdfb89d20c79f3e9b22d87b898 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 05:18:07 +0000 Subject: [PATCH 243/683] Add testInit realization test --- payments-eacq.cjs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index fffa0047..d5c9d536 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1651,6 +1651,41 @@ async ( }; const callRealizationTests = async () => { + const testInit = async () => { + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + Amount: 5500, + Description: 'Test shopping', + CustomerKey: uniqid(), + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: 5500, + // Quantity: 1, + // Amount: 5500, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + expect(initResult.error).to.equal(undefined); + } + + const testCancel = async () => { console.log('testCancel-start'); const testCancelAfterPayBeforeConfirmFullPrice = async () => { From bd1864a135fa2c6fe357559fce57f1dc3ab0d92e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 05:20:33 +0000 Subject: [PATCH 244/683] Add realization testConfirm --- payments-eacq.cjs | 50 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index d5c9d536..cc0288af 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1683,7 +1683,55 @@ async ( const initResult = await init(initOptions); expect(initResult.error).to.equal(undefined); - } + }; + + const testConfirm = async () => { + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: 5500, + OrderId: uniqid(), + CustomerKey: uniqid(), + PayType: 'T', + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: 5500, + // Quantity: 1, + // Amount: 5500, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + confirmDebug('initResult', initResult?.response?.Success); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const confirmOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const confirmResult = await confirm(confirmOptions); + confirmDebug('confirm', confirmResult); + + expect(confirmResult.error).to.equal(undefined); + expect(confirmResult.response.Status).to.equal('CONFIRMED'); + }; const testCancel = async () => { From 31b67e6852ec960475b53ddd656780adc299860f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 05:26:47 +0000 Subject: [PATCH 245/683] Add get state realization test --- payments-eacq.cjs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index cc0288af..70dd7107 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1991,6 +1991,34 @@ async ( console.log('testCancel-end'); }; + const testGetState = async () => { + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: uniqid(), + Amount: PRICE, + }); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.error).to.equal(undefined); + + } + const testResend = async () => { console.log('testResend-start'); const resendOptions = { From b8f43b8292f9e126059f3d3b3cbb8af9c37ecd27 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 05:33:11 +0000 Subject: [PATCH 246/683] Add get card list realization test --- payments-eacq.cjs | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 70dd7107..ec04f235 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2017,7 +2017,39 @@ async ( expect(getStateResult.error).to.equal(undefined); - } + }; + + const testGetCardList = async () => { + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initResult = await sendInit({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + OrderId: uniqid(), + Amount: 5500, + Recurrent: 'Y', + }); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + + const getCardListResult = await getCardList(getCardListOptions); + + const getCardListDebug = log.extend('get-card-list-result'); + getCardListDebug(getCardListResult); + + expect(getCardListResult.error).to.equal(undefined); + + }; const testResend = async () => { console.log('testResend-start'); From c4e0243a9b04a2782d51fb48d38479514a16f6f2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 05:36:45 +0000 Subject: [PATCH 247/683] Add get card list realization test --- payments-eacq.cjs | 3 --- 1 file changed, 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index ec04f235..e9ad6651 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2044,9 +2044,6 @@ async ( const getCardListResult = await getCardList(getCardListOptions); - const getCardListDebug = log.extend('get-card-list-result'); - getCardListDebug(getCardListResult); - expect(getCardListResult.error).to.equal(undefined); }; From 69a835965d636c2ec0fe3ea46e33841b6011772a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 05:40:18 +0000 Subject: [PATCH 248/683] Call realization tests --- payments-eacq.cjs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index e9ad6651..14e45606 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2181,7 +2181,11 @@ async ( console.log('testRemoveCustomer-end'); }; + await testInit(); + await testConfirm(); await testCancel(); + await testGetState(); + await getGetCardList(); await testResend(); await testCharge(); await testAddCustomer(); From f3ec089481e638ac9d81c54a9f0df7874d1e8e29 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 05:40:33 +0000 Subject: [PATCH 249/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 14e45606..bd3c9703 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2185,7 +2185,7 @@ async ( await testConfirm(); await testCancel(); await testGetState(); - await getGetCardList(); + await testGetCardList(); await testResend(); await testCharge(); await testAddCustomer(); From ca8eee03432c43f51d785cd056252bb14dfd21a2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 05:41:41 +0000 Subject: [PATCH 250/683] Use PRICE constant --- payments-eacq.cjs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index bd3c9703..6736dcea 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -21,7 +21,7 @@ dotenvExpand.expand(myEnv); const packageName = '@deep-foundation/payments-eacq'; -const PRICE = 5500; +const PRICE = PRICE; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); @@ -1655,7 +1655,7 @@ async ( const initOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, OrderId: uniqid(), - Amount: 5500, + Amount: PRICE, Description: 'Test shopping', CustomerKey: uniqid(), Language: 'ru', @@ -1667,9 +1667,9 @@ async ( // Receipt: { // Items: [{ // Name: 'Test item', - // Price: 5500, + // Price: PRICE, // Quantity: 1, - // Amount: 5500, + // Amount: PRICE, // PaymentMethod: 'prepayment', // PaymentObject: 'service', // Tax: 'none', @@ -1691,16 +1691,16 @@ async ( const initOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: 5500, + Amount: PRICE, OrderId: uniqid(), CustomerKey: uniqid(), PayType: 'T', // Receipt: { // Items: [{ // Name: 'Test item', - // Price: 5500, + // Price: PRICE, // Quantity: 1, - // Amount: 5500, + // Amount: PRICE, // PaymentMethod: 'prepayment', // PaymentObject: 'service', // Tax: 'none', @@ -2027,7 +2027,7 @@ async ( TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: uniqid(), OrderId: uniqid(), - Amount: 5500, + Amount: PRICE, Recurrent: 'Y', }); @@ -2069,7 +2069,7 @@ async ( const initResult = await init({ TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: 5500, + Amount: PRICE, OrderId: uniqid(), CustomerKey: deep.linkId, Recurrent: 'Y', @@ -2101,7 +2101,7 @@ async ( const newInitResult = await init({ TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: 5500, + Amount: PRICE, OrderId: uniqid(), CustomerKey: deep.linkId, }); From f8601de32c9220daf22d343798e15c238f8f219d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 05:45:01 +0000 Subject: [PATCH 251/683] Add and use BaseCancelled --- payments-eacq.cjs | 3 ++- payments.cjs | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 6736dcea..7248a379 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -588,6 +588,7 @@ const f = async () => { const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); + const BaseCancelled = await deep.id('@deep-foundation/payments', 'Cancelled'); const BaseError = await deep.id('@deep-foundation/payments', 'Error'); const { @@ -790,7 +791,7 @@ const f = async () => { const { data: [{ id: PCancelled }], } = await deep.insert({ - type_id: Type, + type_id: BaseCancelled, from_id: PTinkoffProvider, to_id: Any, in: { diff --git a/payments.cjs b/payments.cjs index 5f9b567e..58fce6e2 100644 --- a/payments.cjs +++ b/payments.cjs @@ -160,6 +160,19 @@ const f = async () => { console.log({ PPayed: PPayed }); + const { data: [{ id: PCancelled }] } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Cancelled' } }, + } }, + }); + + console.log({ PPayed: PPayed }); + const { data: [{ id: PError }] } = await deep.insert({ type_id: Type, from_id: Any, From a5286cf3a809e76f5e809ea12c58c68ee35ae89c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 05:49:31 +0000 Subject: [PATCH 252/683] Do not hardcode types in handlers --- payments-eacq.cjs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 7248a379..98dd4729 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -19,6 +19,7 @@ const { expect } = require('chai'); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); +const basePackageName = '@deep-foundation/payments'; const packageName = '@deep-foundation/payments-eacq'; const PRICE = PRICE; @@ -992,8 +993,8 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({mpDownPay}); - // const paymentLink = mpDownPay.data.find(link => link.type_id == ${PPayment}); - const sum = mpDownPay.data.find(link => link.type_id == ${PSum}).value.value; + // const paymentLink = mpDownPay.data.find(link => link.type_id == (await deep.id(${packageName}, "Payment"))); + const sum = mpDownPay.data.find(link => link.type_id == (await deep.id(${packageName}, "Sum"))).value.value; // console.log({paymentLink}); console.log({sum}); @@ -1039,7 +1040,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const { data: [{ id: error }], } = await deep.insert({ - type_id: ${PError}, + type_id: (await deep.id(${packageName}, "Error")), from_id: ${tinkoffProviderId}, to_id: payLink.id, string: { data: { value: initResult.error } }, @@ -1059,7 +1060,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const { data: [{ id: urlId }], } = await deep.insert({ - type_id: ${PUrl}, + type_id: (await deep.id(${packageName}, "Url")), from_id: ${tinkoffProviderId}, to_id: payLink.id, string: { data: { value: initResult.response.PaymentURL } }, @@ -1236,10 +1237,10 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { const toLink = await deep.select({ id: cancelledLink.to_id }); - if(toLink.type_id === ${PPay}) { + if(toLink.type_id === (await deep.id(${packageName}, "Pay"))) { return toLink; } - if (toLink.type_id === ${PPayed}) { + if (toLink.type_id === (await deep.id(${packageName}, "Payed"))) { return await deep.select({ id: toLink.to_id }); @@ -1262,7 +1263,7 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { if(cancelResult.error) { await deep.insert({ - type_id: ${PError}, + type_id: (await deep.id(${packageName}, "Error")), from_id: ${tinkoffProviderId}, to_id: cancelledLink.id, string: { data: {value: cancelResult.error } } @@ -1457,9 +1458,9 @@ async ( const confirmResult = await confirm(confirmOptions); console.log({confirmResult}); } else if (status == 'CONFIRMED') { - const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: ${PPay}, from_id: req.body.CustomerKey}); + const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: (await deep.id(${packageName}, "Pay")), from_id: req.body.CustomerKey}); const payedInsertData = await deep.insert({ - type_id: ${PPayed}, + type_id: (await deep.id(${packageName}, "Payed")), from_id: ${tinkoffProviderId}, to_id: payId, in: { From 5b5a8e27fe285993387006e7695c16b50e3ae3df Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 22 Aug 2022 05:50:04 +0000 Subject: [PATCH 253/683] Use basePackageName --- payments-eacq.cjs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 98dd4729..8ab73312 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -19,7 +19,7 @@ const { expect } = require('chai'); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); -const basePackageName = '@deep-foundation/payments'; +const basePackageName = basePackageName; const packageName = '@deep-foundation/payments-eacq'; const PRICE = PRICE; @@ -583,14 +583,14 @@ const f = async () => { const Query = await deep.id('@deep-foundation/core', 'Query'); const usersId = await deep.id('deep', 'users'); - const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); - const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); - const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); - const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); - const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); - const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); - const BaseCancelled = await deep.id('@deep-foundation/payments', 'Cancelled'); - const BaseError = await deep.id('@deep-foundation/payments', 'Error'); + const BasePayment = await deep.id(basePackageName, 'Payment'); + const BaseObject = await deep.id(basePackageName, 'Object'); + const BaseSum = await deep.id(basePackageName, 'Sum'); + const BasePay = await deep.id(basePackageName, 'Pay'); + const BaseUrl = await deep.id(basePackageName, 'Url'); + const BasePayed = await deep.id(basePackageName, 'Payed'); + const BaseCancelled = await deep.id(basePackageName, 'Cancelled'); + const BaseError = await deep.id(basePackageName, 'Error'); const { data: [{ id: packageId }], From 4a8e867920291bf3494082c72625d4139bcf414d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 09:20:44 +0600 Subject: [PATCH 254/683] Remove redundant code --- payments-eacq.cjs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 79dcb0c1..0fc4b201 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1269,10 +1269,6 @@ async ( const confirmResult = await confirm(confirmOptions); console.log({confirmResult}); } else if (status == 'CONFIRMED') { - const {data: payWithSpecificValueAndFromIdQueryData} = await deep.select({value: req.body.OrderId, type_id: ${PPay}, from_id: req.body.CustomerKey}); - console.log({payWithSpecificValueAndFromIdQueryData}); - const {data: payQueryData} = await deep.select({value: req.body.OrderId, type_id: ${PPay}, from_id: req.body.CustomerKey}); - console.log({payQueryData}); const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: ${PPay}, from_id: req.body.CustomerKey}); const payedInsertData = await deep.insert({ type_id: ${PPayed}, From c2bc2013a6b9f5a9c3093c956fc3689f9ac693ba Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 09:25:51 +0600 Subject: [PATCH 255/683] Remove redundant code --- payments-eacq.cjs | 3 --- 1 file changed, 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 8fbd6e9e..b7176490 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1458,9 +1458,6 @@ async ( const confirmResult = await confirm(confirmOptions); console.log({confirmResult}); } else if (status == 'CONFIRMED') { - const {data: payWithSpecificValueAndFromIdQueryData} = await deep.select({value: req.body.OrderId, type_id: ${PPay}, from_id: req.body.CustomerKey}); - console.log({payWithSpecificValueAndFromIdQueryData}); - const {data: payQueryData} = await deep.select({value: req.body.OrderId, type_id: ${PPay}, from_id: req.body.CustomerKey}); console.log({payQueryData}); const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: ${PPay}, from_id: req.body.CustomerKey}); const payedInsertData = await deep.insert({ From 687341635d3e1922aaaabadfcec3464a668f355a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 09:33:17 +0600 Subject: [PATCH 256/683] Use deep.id instead of string template hardcoding --- payments-eacq.cjs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index b7176490..5590a452 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -987,7 +987,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const mpDownPay = await deep.select({ down: { link_id: { _eq: payLink.id }, - tree_id: { _eq: ${paymentTreeId} }, + tree_id: { _eq: await deep.id(${packageName}, "paymentTree") }, }, }); @@ -1047,7 +1047,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { in: { data: [ { - type_id: ${Contain}, + type_id: await deep.id('@deep-foundation/core', 'Contain'), from_id: ${deep.linkId}, }, ], @@ -1067,7 +1067,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { in: { data: [ { - type_id: ${Contain}, + type_id: await deep.id('@deep-foundation/core', 'Contain'), from_id: ${deep.linkId}, }, ], @@ -1459,7 +1459,7 @@ async ( console.log({confirmResult}); } else if (status == 'CONFIRMED') { console.log({payQueryData}); - const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: ${PPay}, from_id: req.body.CustomerKey}); + const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: await deep.id(${packageName}, "Pay"), from_id: req.body.CustomerKey}); const payedInsertData = await deep.insert({ type_id: (await deep.id(${packageName}, "Payed")), from_id: ${tinkoffProviderId}, @@ -1467,7 +1467,7 @@ async ( in: { data: [ { - type_id: ${Contain}, + type_id: await deep.id('@deep-foundation/core', 'Contain'), from_id: ${deep.linkId}, }, ], From 947f4dbca63fe6f06b84e34d9454cf1c954866fe Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 09:37:01 +0600 Subject: [PATCH 257/683] Reduce code amount --- payments-eacq.cjs | 175 +++------------------------------------------- 1 file changed, 9 insertions(+), 166 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 5590a452..737acbc5 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -873,9 +873,8 @@ const f = async () => { console.log({ sumProviderId }); - const payInsertHandler = /*javascript*/ ` -async ({ deep, require, data: { newLink: payLink } }) => { - const crypto = require('crypto'); + const handlersDependencies = ` + const crypto = require('crypto'); const axios = require('axios'); const errorsConverter = { 7: 'Покупатель не найден', @@ -953,6 +952,11 @@ async ({ deep, require, data: { newLink: payLink } }) => { }; return _generateToken(dataWithPassword); }; + ` + + const payInsertHandler = /*javascript*/ ` +async ({ deep, require, data: { newLink: payLink } }) => { + ${handlersDependencies} const init = async (options) => { try { const response = await axios({ @@ -1131,84 +1135,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const cancelledInsertHandler = /*javascript*/ ` async ({ deep, require, data: { newLink: cancelledLink } }) => { - const crypto = require('crypto'); - const axios = require('axios'); - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - const getUrl = (method) => - "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; - const _generateToken = (dataWithPassword) => { - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => acc.toString() + item.toString(), ''); - const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - return hash; - }; - const generateToken = (data) => { - const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { - ...restData, - Password: "${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}", - }; - return _generateToken(dataWithPassword); - }; + ${handlersDependencies} const cancel = async (options) => { try { const response = await axios({ @@ -1329,91 +1256,7 @@ async ( next, { deep, require, gql } ) => { - const crypto = require('crypto'); - const axios = require('axios'); - console.log('helloSomeText'); - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - const getUrl = (method) => - "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; - const _generateToken = (dataWithPassword) => { - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => acc.toString() + item.toString(), ''); - console.log({dataWithPassword}); - console.log({dataString}); - const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - console.log({hash}); - return hash; - }; - const generateToken = (data) => { - console.log({data}); - const { Receipt, DATA, Shops, ...restData } = data; - console.log({restData}); - const dataWithPassword = { - ...restData, - Password: "${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}", - }; - console.log({dataWithPassword}); - return _generateToken(dataWithPassword); - }; + ${handlersDependencies} const confirm = async (options) => { try { const response = await axios({ From a29901f5fe195d92c16c2cd9f6d1ef3816ecfa6d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 09:47:08 +0600 Subject: [PATCH 258/683] Reduce code amount --- payments-eacq.cjs | 90 ++++++++--------------------------------------- 1 file changed, 14 insertions(+), 76 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 737acbc5..8a0595c7 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -209,8 +209,17 @@ const f = async () => { return _generateToken(dataWithPassword); }; + const generateTokenString = generateToken.toString() + .replace("process.env.PAYMENT_TEST_TERMINAL_PASSWORD", `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"`) + console.log({generateTokenString}); + const getUrl = (method) => `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; + const getUrlString = getUrl.toString() + .replace("process.env.PAYMENT_EACQ_AND_TEST_URL", `${process.env.PAYMENT_EACQ_AND_TEST_URL}`); + console.log({getUrlString}); + + const getMarketUrl = (method) => `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; @@ -876,82 +885,11 @@ const f = async () => { const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - const getUrl = (method) => - "${process.env.PAYMENT_EACQ_AND_TEST_URL}" + "/" + method; - const _generateToken = (dataWithPassword) => { - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => acc.toString() + item.toString(), ''); - const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - return hash; - }; - const generateToken = (data) => { - const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { - ...restData, - Password: "${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}", - }; - return _generateToken(dataWithPassword); - }; + const errorsConverter = ${JSON.stringify(errorsConverter)}; + const getError = ${getError.toString()}; + const getUrl = ${getUrlString}; + const _generateToken = ${_generateToken.toString()}; + const generateToken = ${generateTokenString}; ` const payInsertHandler = /*javascript*/ ` From 3d47ee9e23a1471b7b540f209e3a617a9559f104 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 09:48:51 +0600 Subject: [PATCH 259/683] Log handlers --- payments-eacq.cjs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 8a0595c7..f6c93677 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -890,7 +890,8 @@ const f = async () => { const getUrl = ${getUrlString}; const _generateToken = ${_generateToken.toString()}; const generateToken = ${generateTokenString}; - ` + `; + console.log({handlersDependencies}); const payInsertHandler = /*javascript*/ ` async ({ deep, require, data: { newLink: payLink } }) => { @@ -1022,6 +1023,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { return initResult; }; `; +console.log({payInsertHandler}); const { data: [{ id: payInsertHandlerId }], @@ -1138,6 +1140,7 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { return cancelResult; }; `; +console.log({cancelledInsertHandler}); const { data: [{ id: cancelledInsertHandlerId }], @@ -1259,6 +1262,7 @@ async ( res.send('ok'); }; `; +console.log({tinkoffNotificationHandler}); await deep.insert( { From 2638313c6a9a8b07bf95b4536b1afa4714898625 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 09:49:02 +0600 Subject: [PATCH 260/683] Format --- payments-eacq.cjs | 390 ++++++++++++++++++++++++---------------------- 1 file changed, 204 insertions(+), 186 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f6c93677..c2b1aebe 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -209,16 +209,23 @@ const f = async () => { return _generateToken(dataWithPassword); }; - const generateTokenString = generateToken.toString() - .replace("process.env.PAYMENT_TEST_TERMINAL_PASSWORD", `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"`) - console.log({generateTokenString}); + const generateTokenString = generateToken + .toString() + .replace( + 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', + `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` + ); + console.log({ generateTokenString }); const getUrl = (method) => `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; - const getUrlString = getUrl.toString() - .replace("process.env.PAYMENT_EACQ_AND_TEST_URL", `${process.env.PAYMENT_EACQ_AND_TEST_URL}`); - console.log({getUrlString}); - + const getUrlString = getUrl + .toString() + .replace( + 'process.env.PAYMENT_EACQ_AND_TEST_URL', + `${process.env.PAYMENT_EACQ_AND_TEST_URL}` + ); + console.log({ getUrlString }); const getMarketUrl = (method) => `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; @@ -228,7 +235,7 @@ const f = async () => { const response = await axios({ method: 'post', url: getUrl('GetState'), - data: {...options, Token: generateToken(options)}, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); @@ -262,7 +269,7 @@ const f = async () => { headers: { 'Content-Type': 'application/json', }, - data: {...options, Token: generateToken(options)}, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); @@ -289,7 +296,7 @@ const f = async () => { headers: { 'Content-Type': 'application/json', }, - data: {...options, Token: generateToken(options)}, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode || '0'); @@ -323,7 +330,7 @@ const f = async () => { headers: { 'Content-Type': 'application/json', }, - data: {...options, Token: generateToken(options)}, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); @@ -351,7 +358,7 @@ const f = async () => { const response = await axios({ method: 'post', url: getUrl('Confirm'), - data: {...options, Token: generateToken(options)}, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); @@ -382,7 +389,7 @@ const f = async () => { const response = await axios({ method: 'post', url: getUrl('Resend'), - data: {...options, Token: generateToken(options)}, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); @@ -409,7 +416,7 @@ const f = async () => { headers: { 'Content-Type': 'application/json', }, - data: {...options, Token: generateToken(options)}, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); @@ -436,7 +443,7 @@ const f = async () => { headers: { 'Content-Type': 'application/json', }, - data: {...options, Token: generateToken(options)}, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); @@ -463,7 +470,7 @@ const f = async () => { headers: { 'Content-Type': 'application/json', }, - data: {...options, Token: generateToken(options)}, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); @@ -490,7 +497,7 @@ const f = async () => { headers: { 'Content-Type': 'application/json', }, - data: {...options, Token: generateToken(options)}, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); @@ -891,7 +898,7 @@ const f = async () => { const _generateToken = ${_generateToken.toString()}; const generateToken = ${generateTokenString}; `; - console.log({handlersDependencies}); + console.log({ handlersDependencies }); const payInsertHandler = /*javascript*/ ` async ({ deep, require, data: { newLink: payLink } }) => { @@ -1023,7 +1030,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { return initResult; }; `; -console.log({payInsertHandler}); + console.log({ payInsertHandler }); const { data: [{ id: payInsertHandlerId }], @@ -1140,7 +1147,7 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { return cancelResult; }; `; -console.log({cancelledInsertHandler}); + console.log({ cancelledInsertHandler }); const { data: [{ id: cancelledInsertHandlerId }], @@ -1262,7 +1269,7 @@ async ( res.send('ok'); }; `; -console.log({tinkoffNotificationHandler}); + console.log({ tinkoffNotificationHandler }); await deep.insert( { @@ -1352,7 +1359,7 @@ console.log({tinkoffNotificationHandler}); const response = await axios({ method: 'post', url: getUrl('Cancel'), - data: {...options, Token: generateToken(options)}, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); @@ -1427,15 +1434,17 @@ console.log({tinkoffNotificationHandler}); console.log({ product: productId }); const deleteTestLinks = async () => { - console.log("deleteTestLinks-start"); - const {data: testLinks} = await deep.select({ - type_id: {_in: {PObject, PSum, PPay, PUrl, PPayed, PError, PCancelled}} + console.log('deleteTestLinks-start'); + const { data: testLinks } = await deep.select({ + type_id: { + _in: { PObject, PSum, PPay, PUrl, PPayed, PError, PCancelled }, + }, }); for (let i = 0; i < testLinks.length; i++) { const { id } = testLinks[i]; await deep.delete({ id: id }); } - console.log("deleteTestLinks-start"); + console.log('deleteTestLinks-start'); }; const callRealizationTests = async () => { @@ -1467,16 +1476,16 @@ console.log({tinkoffNotificationHandler}); // Taxation: 'usn_income', // }, }; - + const initResult = await init(initOptions); - + expect(initResult.error).to.equal(undefined); }; const testConfirm = async () => { const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); - + const initOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, Amount: PRICE, @@ -1498,30 +1507,29 @@ console.log({tinkoffNotificationHandler}); // Taxation: 'usn_income', // }, }; - + const initResult = await init(initOptions); - + confirmDebug('initResult', initResult?.response?.Success); - + await payInBrowser({ browser, page, url: initResult.response.PaymentURL, }); - + const confirmOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: initResult.response.PaymentId, }; - + const confirmResult = await confirm(confirmOptions); confirmDebug('confirm', confirmResult); - + expect(confirmResult.error).to.equal(undefined); expect(confirmResult.response.Status).to.equal('CONFIRMED'); }; - const testCancel = async () => { console.log('testCancel-start'); const testCancelAfterPayBeforeConfirmFullPrice = async () => { @@ -1554,45 +1562,45 @@ console.log({tinkoffNotificationHandler}); // Taxation: 'usn_income', // } }; - + console.log({ options: initOptions }); - + let initResult = await init(initOptions); - + console.log({ initResult }); - + expect(initResult.error).to.equal(undefined); - + const url = initResult.response.PaymentURL; - + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); - + await payInBrowser({ browser, page, url, }); - + const bankPaymentId = initResult.response.PaymentId; - + const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: PRICE, }; - + console.log({ cancelOptions }); - + const cancelResult = await cancel(cancelOptions); - + console.log({ cancelResponse: cancelResult }); - + expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('REVERSED'); console.log('testCanselAfterPayBeforeConfirmFullPrice-end'); }; - + const testCancelAfterPayBeforeConfirmCustomPriceX2 = async () => { console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-start'); const initOptions = { @@ -1623,17 +1631,17 @@ console.log({tinkoffNotificationHandler}); // Taxation: 'usn_income', // } }; - + console.log({ options: initOptions }); - + let initResult = await init(initOptions); - + console.log({ initResult }); - + expect(initResult.error).to.equal(undefined); - + const url = initResult.response.PaymentURL; - + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); await payInBrowser({ @@ -1641,126 +1649,126 @@ console.log({tinkoffNotificationHandler}); page, url, }); - + const bankPaymentId = initResult.response.PaymentId; - + const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: Math.floor(PRICE / 3), }; - + console.log({ cancelOptions }); - + { const cancelResult = await cancel(cancelOptions); - + console.log({ cancelResponse: cancelResult }); - + expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); } { const cancelResult = await cancel(cancelOptions); - + console.log({ cancelResponse: cancelResult }); - + expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); } console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-end'); }; - + const testCancelAfterPayAfterConfirmFullPrice = async () => { console.log('testCancelAfterPayAfterConfirmFullPrice-start'); await testConfirm(); - + const { data: [payLink], } = await deep.select({ type_id: PPay, }); - + const bankPaymentId = await getBankPaymentId( payLink?.value?.value ?? payLink.id ); - + const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: PRICE, }; - + console.log({ cancelOptions }); - + const cancelResult = await cancel(cancelOptions); - + expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('REFUNDED'); console.log('testCancelAfterPayAfterConfirmFullPrice-end'); }; - + const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); await testConfirm(); - + const { data: [payLink], } = await deep.select({ type_id: PPay, }); - + const bankPaymentId = await getBankPaymentId( payLink?.value?.value ?? payLink.id ); - + const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: Math.floor(PRICE / 3), }; - + console.log({ cancelOptions }); - + { const cancelResult = await cancel(cancelOptions); - + expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); } { const cancelResult = await cancel(cancelOptions); - + expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); } console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); }; - + const testCancelBeforePay = async () => { console.log('testCancelBeforePay-start'); await testInit(); - + const { data: [payLink], } = await deep.select({ type_id: PPay, }); - + const bankPaymentId = await getBankPaymentId( payLink?.value?.value ?? payLink.id ); - + const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: PRICE, }; - + console.log({ cancelOptions }); - + const cancelResult = await cancel(cancelOptions); - + expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('CANCELED'); console.log('testCancelBeforePay-end'); @@ -1775,42 +1783,41 @@ console.log({tinkoffNotificationHandler}); await deleteTestLinks(); await testCancelBeforePay(); await deleteTestLinks(); - + console.log('testCancel-end'); }; const testGetState = async () => { const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); - + const initResult = await init({ TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, OrderId: uniqid(), CustomerKey: uniqid(), Amount: PRICE, }); - + await payInBrowser({ browser, page, url: initResult.response.PaymentURL, }); - + const getStateOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: initResult.response.PaymentId, }; - + const getStateResult = await getState(getStateOptions); - + expect(getStateResult.error).to.equal(undefined); - }; const testGetCardList = async () => { const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); - + const initResult = await sendInit({ TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: uniqid(), @@ -1818,22 +1825,21 @@ console.log({tinkoffNotificationHandler}); Amount: PRICE, Recurrent: 'Y', }); - + await payInBrowser({ browser, page, url: initResult.response.PaymentURL, }); - + const getCardListOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: uniqid(), }; - + const getCardListResult = await getCardList(getCardListOptions); - + expect(getCardListResult.error).to.equal(undefined); - }; const testResend = async () => { @@ -1842,10 +1848,10 @@ console.log({tinkoffNotificationHandler}); TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, }; console.log({ resendOptions }); - + const resendResult = await resend(resendOptions); console.log({ resendResult }); - + expect(resendResult.error).to.equal(undefined); console.log('testResend-end'); }; @@ -1854,7 +1860,7 @@ console.log({tinkoffNotificationHandler}); console.log('testCharge-start'); const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); - + const initResult = await init({ TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, Amount: PRICE, @@ -1862,110 +1868,112 @@ console.log({tinkoffNotificationHandler}); CustomerKey: deep.linkId, Recurrent: 'Y', }); - + await payInBrowser({ browser, page, url: initResult.response.PaymentURL, }); - + const getCardListOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: deep.linkId, }; - + const getCardListResult = await getCardList(getCardListOptions); - + expect(getCardListResult.response[0].RebillId).to.have.length.above(0); - + const getStateOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: initResult.response.PaymentId, }; - + const getStateResult = await getState(getStateOptions); - + expect(getStateResult.response.Status).to.equal('AUTHORIZED'); - + const newInitResult = await init({ TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, Amount: PRICE, OrderId: uniqid(), CustomerKey: deep.linkId, }); - + const newChargeOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: newInitResult.response.PaymentId, RebillId: Number(getCardListResult.response[0].RebillId), }; - + const chargeResult = await charge(newChargeOptions); - + expect(chargeResult.error).to.equal(undefined); console.log('testCharge-end'); }; const testAddCustomer = async () => { console.log('testAddCustomer-start'); - + const addCustomerOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: uniqid(), }; - + const addCustomerResult = await addCustomer(addCustomerOptions); - + expect(addCustomerResult.error).to.equal(undefined); console.log('testAddCustomer-end'); }; const testGetCustomer = async () => { console.log('testGetCustomer-start'); - + const customerOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: uniqid(), }; - + const addCustomerDataOptions = { ...customerOptions, Phone: process.env.PAYMENT_TEST_PHONE, }; - + const addResult = await addCustomer(addCustomerDataOptions); - + expect(addResult.error).to.equal(undefined); - + const getResult = await getCustomer(customerOptions); - + expect(getResult.error).to.equal(undefined); - expect(getResult.response.Phone).to.equal(process.env.PAYMENT_TEST_PHONE); - + expect(getResult.response.Phone).to.equal( + process.env.PAYMENT_TEST_PHONE + ); + console.log('testGetCustomer-end'); }; const testRemoveCustomer = async () => { console.log('testRemoveCustomer-start'); - + const removeCustomerData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: uniqid(), }; - + const newAddCustomerData = { ...removeCustomerData, Phone: process.env.PAYMENT_TEST_PHONE, }; - + const addResult = await addCustomer(newAddCustomerData); - + expect(addResult.error).to.equal(undefined); - + const removeResult = await removeCustomer(removeCustomerData); - + expect(removeResult.error).to.equal(undefined); - + console.log('testRemoveCustomer-end'); }; @@ -1998,7 +2006,7 @@ console.log({tinkoffNotificationHandler}); }, }); console.log({ paymentId }); - + const { data: [{ id: sumId }], } = await deep.insert({ @@ -2015,9 +2023,9 @@ console.log({tinkoffNotificationHandler}); ], }, }); - + console.log({ sum: sumId }); - + const { data: [{ id: objectId }], } = await deep.insert({ @@ -2033,9 +2041,9 @@ console.log({tinkoffNotificationHandler}); ], }, }); - + console.log({ object: objectId }); - + const { data: [{ id: payId }], } = await deep.insert({ @@ -2052,18 +2060,18 @@ console.log({tinkoffNotificationHandler}); ], }, }); - + console.log({ pay: payId }); - + await sleep(9000); - + const { data: { length }, } = await deep.select({ type_id: PUrl, to_id: payId, }); - + expect(length).to.greaterThan(0); console.log('testInit-end'); }; @@ -2080,7 +2088,7 @@ console.log({tinkoffNotificationHandler}); } = await deep.select({ type_id: PUrl, }); - + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); await payInBrowser({ @@ -2107,96 +2115,106 @@ console.log({tinkoffNotificationHandler}); const testCancelAfterPayAfterConfirmFullPrice = async () => { console.log('testCancelAfterPayAfterConfirmFullPrice-start'); await testConfirm(); - + const { data: [payLink], } = await deep.select({ type_id: PPay, }); - - const {data: [payedLink]} = await deep.select({ + + const { + data: [payedLink], + } = await deep.select({ type_id: PPayed, - to_id: payLink.id + to_id: payLink.id, }); - - const {data: [cancelledLink]} = await deep.insert({ + + const { + data: [cancelledLink], + } = await deep.insert({ type_id: PCancelled, from_id: tinkoffProviderId, to_id: payedLink.id, - number: {data: {value: PRICE}} + number: { data: { value: PRICE } }, }); - + await sleep(5000); - - const {data: cancelledErrors} = await deep.select({ + + const { data: cancelledErrors } = await deep.select({ type_id: PError, - to_id: cancelledLink.id + to_id: cancelledLink.id, }); - + expect(cancelledErrors.length).to.equal(0); console.log('testCancelAfterPayAfterConfirmFullPrice-end'); }; - + const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); await testConfirm(); - + const { data: [payLink], } = await deep.select({ type_id: PPay, }); - - const {data: [payedLink]} = await deep.select({ + + const { + data: [payedLink], + } = await deep.select({ type_id: PPayed, - to_id: payLink.id + to_id: payLink.id, }); - + for (let i = 0; i < 2; i++) { - const {data: [cancelledLink]} = await deep.insert({ + const { + data: [cancelledLink], + } = await deep.insert({ type_id: PCancelled, from_id: tinkoffProviderId, to_id: payedLink.id, - number: {data: {value: Math.floor(PRICE / 3)}} + number: { data: { value: Math.floor(PRICE / 3) } }, }); - + await sleep(5000); - - const {data: cancelledErrors} = await deep.select({ + + const { data: cancelledErrors } = await deep.select({ type_id: PError, - to_id: cancelledLink.id + to_id: cancelledLink.id, }); - + expect(cancelledErrors.length).to.equal(0); } - + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); }; - + const testCancelBeforePay = async () => { console.log('testCancelBeforePay-start'); await testInit(); - + const { data: [payLink], } = await deep.select({ type_id: PPay, }); - - const {data: [cancelledLink]} = await deep.insert({ + + const { + data: [cancelledLink], + } = await deep.insert({ type_id: PCancelled, from_id: tinkoffProviderId, to_id: payLink.id, - number: {data: {value: PRICE}} + number: { data: { value: PRICE } }, }); - + await sleep(5000); - - const {data: cancelledErrors} = await deep.select({ + + const { data: cancelledErrors } = await deep.select({ type_id: PError, - to_id: cancelledLink.id + to_id: cancelledLink.id, }); - + expect(cancelledErrors.length).to.equal(0); console.log('testCancelBeforePay-end'); }; @@ -2206,29 +2224,29 @@ console.log({tinkoffNotificationHandler}); await deleteTestLinks(); await testCancelBeforePay(); await deleteTestLinks(); - + console.log('testCancelIntegration-end'); }; const testGetState = async () => { console.log('testGetState-start'); await testFinishAuthorize(); - + const { data: [payLink], } = await deep.select({ type_id: PPay }); - + const bankPaymentId = await getBankPaymentId( payLink?.value?.value ?? payLink.id ); - + const getStateOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, }; - + const getStateResult = await getState(getStateOptions); - + expect(getStateResult.error).to.equal(undefined); console.log('testGetState-end'); }; @@ -2236,14 +2254,14 @@ console.log({tinkoffNotificationHandler}); const testGetCardList = async () => { console.log('testGetCardList-end'); await testFinishAuthorize(); - + const getCardListOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: deep.linkId, }; - + const getCardListResult = await getCardList(getCardListOptions); - + expect(getCardListResult.error).to.equal(undefined); console.log('testGetCardList-end'); }; From 5480ac5886101fb21ccc6e0171633b6dd22fb8a0 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 09:51:52 +0600 Subject: [PATCH 261/683] Insert corePackageName into handlers string template --- payments-eacq.cjs | 89 ++++++++++++++++++++++++----------------------- 1 file changed, 45 insertions(+), 44 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index c2b1aebe..7e424477 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -19,7 +19,8 @@ const { expect } = require('chai'); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); -const basePackageName = basePackageName; +const corePackageName = '@deep-foundation/core'; +const basePackageName = '@deep-foundation/payments'; const packageName = '@deep-foundation/payments-eacq'; const PRICE = PRICE; @@ -540,63 +541,63 @@ const f = async () => { }); const deep = new DeepClient({ deep: guestDeep, ...admin }); - const User = await deep.id('@deep-foundation/core', 'User'); - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); - const Join = await deep.id('@deep-foundation/core', 'Join'); - const Contain = await deep.id('@deep-foundation/core', 'Contain'); - const Value = await deep.id('@deep-foundation/core', 'Value'); - const String = await deep.id('@deep-foundation/core', 'String'); - const Package = await deep.id('@deep-foundation/core', 'Package'); + const User = await deep.id(corePackageName, 'User'); + const Type = await deep.id(corePackageName, 'Type'); + const Any = await deep.id(corePackageName, 'Any'); + const Join = await deep.id(corePackageName, 'Join'); + const Contain = await deep.id(corePackageName, 'Contain'); + const Value = await deep.id(corePackageName, 'Value'); + const String = await deep.id(corePackageName, 'String'); + const Package = await deep.id(corePackageName, 'Package'); - const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); + const SyncTextFile = await deep.id(corePackageName, 'SyncTextFile'); const dockerSupportsJs = await deep.id( - '@deep-foundation/core', + corePackageName, 'dockerSupportsJs' ); - const Handler = await deep.id('@deep-foundation/core', 'Handler'); - const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); - const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); + const Handler = await deep.id(corePackageName, 'Handler'); + const HandleInsert = await deep.id(corePackageName, 'HandleInsert'); + const HandleDelete = await deep.id(corePackageName, 'HandleDelete'); - const Tree = await deep.id('@deep-foundation/core', 'Tree'); + const Tree = await deep.id(corePackageName, 'Tree'); const TreeIncludeNode = await deep.id( - '@deep-foundation/core', + corePackageName, 'TreeIncludeNode' ); - const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); + const TreeIncludeUp = await deep.id(corePackageName, 'TreeIncludeUp'); const TreeIncludeDown = await deep.id( - '@deep-foundation/core', + corePackageName, 'TreeIncludeDown' ); - const Rule = await deep.id('@deep-foundation/core', 'Rule'); - const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); - const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); - const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); - const Selector = await deep.id('@deep-foundation/core', 'Selector'); + const Rule = await deep.id(corePackageName, 'Rule'); + const RuleSubject = await deep.id(corePackageName, 'RuleSubject'); + const RuleObject = await deep.id(corePackageName, 'RuleObject'); + const RuleAction = await deep.id(corePackageName, 'RuleAction'); + const Selector = await deep.id(corePackageName, 'Selector'); const SelectorInclude = await deep.id( - '@deep-foundation/core', + corePackageName, 'SelectorInclude' ); const SelectorExclude = await deep.id( - '@deep-foundation/core', + corePackageName, 'SelectorExclude' ); - const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); - const containTree = await deep.id('@deep-foundation/core', 'containTree'); + const SelectorTree = await deep.id(corePackageName, 'SelectorTree'); + const containTree = await deep.id(corePackageName, 'containTree'); const AllowInsertType = await deep.id( - '@deep-foundation/core', + corePackageName, 'AllowInsertType' ); const AllowDeleteType = await deep.id( - '@deep-foundation/core', + corePackageName, 'AllowDeleteType' ); const SelectorFilter = await deep.id( - '@deep-foundation/core', + corePackageName, 'SelectorFilter' ); - const Query = await deep.id('@deep-foundation/core', 'Query'); + const Query = await deep.id(corePackageName, 'Query'); const usersId = await deep.id('deep', 'users'); const BasePayment = await deep.id(basePackageName, 'Payment'); @@ -997,7 +998,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { in: { data: [ { - type_id: await deep.id('@deep-foundation/core', 'Contain'), + type_id: await deep.id(${corePackageName}, 'Contain'), from_id: ${deep.linkId}, }, ], @@ -1017,7 +1018,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { in: { data: [ { - type_id: await deep.id('@deep-foundation/core', 'Contain'), + type_id: await deep.id(${corePackageName}, 'Contain'), from_id: ${deep.linkId}, }, ], @@ -1258,7 +1259,7 @@ async ( in: { data: [ { - type_id: await deep.id('@deep-foundation/core', 'Contain'), + type_id: await deep.id(${corePackageName}, 'Contain'), from_id: ${deep.linkId}, }, ], @@ -1273,20 +1274,20 @@ async ( await deep.insert( { - type_id: await deep.id('@deep-foundation/core', 'Port'), + type_id: await deep.id(corePackageName, 'Port'), number: { data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, }, in: { data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + type_id: await deep.id(corePackageName, 'RouterListening'), from: { data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), + type_id: await deep.id(corePackageName, 'Router'), in: { data: { type_id: await deep.id( - '@deep-foundation/core', + corePackageName, 'RouterStringUse' ), string: { @@ -1297,21 +1298,21 @@ async ( }, from: { data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), + type_id: await deep.id(corePackageName, 'Route'), out: { data: { type_id: await deep.id( - '@deep-foundation/core', + corePackageName, 'HandleRoute' ), to: { data: { type_id: await deep.id( - '@deep-foundation/core', + corePackageName, 'Handler' ), from_id: await deep.id( - '@deep-foundation/core', + corePackageName, 'dockerSupportsJs' ), in: { @@ -1396,8 +1397,8 @@ async ( const PError = await deep.id(packageName, 'Error'); const PCancelled = await deep.id(packageName, 'Cancelled'); const paymentTreeId = await deep.id(packageName, 'paymentTree'); - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); + const Type = await deep.id(corePackageName, 'Type'); + const Any = await deep.id(corePackageName, 'Any'); const { data: [{ id: Product }], From b4e60eea794126b2c68897c4e372c18855cbd7f3 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 09:53:42 +0600 Subject: [PATCH 262/683] Remove redundant code --- payments-eacq.cjs | 50 ----------------------------------------------- 1 file changed, 50 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 7e424477..fa372953 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -241,13 +241,6 @@ const f = async () => { const error = getError(response.data.ErrorCode); - const d = { - error, - request: options, - response: response.data, - }; - options?.log && options.log(d); - return { error, request: options, @@ -302,13 +295,6 @@ const f = async () => { const error = getError(response.data.ErrorCode || '0'); - const d = { - error, - request: options, - response: response.data, - }; - options?.log && options.log(d); - return { error, request: options, @@ -336,14 +322,6 @@ const f = async () => { const error = getError(response.data.ErrorCode); - const d = { - error, - request: options, - response: response.data, - }; - - options?.log && options.log(d); - return d; } catch (error) { return { @@ -364,13 +342,6 @@ const f = async () => { const error = getError(response.data.ErrorCode); - const d = { - error, - request: options, - response: response.data, - }; - options?.log && options.log(d); - return { error, request: options, @@ -917,14 +888,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { const error = getError(response.data.ErrorCode); - const d = { - error, - request: options, - response: response.data, - }; - - options?.log && options.log(d); - return d; } catch (error) { return { @@ -1216,12 +1179,6 @@ async ( const error = getError(response.data.ErrorCode); - const d = { - error, - request: options, - response: response.data, - }; - return { error, request: options, @@ -1365,13 +1322,6 @@ async ( const error = getError(response.data.ErrorCode); - const d = { - error, - request: options, - response: response.data, - }; - options?.log && options.log(d); - return { error, request: options, From a922acde24bc9770fb5f4be01f3a8801ab1dd31d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 09:59:05 +0600 Subject: [PATCH 263/683] Use to string to put functions in handlers --- payments-eacq.cjs | 73 +++-------------------------------------------- 1 file changed, 4 insertions(+), 69 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index fa372953..512ab109 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -15,6 +15,7 @@ const crypto = require('crypto'); const axios = require('axios'); const uniqid = require('uniqid'); const { expect } = require('chai'); +const { get } = require('lodash'); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); @@ -875,28 +876,7 @@ const f = async () => { const payInsertHandler = /*javascript*/ ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} - const init = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Init'), - headers: { - 'Content-Type': 'application/json', - }, - data: {...options, Token: generateToken(options)}, - }); - - const error = getError(response.data.ErrorCode); - - return d; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const init = ${init.toString()}; const mpDownPay = await deep.select({ down: { @@ -1047,29 +1027,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const cancelledInsertHandler = /*javascript*/ ` async ({ deep, require, data: { newLink: cancelledLink } }) => { ${handlersDependencies} - const cancel = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Cancel'), - data: {...options, Token: generateToken(options)}, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const cancel = ${cancel.toString()}; const getPayLink = async (cancelledLink) => { const toLink = await deep.select({ @@ -1169,41 +1127,18 @@ async ( { deep, require, gql } ) => { ${handlersDependencies} - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: {...options, Token: generateToken(options)}, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; const reqBody = req.body; console.log({reqBody}); const status = req.body.Status; console.log({status}); if (status == 'AUTHORIZED') { + const confirm = ${confirm.toString()}; const confirmOptions = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", PaymentId: req.body.PaymentId, Amount: req.body.Amount, // Receipt: req.body.Receipt, }; - const confirmResult = await confirm(confirmOptions); console.log({confirmResult}); } else if (status == 'CONFIRMED') { From c92dc92db21e14b791e2a545f2a67a570d2c487f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 10:32:58 +0600 Subject: [PATCH 264/683] Override getUrl, generateToken toString --- payments-eacq.cjs | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 512ab109..76d51194 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -205,27 +205,25 @@ const f = async () => { const { Receipt, DATA, Shops, ...restData } = data; const dataWithPassword = { ...restData, - Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, + Password: "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_PASSWORD", }; console.log({ dataWithPassword }); return _generateToken(dataWithPassword); }; - const generateTokenString = generateToken - .toString() + generateToken.toString = generateToken.toString() .replace( - 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', - `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` + 'PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_PASSWORD', + process.env.PAYMENT_TEST_TERMINAL_PASSWORD ); console.log({ generateTokenString }); const getUrl = (method) => - `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; - const getUrlString = getUrl - .toString() + `PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL/${method}`; + getUrl.toString = getUrl.toString() .replace( - 'process.env.PAYMENT_EACQ_AND_TEST_URL', - `${process.env.PAYMENT_EACQ_AND_TEST_URL}` + 'PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL', + process.env.PAYMENT_EACQ_AND_TEST_URL ); console.log({ getUrlString }); @@ -867,9 +865,9 @@ const f = async () => { const axios = require('axios'); const errorsConverter = ${JSON.stringify(errorsConverter)}; const getError = ${getError.toString()}; - const getUrl = ${getUrlString}; + const getUrl = ${getUrl.toString()}; const _generateToken = ${_generateToken.toString()}; - const generateToken = ${generateTokenString}; + const generateToken = ${generateToken.toString()}; `; console.log({ handlersDependencies }); From 656c9bc0328fd78e5ad25268d0b69756a784ad60 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 10:33:56 +0600 Subject: [PATCH 265/683] Remove redundant code --- payments-eacq.cjs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 76d51194..f6b8bfd3 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -882,13 +882,9 @@ async ({ deep, require, data: { newLink: payLink } }) => { tree_id: { _eq: await deep.id(${packageName}, "paymentTree") }, }, }); - console.log({mpDownPay}); - // const paymentLink = mpDownPay.data.find(link => link.type_id == (await deep.id(${packageName}, "Payment"))); const sum = mpDownPay.data.find(link => link.type_id == (await deep.id(${packageName}, "Sum"))).value.value; - - // console.log({paymentLink}); console.log({sum}); const options = { From 18be5fafb2b271c05e7722ef6769bba71c67d60a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 10:34:33 +0600 Subject: [PATCH 266/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f6b8bfd3..edc94ed3 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -24,7 +24,7 @@ const corePackageName = '@deep-foundation/core'; const basePackageName = '@deep-foundation/payments'; const packageName = '@deep-foundation/payments-eacq'; -const PRICE = PRICE; +const PRICE = 5500; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); From 4f53cd495b6b7583a6b305a6e7491a1143929f5e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 12:00:01 +0600 Subject: [PATCH 267/683] Use functions instead of string functions --- payments-eacq.cjs | 108 ++++++++++++++++++++++++++-------------------- 1 file changed, 62 insertions(+), 46 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index edc94ed3..3791e23f 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -213,7 +213,7 @@ const f = async () => { generateToken.toString = generateToken.toString() .replace( - 'PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_PASSWORD', + "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_PASSWORD", process.env.PAYMENT_TEST_TERMINAL_PASSWORD ); console.log({ generateTokenString }); @@ -222,7 +222,7 @@ const f = async () => { `PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL/${method}`; getUrl.toString = getUrl.toString() .replace( - 'PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL', + "PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL", process.env.PAYMENT_EACQ_AND_TEST_URL ); console.log({ getUrlString }); @@ -867,52 +867,53 @@ const f = async () => { const getError = ${getError.toString()}; const getUrl = ${getUrl.toString()}; const _generateToken = ${_generateToken.toString()}; - const generateToken = ${generateToken.toString()}; + const generateToken = ${generateToken.toString()} `; console.log({ handlersDependencies }); - const payInsertHandler = /*javascript*/ ` + const payInsertHandler = async ({ deep, require, data: { newLink: payLink } }) => { - ${handlersDependencies} - const init = ${init.toString()}; + PLACEHOLDER_handlersDependencies; + const init = PLACEHOLDER_init; const mpDownPay = await deep.select({ down: { link_id: { _eq: payLink.id }, - tree_id: { _eq: await deep.id(${packageName}, "paymentTree") }, + tree_id: { _eq: await deep.id("PLACEHOLDER_packageName", "paymentTree") }, }, }); console.log({mpDownPay}); - - const sum = mpDownPay.data.find(link => link.type_id == (await deep.id(${packageName}, "Sum"))).value.value; + + const PSUm = await deep.id("PLACEHOLDER_packageName", "Sum"); + const sum = mpDownPay.data.find(link => link.type_id == PSUm).value.value; console.log({sum}); const options = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + TerminalKey: "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_KEY", OrderId: payLink?.value?.value ?? payLink.id, - CustomerKey: ${deep.linkId}, - NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", + CustomerKey: "PLACEHOLDER_deep.linkId", + NotificationURL: "PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL", PayType: 'T', - Amount: ${PRICE}, + Amount: "PLACEHOLDER_PRICE", Description: 'Test shopping', Language: 'ru', Recurrent: 'Y', DATA: { - Email: "${process.env.PAYMENT_TEST_EMAIL}", - Phone: "${process.env.PAYMENT_TEST_PHONE}", + Email: "PLACEHOLDER_process.env.PAYMENT_TEST_EMAIL", + Phone: "PLACEHOLDER_process.env.PAYMENT_TEST_PHONE", }, // Receipt: { // Items: [{ // Name: 'Test item', // Price: sum, // Quantity: 1, - // Amount: ${PRICE}, + // Amount: "PLACEHOLDER_PRICE", // PaymentMethod: 'prepayment', // PaymentObject: 'service', // Tax: 'none', // }], - // Email: "${process.env.PAYMENT_TEST_EMAIL}", - // Phone: "${process.env.PAYMENT_TEST_PHONE}", + // Email: "PLACEHOLDER_process.env.PAYMENT_TEST_EMAIL", + // Phone: "PLACEHOLDER_process.env.PAYMENT_TEST_PHONE", // Taxation: 'usn_income', // } }; @@ -928,15 +929,15 @@ async ({ deep, require, data: { newLink: payLink } }) => { const { data: [{ id: error }], } = await deep.insert({ - type_id: (await deep.id(${packageName}, "Error")), - from_id: ${tinkoffProviderId}, + type_id: (await deep.id("PLACEHOLDER_packageName", "Error")), + from_id: "PLACEHOLDER_tinkoffProviderId", to_id: payLink.id, string: { data: { value: initResult.error } }, in: { data: [ { - type_id: await deep.id(${corePackageName}, 'Contain'), - from_id: ${deep.linkId}, + type_id: await deep.id("PLACEHOLDER_corePackageName", 'Contain'), + from_id: PLACEHOLDER_deep.linkId, }, ], }, @@ -948,15 +949,15 @@ async ({ deep, require, data: { newLink: payLink } }) => { const { data: [{ id: urlId }], } = await deep.insert({ - type_id: (await deep.id(${packageName}, "Url")), - from_id: ${tinkoffProviderId}, + type_id: (await deep.id("PLACEHOLDER_packageName", "Url")), + from_id: "PLACEHOLDER_tinkoffProviderId", to_id: payLink.id, string: { data: { value: initResult.response.PaymentURL } }, in: { data: [ { - type_id: await deep.id(${corePackageName}, 'Contain'), - from_id: ${deep.linkId}, + type_id: await deep.id("PLACEHOLDER_corePackageName", 'Contain'), + from_id: PLACEHOLDER_deep.linkId, }, ], }, @@ -967,7 +968,12 @@ async ({ deep, require, data: { newLink: payLink } }) => { return initResult; }; -`; + payInsertHandler.toString = + payInsertHandler.toString() + .replace(/PLACEHOLDER_.+?/g, (matched) => { + const placeholderName = matched.substring("PLACEHOLDER_".length); + return global[placeholderName] + }); console.log({ payInsertHandler }); const { @@ -1018,19 +1024,19 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({ payInsertHandlerId }); - const cancelledInsertHandler = /*javascript*/ ` + const cancelledInsertHandler = async ({ deep, require, data: { newLink: cancelledLink } }) => { - ${handlersDependencies} - const cancel = ${cancel.toString()}; + PLACEHOLDER_handlersDependencies + const cancel = PLACEHOLDER_cancel; const getPayLink = async (cancelledLink) => { const toLink = await deep.select({ id: cancelledLink.to_id }); - if(toLink.type_id === (await deep.id(${packageName}, "Pay"))) { + if(toLink.type_id === (await deep.id("PLACEHOLDER_packageName", "Pay"))) { return toLink; } - if (toLink.type_id === (await deep.id(${packageName}, "Payed"))) { + if (toLink.type_id === (await deep.id("PLACEHOLDER_packageName", "Payed"))) { return await deep.select({ id: toLink.to_id }); @@ -1044,7 +1050,7 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { const bankPaymentId = (await getPayLink(cancelledLink)).value.value.bankPaymentId; const cancelOptions = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + TerminalKey: "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_KEY", PaymentId: bankPaymentId, Amount: cancelledLink.value.value } @@ -1053,8 +1059,8 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { if(cancelResult.error) { await deep.insert({ - type_id: (await deep.id(${packageName}, "Error")), - from_id: ${tinkoffProviderId}, + type_id: (await deep.id("PLACEHOLDER_packageName", "Error")), + from_id: "PLACEHOLDER_tinkoffProviderId", to_id: cancelledLink.id, string: { data: {value: cancelResult.error } } }); @@ -1062,7 +1068,12 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { return cancelResult; }; -`; + cancelledInsertHandler.toString = + cancelledInsertHandler.toString() + .replace(/PLACEHOLDER_.+?/g, (matched) => { + const placeholderName = matched.substring("PLACEHOLDER_".length); + return global[placeholderName] + }); console.log({ cancelledInsertHandler }); const { @@ -1113,22 +1124,22 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { console.log({ cancelledInsertHandlerId }); - const tinkoffNotificationHandler = /*javascript*/ ` + const tinkoffNotificationHandler = async ( req, res, next, { deep, require, gql } ) => { - ${handlersDependencies} + PLACEHOLDER_handlersDependencies const reqBody = req.body; console.log({reqBody}); const status = req.body.Status; console.log({status}); if (status == 'AUTHORIZED') { - const confirm = ${confirm.toString()}; + const confirm = PLACEHOLDER_confirm; const confirmOptions = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + TerminalKey: "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_KEY", PaymentId: req.body.PaymentId, Amount: req.body.Amount, // Receipt: req.body.Receipt, @@ -1137,16 +1148,16 @@ async ( console.log({confirmResult}); } else if (status == 'CONFIRMED') { console.log({payQueryData}); - const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: await deep.id(${packageName}, "Pay"), from_id: req.body.CustomerKey}); + const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: await deep.id("PLACEHOLDER_packageName", "Pay"), from_id: req.body.CustomerKey}); const payedInsertData = await deep.insert({ - type_id: (await deep.id(${packageName}, "Payed")), - from_id: ${tinkoffProviderId}, + type_id: (await deep.id("PLACEHOLDER_packageName", "Payed")), + from_id: "PLACEHOLDER_tinkoffProviderId", to_id: payId, in: { data: [ { - type_id: await deep.id(${corePackageName}, 'Contain'), - from_id: ${deep.linkId}, + type_id: await deep.id("PLACEHOLDER_corePackageName", 'Contain'), + from_id: "PLACEHOLDER_deep.linkId", }, ], }, @@ -1155,7 +1166,12 @@ async ( } res.send('ok'); }; -`; + tinkoffNotificationHandler.toString = + tinkoffNotificationHandler.toString() + .replace(/PLACEHOLDER_.+?/g, (matched) => { + const placeholderName = matched.substring("PLACEHOLDER_".length); + return global[placeholderName] + }) console.log({ tinkoffNotificationHandler }); await deep.insert( From 43443e44af3162f1c4cedaf7c4da122edf78b4dc Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 12:03:55 +0600 Subject: [PATCH 268/683] Fix typo --- payments-eacq.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 3791e23f..4aeba08e 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -216,7 +216,7 @@ const f = async () => { "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_PASSWORD", process.env.PAYMENT_TEST_TERMINAL_PASSWORD ); - console.log({ generateTokenString }); + console.log({ generateToken }); const getUrl = (method) => `PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL/${method}`; @@ -225,7 +225,7 @@ const f = async () => { "PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL", process.env.PAYMENT_EACQ_AND_TEST_URL ); - console.log({ getUrlString }); + console.log({ getUrl }); const getMarketUrl = (method) => `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; From eae2841db699cf05f2fab2ad0f6ebe51dc21bc31 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 12:07:00 +0600 Subject: [PATCH 269/683] Fix toString override --- payments-eacq.cjs | 45 +++++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 4aeba08e..5d2dae16 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -211,20 +211,20 @@ const f = async () => { return _generateToken(dataWithPassword); }; - generateToken.toString = generateToken.toString() - .replace( - "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_PASSWORD", - process.env.PAYMENT_TEST_TERMINAL_PASSWORD - ); + generateToken.toString = () => generateToken.toString() + .replace( + "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_PASSWORD", + process.env.PAYMENT_TEST_TERMINAL_PASSWORD + ); console.log({ generateToken }); const getUrl = (method) => `PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL/${method}`; - getUrl.toString = getUrl.toString() - .replace( - "PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL", - process.env.PAYMENT_EACQ_AND_TEST_URL - ); + getUrl.toString = () => getUrl.toString() + .replace( + "PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL", + process.env.PAYMENT_EACQ_AND_TEST_URL + ); console.log({ getUrl }); const getMarketUrl = (method) => @@ -968,8 +968,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { return initResult; }; - payInsertHandler.toString = - payInsertHandler.toString() + payInsertHandler.toString = () => payInsertHandler.toString() .replace(/PLACEHOLDER_.+?/g, (matched) => { const placeholderName = matched.substring("PLACEHOLDER_".length); return global[placeholderName] @@ -1068,12 +1067,11 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { return cancelResult; }; - cancelledInsertHandler.toString = - cancelledInsertHandler.toString() - .replace(/PLACEHOLDER_.+?/g, (matched) => { - const placeholderName = matched.substring("PLACEHOLDER_".length); - return global[placeholderName] - }); + cancelledInsertHandler.toString = () => cancelledInsertHandler.toString() + .replace(/PLACEHOLDER_.+?/g, (matched) => { + const placeholderName = matched.substring("PLACEHOLDER_".length); + return global[placeholderName] + }); console.log({ cancelledInsertHandler }); const { @@ -1166,12 +1164,11 @@ async ( } res.send('ok'); }; - tinkoffNotificationHandler.toString = - tinkoffNotificationHandler.toString() - .replace(/PLACEHOLDER_.+?/g, (matched) => { - const placeholderName = matched.substring("PLACEHOLDER_".length); - return global[placeholderName] - }) + tinkoffNotificationHandler.toString = () => tinkoffNotificationHandler.toString() + .replace(/PLACEHOLDER_.+?/g, (matched) => { + const placeholderName = matched.substring("PLACEHOLDER_".length); + return global[placeholderName] + }); console.log({ tinkoffNotificationHandler }); await deep.insert( From 07f388651d47e0e4ad7a2fd7c3067c240e046106 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 12:11:18 +0600 Subject: [PATCH 270/683] Fix toString override --- payments-eacq.cjs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 5d2dae16..3b62c8de 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -211,7 +211,8 @@ const f = async () => { return _generateToken(dataWithPassword); }; - generateToken.toString = () => generateToken.toString() + const generateTokenString = generateToken.toString(); + generateToken.toString = () => generateTokenString .replace( "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_PASSWORD", process.env.PAYMENT_TEST_TERMINAL_PASSWORD @@ -220,7 +221,8 @@ const f = async () => { const getUrl = (method) => `PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL/${method}`; - getUrl.toString = () => getUrl.toString() + const getUrlString = getUrl.toString(); + getUrl.toString = () => getUrlString .replace( "PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL", process.env.PAYMENT_EACQ_AND_TEST_URL @@ -968,7 +970,8 @@ async ({ deep, require, data: { newLink: payLink } }) => { return initResult; }; - payInsertHandler.toString = () => payInsertHandler.toString() + const payInsertHandlerString = payInsertHandler.toString(); + payInsertHandler.toString = () => payInsertHandlerString .replace(/PLACEHOLDER_.+?/g, (matched) => { const placeholderName = matched.substring("PLACEHOLDER_".length); return global[placeholderName] @@ -1067,7 +1070,8 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { return cancelResult; }; - cancelledInsertHandler.toString = () => cancelledInsertHandler.toString() + const cancelledInsertHandlerString = cancelledInsertHandler.toString(); + cancelledInsertHandler.toString = () => cancelledInsertHandlerString .replace(/PLACEHOLDER_.+?/g, (matched) => { const placeholderName = matched.substring("PLACEHOLDER_".length); return global[placeholderName] @@ -1164,7 +1168,8 @@ async ( } res.send('ok'); }; - tinkoffNotificationHandler.toString = () => tinkoffNotificationHandler.toString() + const tinkoffNotificationHandlerString = tinkoffNotificationHandler.toString(); + tinkoffNotificationHandler.toString = () => tinkoffNotificationHandlerString .replace(/PLACEHOLDER_.+?/g, (matched) => { const placeholderName = matched.substring("PLACEHOLDER_".length); return global[placeholderName] From 863e84ada16bc26b293ab72c0d43ba4df5265284 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 12:29:08 +0600 Subject: [PATCH 271/683] Fix toString override --- payments-eacq.cjs | 53 ++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 3b62c8de..b7b9ef19 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -187,9 +187,13 @@ const f = async () => { 9999: 'Внутренняя ошибка системы', }; + const errorsConverterString = JSON.stringify(errorsConverter); + const getError = (errorCode) => errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + const getErrorString = getError.toString(); + const _generateToken = (dataWithPassword) => { const dataString = Object.keys(dataWithPassword) .sort((a, b) => a.localeCompare(b)) @@ -201,6 +205,8 @@ const f = async () => { return hash; }; + const _generateTokenString = _generateToken.toString(); + const generateToken = (data) => { const { Receipt, DATA, Shops, ...restData } = data; const dataWithPassword = { @@ -211,9 +217,8 @@ const f = async () => { return _generateToken(dataWithPassword); }; - const generateTokenString = generateToken.toString(); - generateToken.toString = () => generateTokenString - .replace( + const generateTokenString = generateToken.toString() + .replace( "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_PASSWORD", process.env.PAYMENT_TEST_TERMINAL_PASSWORD ); @@ -221,9 +226,8 @@ const f = async () => { const getUrl = (method) => `PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL/${method}`; - const getUrlString = getUrl.toString(); - getUrl.toString = () => getUrlString - .replace( + const getUrlString = getUrl.toString() + .replace( "PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL", process.env.PAYMENT_EACQ_AND_TEST_URL ); @@ -865,11 +869,11 @@ const f = async () => { const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); - const errorsConverter = ${JSON.stringify(errorsConverter)}; - const getError = ${getError.toString()}; - const getUrl = ${getUrl.toString()}; - const _generateToken = ${_generateToken.toString()}; - const generateToken = ${generateToken.toString()} + const errorsConverter = ${errorsConverterString}; + const getError = ${getErrorString}; + const getUrl = ${getUrlString}; + const _generateToken = ${_generateTokenString}; + const generateToken = ${generateTokenString} `; console.log({ handlersDependencies }); @@ -970,13 +974,12 @@ async ({ deep, require, data: { newLink: payLink } }) => { return initResult; }; - const payInsertHandlerString = payInsertHandler.toString(); - payInsertHandler.toString = () => payInsertHandlerString - .replace(/PLACEHOLDER_.+?/g, (matched) => { + const payInsertHandlerString = payInsertHandler.toString() + .replace(/PLACEHOLDER_.+?/g, (matched) => { const placeholderName = matched.substring("PLACEHOLDER_".length); return global[placeholderName] }); - console.log({ payInsertHandler }); + console.log("payInsertHandler", payInsertHandler); const { data: [{ id: payInsertHandlerId }], @@ -1019,7 +1022,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }, string: { data: { - value: payInsertHandler, + value: payInsertHandlerString, }, }, }); @@ -1070,13 +1073,12 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { return cancelResult; }; - const cancelledInsertHandlerString = cancelledInsertHandler.toString(); - cancelledInsertHandler.toString = () => cancelledInsertHandlerString - .replace(/PLACEHOLDER_.+?/g, (matched) => { + const cancelledInsertHandlerString = cancelledInsertHandler.toString() + .replace(/PLACEHOLDER_.+?/g, (matched) => { const placeholderName = matched.substring("PLACEHOLDER_".length); return global[placeholderName] }); - console.log({ cancelledInsertHandler }); + console.log("cancelledInsertHandler", cancelledInsertHandler); const { data: [{ id: cancelledInsertHandlerId }], @@ -1119,7 +1121,7 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { }, string: { data: { - value: cancelledInsertHandler, + value: cancelledInsertHandlerString, }, }, }); @@ -1168,13 +1170,12 @@ async ( } res.send('ok'); }; - const tinkoffNotificationHandlerString = tinkoffNotificationHandler.toString(); - tinkoffNotificationHandler.toString = () => tinkoffNotificationHandlerString - .replace(/PLACEHOLDER_.+?/g, (matched) => { + const tinkoffNotificationHandlerString = tinkoffNotificationHandler.toString() + .replace(/PLACEHOLDER_.+?/g, (matched) => { const placeholderName = matched.substring("PLACEHOLDER_".length); return global[placeholderName] }); - console.log({ tinkoffNotificationHandler }); + console.log("tinkoffNotificationHandler", tinkoffNotificationHandler); await deep.insert( { @@ -1236,7 +1237,7 @@ async ( type_id: SyncTextFile, string: { data: { - value: tinkoffNotificationHandler, + value: tinkoffNotificationHandlerString, }, }, }, From f64984d88730051b2fbc48e8a8b80d9b7daf7d48 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 12:34:11 +0600 Subject: [PATCH 272/683] Fix console logs --- payments-eacq.cjs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index b7b9ef19..e6c4c49d 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -186,13 +186,13 @@ const f = async () => { 1096: 'Повторите попытку позже', 9999: 'Внутренняя ошибка системы', }; - const errorsConverterString = JSON.stringify(errorsConverter); + console.log({errorsConverterString}); const getError = (errorCode) => errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - const getErrorString = getError.toString(); + console.log({getErrorString}); const _generateToken = (dataWithPassword) => { const dataString = Object.keys(dataWithPassword) @@ -204,8 +204,8 @@ const f = async () => { console.log({ hash }); return hash; }; - const _generateTokenString = _generateToken.toString(); + console.log({_generateTokenString}); const generateToken = (data) => { const { Receipt, DATA, Shops, ...restData } = data; @@ -216,13 +216,12 @@ const f = async () => { console.log({ dataWithPassword }); return _generateToken(dataWithPassword); }; - const generateTokenString = generateToken.toString() .replace( "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_PASSWORD", process.env.PAYMENT_TEST_TERMINAL_PASSWORD ); - console.log({ generateToken }); + console.log({ generateTokenString }); const getUrl = (method) => `PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL/${method}`; @@ -231,7 +230,7 @@ const f = async () => { "PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL", process.env.PAYMENT_EACQ_AND_TEST_URL ); - console.log({ getUrl }); + console.log({ getUrlString }); const getMarketUrl = (method) => `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; @@ -979,7 +978,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const placeholderName = matched.substring("PLACEHOLDER_".length); return global[placeholderName] }); - console.log("payInsertHandler", payInsertHandler); + console.log({payInsertHandlerString}); const { data: [{ id: payInsertHandlerId }], @@ -1078,7 +1077,7 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { const placeholderName = matched.substring("PLACEHOLDER_".length); return global[placeholderName] }); - console.log("cancelledInsertHandler", cancelledInsertHandler); + console.log({cancelledInsertHandlerString}); const { data: [{ id: cancelledInsertHandlerId }], @@ -1175,7 +1174,7 @@ async ( const placeholderName = matched.substring("PLACEHOLDER_".length); return global[placeholderName] }); - console.log("tinkoffNotificationHandler", tinkoffNotificationHandler); + console.log({tinkoffNotificationHandlerString}); await deep.insert( { From fbc4dbf9c17419ab3933d8719adea32144d60f26 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 12:44:34 +0600 Subject: [PATCH 273/683] Do not change getUrl and _generateToken for their string representation --- payments-eacq.cjs | 78 +++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index e6c4c49d..95715cc8 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -211,23 +211,23 @@ const f = async () => { const { Receipt, DATA, Shops, ...restData } = data; const dataWithPassword = { ...restData, - Password: "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_PASSWORD", + Password: `${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}`, }; console.log({ dataWithPassword }); return _generateToken(dataWithPassword); }; const generateTokenString = generateToken.toString() .replace( - "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_PASSWORD", + "${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}", process.env.PAYMENT_TEST_TERMINAL_PASSWORD ); console.log({ generateTokenString }); const getUrl = (method) => - `PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL/${method}`; + `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; const getUrlString = getUrl.toString() .replace( - "PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL", + "${process.env.PAYMENT_EACQ_AND_TEST_URL}", process.env.PAYMENT_EACQ_AND_TEST_URL ); console.log({ getUrlString }); @@ -878,47 +878,47 @@ const f = async () => { const payInsertHandler = async ({ deep, require, data: { newLink: payLink } }) => { - PLACEHOLDER_handlersDependencies; - const init = PLACEHOLDER_init; + 'PLACEHOLDER_handlersDependencies'; + const init = 'PLACEHOLDER_init'; const mpDownPay = await deep.select({ down: { link_id: { _eq: payLink.id }, - tree_id: { _eq: await deep.id("PLACEHOLDER_packageName", "paymentTree") }, + tree_id: { _eq: await deep.id("'PLACEHOLDER_packageName'", "paymentTree") }, }, }); console.log({mpDownPay}); - const PSUm = await deep.id("PLACEHOLDER_packageName", "Sum"); + const PSUm = await deep.id("'PLACEHOLDER_packageName'", "Sum"); const sum = mpDownPay.data.find(link => link.type_id == PSUm).value.value; console.log({sum}); const options = { - TerminalKey: "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_KEY", + TerminalKey: "'PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_KEY'", OrderId: payLink?.value?.value ?? payLink.id, - CustomerKey: "PLACEHOLDER_deep.linkId", - NotificationURL: "PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL", + CustomerKey: "'PLACEHOLDER_deep.linkId'", + NotificationURL: "'PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL'", PayType: 'T', - Amount: "PLACEHOLDER_PRICE", + Amount: "'PLACEHOLDER_PRICE'", Description: 'Test shopping', Language: 'ru', Recurrent: 'Y', DATA: { - Email: "PLACEHOLDER_process.env.PAYMENT_TEST_EMAIL", - Phone: "PLACEHOLDER_process.env.PAYMENT_TEST_PHONE", + Email: "'PLACEHOLDER_process.env.PAYMENT_TEST_EMAIL'", + Phone: "'PLACEHOLDER_process.env.PAYMENT_TEST_PHONE'", }, // Receipt: { // Items: [{ // Name: 'Test item', // Price: sum, // Quantity: 1, - // Amount: "PLACEHOLDER_PRICE", + // Amount: "'PLACEHOLDER_PRICE'", // PaymentMethod: 'prepayment', // PaymentObject: 'service', // Tax: 'none', // }], - // Email: "PLACEHOLDER_process.env.PAYMENT_TEST_EMAIL", - // Phone: "PLACEHOLDER_process.env.PAYMENT_TEST_PHONE", + // Email: "'PLACEHOLDER_process.env.PAYMENT_TEST_EMAIL'", + // Phone: "'PLACEHOLDER_process.env.PAYMENT_TEST_PHONE'", // Taxation: 'usn_income', // } }; @@ -934,15 +934,15 @@ async ({ deep, require, data: { newLink: payLink } }) => { const { data: [{ id: error }], } = await deep.insert({ - type_id: (await deep.id("PLACEHOLDER_packageName", "Error")), - from_id: "PLACEHOLDER_tinkoffProviderId", + type_id: (await deep.id("'PLACEHOLDER_packageName'", "Error")), + from_id: "'PLACEHOLDER_tinkoffProviderId'", to_id: payLink.id, string: { data: { value: initResult.error } }, in: { data: [ { - type_id: await deep.id("PLACEHOLDER_corePackageName", 'Contain'), - from_id: PLACEHOLDER_deep.linkId, + type_id: await deep.id("'PLACEHOLDER_corePackageName'", 'Contain'), + from_id: "'PLACEHOLDER_deep.linkId'", }, ], }, @@ -954,14 +954,14 @@ async ({ deep, require, data: { newLink: payLink } }) => { const { data: [{ id: urlId }], } = await deep.insert({ - type_id: (await deep.id("PLACEHOLDER_packageName", "Url")), - from_id: "PLACEHOLDER_tinkoffProviderId", + type_id: (await deep.id("'PLACEHOLDER_packageName'", "Url")), + from_id: "'PLACEHOLDER_tinkoffProviderId'", to_id: payLink.id, string: { data: { value: initResult.response.PaymentURL } }, in: { data: [ { - type_id: await deep.id("PLACEHOLDER_corePackageName", 'Contain'), + type_id: await deep.id("'PLACEHOLDER_corePackageName'", 'Contain'), from_id: PLACEHOLDER_deep.linkId, }, ], @@ -1030,17 +1030,17 @@ async ({ deep, require, data: { newLink: payLink } }) => { const cancelledInsertHandler = async ({ deep, require, data: { newLink: cancelledLink } }) => { - PLACEHOLDER_handlersDependencies - const cancel = PLACEHOLDER_cancel; + 'PLACEHOLDER_handlersDependencies'; + const cancel = 'PLACEHOLDER_cancel'; const getPayLink = async (cancelledLink) => { const toLink = await deep.select({ id: cancelledLink.to_id }); - if(toLink.type_id === (await deep.id("PLACEHOLDER_packageName", "Pay"))) { + if(toLink.type_id === (await deep.id("'PLACEHOLDER_packageName'", "Pay"))) { return toLink; } - if (toLink.type_id === (await deep.id("PLACEHOLDER_packageName", "Payed"))) { + if (toLink.type_id === (await deep.id("'PLACEHOLDER_packageName'", "Payed"))) { return await deep.select({ id: toLink.to_id }); @@ -1054,7 +1054,7 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { const bankPaymentId = (await getPayLink(cancelledLink)).value.value.bankPaymentId; const cancelOptions = { - TerminalKey: "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_KEY", + TerminalKey: "'PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_KEY'", PaymentId: bankPaymentId, Amount: cancelledLink.value.value } @@ -1063,8 +1063,8 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { if(cancelResult.error) { await deep.insert({ - type_id: (await deep.id("PLACEHOLDER_packageName", "Error")), - from_id: "PLACEHOLDER_tinkoffProviderId", + type_id: (await deep.id("'PLACEHOLDER_packageName'", "Error")), + from_id: "'PLACEHOLDER_tinkoffProviderId'", to_id: cancelledLink.id, string: { data: {value: cancelResult.error } } }); @@ -1134,15 +1134,15 @@ async ( next, { deep, require, gql } ) => { - PLACEHOLDER_handlersDependencies + 'PLACEHOLDER_handlersDependencies'; const reqBody = req.body; console.log({reqBody}); const status = req.body.Status; console.log({status}); if (status == 'AUTHORIZED') { - const confirm = PLACEHOLDER_confirm; + const confirm = 'PLACEHOLDER_confirm'; const confirmOptions = { - TerminalKey: "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_KEY", + TerminalKey: "'PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_KEY'", PaymentId: req.body.PaymentId, Amount: req.body.Amount, // Receipt: req.body.Receipt, @@ -1151,16 +1151,16 @@ async ( console.log({confirmResult}); } else if (status == 'CONFIRMED') { console.log({payQueryData}); - const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: await deep.id("PLACEHOLDER_packageName", "Pay"), from_id: req.body.CustomerKey}); + const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: await deep.id("'PLACEHOLDER_packageName'", "Pay"), from_id: req.body.CustomerKey}); const payedInsertData = await deep.insert({ - type_id: (await deep.id("PLACEHOLDER_packageName", "Payed")), - from_id: "PLACEHOLDER_tinkoffProviderId", + type_id: (await deep.id("'PLACEHOLDER_packageName'", "Payed")), + from_id: "'PLACEHOLDER_tinkoffProviderId'", to_id: payId, in: { data: [ { - type_id: await deep.id("PLACEHOLDER_corePackageName", 'Contain'), - from_id: "PLACEHOLDER_deep.linkId", + type_id: await deep.id("'PLACEHOLDER_corePackageName'", 'Contain'), + from_id: "'PLACEHOLDER_deep.linkId'", }, ], }, From 84481cd75adfd44f49ea45256c7ccb316d2c6ed3 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 12:46:17 +0600 Subject: [PATCH 274/683] Fix typo --- payments-eacq.cjs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 95715cc8..27fe5fed 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -326,7 +326,11 @@ const f = async () => { const error = getError(response.data.ErrorCode); - return d; + return { + error, + request: options, + response: response, + }; } catch (error) { return { error, From 2966f92f060c23fb3febc06da89450d938af4c54 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 12:49:01 +0600 Subject: [PATCH 275/683] Add console logs --- payments-eacq.cjs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 27fe5fed..05c5fdf8 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1411,8 +1411,7 @@ async ( }; const initResult = await init(initOptions); - - confirmDebug('initResult', initResult?.response?.Success); + console.log({initResult}); await payInBrowser({ browser, @@ -1426,7 +1425,7 @@ async ( }; const confirmResult = await confirm(confirmOptions); - confirmDebug('confirm', confirmResult); + console.log({confirmResult}); expect(confirmResult.error).to.equal(undefined); expect(confirmResult.response.Status).to.equal('CONFIRMED'); From 8ec6f4c6d40712fc594863bf61963ca242d0179f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 12:50:43 +0600 Subject: [PATCH 276/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 05c5fdf8..953e5eb7 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -329,7 +329,7 @@ const f = async () => { return { error, request: options, - response: response, + response: response.data, }; } catch (error) { return { From 6361a04f9e7909262a30a5702ca4e2b048083bd4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 12:56:25 +0600 Subject: [PATCH 277/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 953e5eb7..60208490 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1339,7 +1339,7 @@ async ( console.log('deleteTestLinks-start'); const { data: testLinks } = await deep.select({ type_id: { - _in: { PObject, PSum, PPay, PUrl, PPayed, PError, PCancelled }, + _in: [ PObject, PSum, PPay, PUrl, PPayed, PError, PCancelled ], }, }); for (let i = 0; i < testLinks.length; i++) { From 81572a378f68460cc3822a4cb467b4615b218f9d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 10:28:09 +0000 Subject: [PATCH 278/683] Get payment id from pay link value --- payments-eacq.cjs | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 60208490..86b63546 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1589,10 +1589,10 @@ async ( } = await deep.select({ type_id: PPay, }); + console.log({payLink}); - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); + const bankPaymentId = payLink.value.value.bankPaymentId; + console.log({bankPaymentId}); const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1619,9 +1619,7 @@ async ( type_id: PPay, }); - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); + const bankPaymentId = payLink.value.value.bankPaymentId; const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1656,9 +1654,7 @@ async ( type_id: PPay, }); - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); + const bankPaymentId = payLink.value.value.bankPaymentId; const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -2137,9 +2133,7 @@ async ( data: [payLink], } = await deep.select({ type_id: PPay }); - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); + const bankPaymentId = payLink.value.value.bankPaymentId; const getStateOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, From 28f767748c719d1ad5a7351d68cc414f5a6e7850 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 10:33:55 +0000 Subject: [PATCH 279/683] Do not use links in realization tests --- payments-eacq.cjs | 36 +++++++++++------------------------- 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 86b63546..4ac3c966 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1382,6 +1382,8 @@ async ( const initResult = await init(initOptions); expect(initResult.error).to.equal(undefined); + + return initResult; }; const testConfirm = async () => { @@ -1429,6 +1431,8 @@ async ( expect(confirmResult.error).to.equal(undefined); expect(confirmResult.response.Status).to.equal('CONFIRMED'); + + return confirmResult; }; const testCancel = async () => { @@ -1582,16 +1586,9 @@ async ( const testCancelAfterPayAfterConfirmFullPrice = async () => { console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - await testConfirm(); - - const { - data: [payLink], - } = await deep.select({ - type_id: PPay, - }); - console.log({payLink}); + const confirmResult = await testConfirm(); - const bankPaymentId = payLink.value.value.bankPaymentId; + const bankPaymentId = confirmResult.PaymendId; console.log({bankPaymentId}); const cancelOptions = { @@ -1611,15 +1608,10 @@ async ( const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); - await testConfirm(); - - const { - data: [payLink], - } = await deep.select({ - type_id: PPay, - }); + const confirmResult = await testConfirm(); - const bankPaymentId = payLink.value.value.bankPaymentId; + const bankPaymentId = confirmResult.PaymendId; + console.log({bankPaymentId}); const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1646,15 +1638,9 @@ async ( const testCancelBeforePay = async () => { console.log('testCancelBeforePay-start'); - await testInit(); - - const { - data: [payLink], - } = await deep.select({ - type_id: PPay, - }); + const initResult = await testInit(); - const bankPaymentId = payLink.value.value.bankPaymentId; + const bankPaymentId = initResult.PaymentId; const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, From 444d48c1ea9a57b09c9e1ab9bca4b9fcbbbbbbf0 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 10:36:55 +0000 Subject: [PATCH 280/683] Fix typo --- payments-eacq.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 4ac3c966..6213b8f1 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1588,7 +1588,7 @@ async ( console.log('testCancelAfterPayAfterConfirmFullPrice-start'); const confirmResult = await testConfirm(); - const bankPaymentId = confirmResult.PaymendId; + const bankPaymentId = confirmResult.response.PaymendId; console.log({bankPaymentId}); const cancelOptions = { @@ -1610,7 +1610,7 @@ async ( console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); const confirmResult = await testConfirm(); - const bankPaymentId = confirmResult.PaymendId; + const bankPaymentId = confirmResult.response.PaymendId; console.log({bankPaymentId}); const cancelOptions = { @@ -1640,7 +1640,7 @@ async ( console.log('testCancelBeforePay-start'); const initResult = await testInit(); - const bankPaymentId = initResult.PaymentId; + const bankPaymentId = initResult.response.PaymentId; const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, From fe430182eb764eebcf76149785d58fac6d10d990 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 10:40:09 +0000 Subject: [PATCH 281/683] Fix typo --- payments-eacq.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 6213b8f1..66fe0482 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1588,7 +1588,7 @@ async ( console.log('testCancelAfterPayAfterConfirmFullPrice-start'); const confirmResult = await testConfirm(); - const bankPaymentId = confirmResult.response.PaymendId; + const bankPaymentId = confirmResult.response.PaymentId; console.log({bankPaymentId}); const cancelOptions = { @@ -1610,7 +1610,7 @@ async ( console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); const confirmResult = await testConfirm(); - const bankPaymentId = confirmResult.response.PaymendId; + const bankPaymentId = confirmResult.response.PaymentId; console.log({bankPaymentId}); const cancelOptions = { From e0ab46eb974d7ad49133a7d6cb93bbda9a80bdbc Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 10:45:15 +0000 Subject: [PATCH 282/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 66fe0482..bbb73696 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1701,7 +1701,7 @@ async ( const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); - const initResult = await sendInit({ + const initResult = await init({ TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: uniqid(), OrderId: uniqid(), From 44168d08e25737c6185da092638236ef38fd995e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 10:48:43 +0000 Subject: [PATCH 283/683] Fix testGetCardList --- payments-eacq.cjs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index bbb73696..14a85a13 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1717,10 +1717,11 @@ async ( const getCardListOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), + CustomerKey: deep.linkId, }; const getCardListResult = await getCardList(getCardListOptions); + console.log({ getCardListResult }); expect(getCardListResult.error).to.equal(undefined); }; From 8669a3229e20385deb3a6b163318e369ad090c39 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 11:00:30 +0000 Subject: [PATCH 284/683] Add and use replacePlaceholdersInHandlers. Add console logs --- payments-eacq.cjs | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 14a85a13..3298199f 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -977,11 +977,15 @@ async ({ deep, require, data: { newLink: payLink } }) => { return initResult; }; - const payInsertHandlerString = payInsertHandler.toString() - .replace(/PLACEHOLDER_.+?/g, (matched) => { - const placeholderName = matched.substring("PLACEHOLDER_".length); - return global[placeholderName] - }); + +const replacePlaceholdersInHandlers = (handler) => handler.replace(/PLACEHOLDER_.+?/g, (matched) => { + const placeholderName = matched.substring("PLACEHOLDER_".length); + const value = global[placeholderName]; + console.log(`Replacing ${matched} with ${value}`); + return value; +}); + + const payInsertHandlerString = replacePlaceholdersInHandlers(payInsertHandler); console.log({payInsertHandlerString}); const { @@ -1076,11 +1080,7 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { return cancelResult; }; - const cancelledInsertHandlerString = cancelledInsertHandler.toString() - .replace(/PLACEHOLDER_.+?/g, (matched) => { - const placeholderName = matched.substring("PLACEHOLDER_".length); - return global[placeholderName] - }); + const cancelledInsertHandlerString = replacePlaceholdersInHandlers(cancelledInsertHandler); console.log({cancelledInsertHandlerString}); const { @@ -1173,11 +1173,7 @@ async ( } res.send('ok'); }; - const tinkoffNotificationHandlerString = tinkoffNotificationHandler.toString() - .replace(/PLACEHOLDER_.+?/g, (matched) => { - const placeholderName = matched.substring("PLACEHOLDER_".length); - return global[placeholderName] - }); + const tinkoffNotificationHandlerString = replacePlaceholdersInHandlers(tinkoffNotificationHandler); console.log({tinkoffNotificationHandlerString}); await deep.insert( From 2dc939249c5acce752b2cdcf9a8350218dc03b3f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 11:08:35 +0000 Subject: [PATCH 285/683] Fix replacePlaceholdersInHandlers --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 3298199f..9f23b757 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -978,7 +978,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { return initResult; }; -const replacePlaceholdersInHandlers = (handler) => handler.replace(/PLACEHOLDER_.+?/g, (matched) => { +const replacePlaceholdersInHandlers = (handler) => handler.toString().replace(/'PLACEHOLDER_.+?'/g, (matched) => { const placeholderName = matched.substring("PLACEHOLDER_".length); const value = global[placeholderName]; console.log(`Replacing ${matched} with ${value}`); From bf7e5dd59ecb924edfd5b5a62e869ed6dbf8c2f4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 11:47:44 +0000 Subject: [PATCH 286/683] Do not use functions as handlers. Use string --- payments-eacq.cjs | 210 +++++++++++++++++++++++----------------------- 1 file changed, 106 insertions(+), 104 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 9f23b757..ddbb3540 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -186,13 +186,9 @@ const f = async () => { 1096: 'Повторите попытку позже', 9999: 'Внутренняя ошибка системы', }; - const errorsConverterString = JSON.stringify(errorsConverter); - console.log({errorsConverterString}); const getError = (errorCode) => errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - const getErrorString = getError.toString(); - console.log({getErrorString}); const _generateToken = (dataWithPassword) => { const dataString = Object.keys(dataWithPassword) @@ -204,32 +200,31 @@ const f = async () => { console.log({ hash }); return hash; }; - const _generateTokenString = _generateToken.toString(); - console.log({_generateTokenString}); const generateToken = (data) => { const { Receipt, DATA, Shops, ...restData } = data; const dataWithPassword = { ...restData, - Password: `${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}`, + Password: "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_PASSWORD", }; console.log({ dataWithPassword }); return _generateToken(dataWithPassword); }; - const generateTokenString = generateToken.toString() + + generateToken.toString = generateToken.toString() .replace( - "${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}", - process.env.PAYMENT_TEST_TERMINAL_PASSWORD - ); + 'PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_PASSWORD', + process.env.PAYMENT_TEST_TERMINAL_PASSWORD + ); console.log({ generateTokenString }); const getUrl = (method) => - `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; - const getUrlString = getUrl.toString() + `PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL/${method}`; + getUrl.toString = getUrl.toString() .replace( - "${process.env.PAYMENT_EACQ_AND_TEST_URL}", - process.env.PAYMENT_EACQ_AND_TEST_URL - ); + 'PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL', + process.env.PAYMENT_EACQ_AND_TEST_URL + ); console.log({ getUrlString }); const getMarketUrl = (method) => @@ -326,11 +321,7 @@ const f = async () => { const error = getError(response.data.ErrorCode); - return { - error, - request: options, - response: response.data, - }; + return d; } catch (error) { return { error, @@ -872,57 +863,56 @@ const f = async () => { const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); - const errorsConverter = ${errorsConverterString}; - const getError = ${getErrorString}; - const getUrl = ${getUrlString}; - const _generateToken = ${_generateTokenString}; - const generateToken = ${generateTokenString} + const errorsConverter = ${JSON.stringify(errorsConverter)}; + const getError = ${getError.toString()}; + const getUrl = ${getUrl.toString()}; + const _generateToken = ${_generateToken.toString()}; + const generateToken = ${generateToken.toString()}; `; console.log({ handlersDependencies }); - const payInsertHandler = + const payInsertHandler = /*javascript*/ ` async ({ deep, require, data: { newLink: payLink } }) => { - 'PLACEHOLDER_handlersDependencies'; - const init = 'PLACEHOLDER_init'; + ${handlersDependencies} + const init = ${init.toString()}; const mpDownPay = await deep.select({ down: { link_id: { _eq: payLink.id }, - tree_id: { _eq: await deep.id("'PLACEHOLDER_packageName'", "paymentTree") }, + tree_id: { _eq: await deep.id(${packageName}, "paymentTree") }, }, }); console.log({mpDownPay}); - - const PSUm = await deep.id("'PLACEHOLDER_packageName'", "Sum"); - const sum = mpDownPay.data.find(link => link.type_id == PSUm).value.value; + + const sum = mpDownPay.data.find(link => link.type_id == (await deep.id(${packageName}, "Sum"))).value.value; console.log({sum}); const options = { - TerminalKey: "'PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_KEY'", + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", OrderId: payLink?.value?.value ?? payLink.id, - CustomerKey: "'PLACEHOLDER_deep.linkId'", - NotificationURL: "'PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL'", + CustomerKey: ${deep.linkId}, + NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", PayType: 'T', - Amount: "'PLACEHOLDER_PRICE'", + Amount: ${PRICE}, Description: 'Test shopping', Language: 'ru', Recurrent: 'Y', DATA: { - Email: "'PLACEHOLDER_process.env.PAYMENT_TEST_EMAIL'", - Phone: "'PLACEHOLDER_process.env.PAYMENT_TEST_PHONE'", + Email: "${process.env.PAYMENT_TEST_EMAIL}", + Phone: "${process.env.PAYMENT_TEST_PHONE}", }, // Receipt: { // Items: [{ // Name: 'Test item', // Price: sum, // Quantity: 1, - // Amount: "'PLACEHOLDER_PRICE'", + // Amount: ${PRICE}, // PaymentMethod: 'prepayment', // PaymentObject: 'service', // Tax: 'none', // }], - // Email: "'PLACEHOLDER_process.env.PAYMENT_TEST_EMAIL'", - // Phone: "'PLACEHOLDER_process.env.PAYMENT_TEST_PHONE'", + // Email: "${process.env.PAYMENT_TEST_EMAIL}", + // Phone: "${process.env.PAYMENT_TEST_PHONE}", // Taxation: 'usn_income', // } }; @@ -938,15 +928,15 @@ async ({ deep, require, data: { newLink: payLink } }) => { const { data: [{ id: error }], } = await deep.insert({ - type_id: (await deep.id("'PLACEHOLDER_packageName'", "Error")), - from_id: "'PLACEHOLDER_tinkoffProviderId'", + type_id: (await deep.id(${packageName}, "Error")), + from_id: ${tinkoffProviderId}, to_id: payLink.id, string: { data: { value: initResult.error } }, in: { data: [ { - type_id: await deep.id("'PLACEHOLDER_corePackageName'", 'Contain'), - from_id: "'PLACEHOLDER_deep.linkId'", + type_id: await deep.id(${corePackageName}, 'Contain'), + from_id: ${deep.linkId}, }, ], }, @@ -958,15 +948,15 @@ async ({ deep, require, data: { newLink: payLink } }) => { const { data: [{ id: urlId }], } = await deep.insert({ - type_id: (await deep.id("'PLACEHOLDER_packageName'", "Url")), - from_id: "'PLACEHOLDER_tinkoffProviderId'", + type_id: (await deep.id(${packageName}, "Url")), + from_id: ${tinkoffProviderId}, to_id: payLink.id, string: { data: { value: initResult.response.PaymentURL } }, in: { data: [ { - type_id: await deep.id("'PLACEHOLDER_corePackageName'", 'Contain'), - from_id: PLACEHOLDER_deep.linkId, + type_id: await deep.id(${corePackageName}, 'Contain'), + from_id: ${deep.linkId}, }, ], }, @@ -977,16 +967,8 @@ async ({ deep, require, data: { newLink: payLink } }) => { return initResult; }; - -const replacePlaceholdersInHandlers = (handler) => handler.toString().replace(/'PLACEHOLDER_.+?'/g, (matched) => { - const placeholderName = matched.substring("PLACEHOLDER_".length); - const value = global[placeholderName]; - console.log(`Replacing ${matched} with ${value}`); - return value; -}); - - const payInsertHandlerString = replacePlaceholdersInHandlers(payInsertHandler); - console.log({payInsertHandlerString}); +`; + console.log({ payInsertHandler }); const { data: [{ id: payInsertHandlerId }], @@ -1029,26 +1011,26 @@ const replacePlaceholdersInHandlers = (handler) => handler.toString().replace(/' }, string: { data: { - value: payInsertHandlerString, + value: payInsertHandler, }, }, }); console.log({ payInsertHandlerId }); - const cancelledInsertHandler = + const cancelledInsertHandler = /*javascript*/ ` async ({ deep, require, data: { newLink: cancelledLink } }) => { - 'PLACEHOLDER_handlersDependencies'; - const cancel = 'PLACEHOLDER_cancel'; + ${handlersDependencies} + const cancel = ${cancel.toString()}; const getPayLink = async (cancelledLink) => { const toLink = await deep.select({ id: cancelledLink.to_id }); - if(toLink.type_id === (await deep.id("'PLACEHOLDER_packageName'", "Pay"))) { + if(toLink.type_id === (await deep.id(${packageName}, "Pay"))) { return toLink; } - if (toLink.type_id === (await deep.id("'PLACEHOLDER_packageName'", "Payed"))) { + if (toLink.type_id === (await deep.id(${packageName}, "Payed"))) { return await deep.select({ id: toLink.to_id }); @@ -1062,7 +1044,7 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { const bankPaymentId = (await getPayLink(cancelledLink)).value.value.bankPaymentId; const cancelOptions = { - TerminalKey: "'PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_KEY'", + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", PaymentId: bankPaymentId, Amount: cancelledLink.value.value } @@ -1071,8 +1053,8 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { if(cancelResult.error) { await deep.insert({ - type_id: (await deep.id("'PLACEHOLDER_packageName'", "Error")), - from_id: "'PLACEHOLDER_tinkoffProviderId'", + type_id: (await deep.id(${packageName}, "Error")), + from_id: ${tinkoffProviderId}, to_id: cancelledLink.id, string: { data: {value: cancelResult.error } } }); @@ -1080,8 +1062,8 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { return cancelResult; }; - const cancelledInsertHandlerString = replacePlaceholdersInHandlers(cancelledInsertHandler); - console.log({cancelledInsertHandlerString}); +`; + console.log({ cancelledInsertHandler }); const { data: [{ id: cancelledInsertHandlerId }], @@ -1124,29 +1106,29 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { }, string: { data: { - value: cancelledInsertHandlerString, + value: cancelledInsertHandler, }, }, }); console.log({ cancelledInsertHandlerId }); - const tinkoffNotificationHandler = + const tinkoffNotificationHandler = /*javascript*/ ` async ( req, res, next, { deep, require, gql } ) => { - 'PLACEHOLDER_handlersDependencies'; + ${handlersDependencies} const reqBody = req.body; console.log({reqBody}); const status = req.body.Status; console.log({status}); if (status == 'AUTHORIZED') { - const confirm = 'PLACEHOLDER_confirm'; + const confirm = ${confirm.toString()}; const confirmOptions = { - TerminalKey: "'PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_KEY'", + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", PaymentId: req.body.PaymentId, Amount: req.body.Amount, // Receipt: req.body.Receipt, @@ -1155,16 +1137,16 @@ async ( console.log({confirmResult}); } else if (status == 'CONFIRMED') { console.log({payQueryData}); - const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: await deep.id("'PLACEHOLDER_packageName'", "Pay"), from_id: req.body.CustomerKey}); + const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: await deep.id(${packageName}, "Pay"), from_id: req.body.CustomerKey}); const payedInsertData = await deep.insert({ - type_id: (await deep.id("'PLACEHOLDER_packageName'", "Payed")), - from_id: "'PLACEHOLDER_tinkoffProviderId'", + type_id: (await deep.id(${packageName}, "Payed")), + from_id: ${tinkoffProviderId}, to_id: payId, in: { data: [ { - type_id: await deep.id("'PLACEHOLDER_corePackageName'", 'Contain'), - from_id: "'PLACEHOLDER_deep.linkId'", + type_id: await deep.id(${corePackageName}, 'Contain'), + from_id: ${deep.linkId}, }, ], }, @@ -1173,8 +1155,8 @@ async ( } res.send('ok'); }; - const tinkoffNotificationHandlerString = replacePlaceholdersInHandlers(tinkoffNotificationHandler); - console.log({tinkoffNotificationHandlerString}); +`; + console.log({ tinkoffNotificationHandler }); await deep.insert( { @@ -1236,7 +1218,7 @@ async ( type_id: SyncTextFile, string: { data: { - value: tinkoffNotificationHandlerString, + value: tinkoffNotificationHandler, }, }, }, @@ -1335,7 +1317,7 @@ async ( console.log('deleteTestLinks-start'); const { data: testLinks } = await deep.select({ type_id: { - _in: [ PObject, PSum, PPay, PUrl, PPayed, PError, PCancelled ], + _in: { PObject, PSum, PPay, PUrl, PPayed, PError, PCancelled }, }, }); for (let i = 0; i < testLinks.length; i++) { @@ -1378,8 +1360,6 @@ async ( const initResult = await init(initOptions); expect(initResult.error).to.equal(undefined); - - return initResult; }; const testConfirm = async () => { @@ -1409,7 +1389,8 @@ async ( }; const initResult = await init(initOptions); - console.log({initResult}); + + confirmDebug('initResult', initResult?.response?.Success); await payInBrowser({ browser, @@ -1423,12 +1404,10 @@ async ( }; const confirmResult = await confirm(confirmOptions); - console.log({confirmResult}); + confirmDebug('confirm', confirmResult); expect(confirmResult.error).to.equal(undefined); expect(confirmResult.response.Status).to.equal('CONFIRMED'); - - return confirmResult; }; const testCancel = async () => { @@ -1582,10 +1561,17 @@ async ( const testCancelAfterPayAfterConfirmFullPrice = async () => { console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - const confirmResult = await testConfirm(); + await testConfirm(); + + const { + data: [payLink], + } = await deep.select({ + type_id: PPay, + }); - const bankPaymentId = confirmResult.response.PaymentId; - console.log({bankPaymentId}); + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1604,10 +1590,17 @@ async ( const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); - const confirmResult = await testConfirm(); + await testConfirm(); - const bankPaymentId = confirmResult.response.PaymentId; - console.log({bankPaymentId}); + const { + data: [payLink], + } = await deep.select({ + type_id: PPay, + }); + + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1634,9 +1627,17 @@ async ( const testCancelBeforePay = async () => { console.log('testCancelBeforePay-start'); - const initResult = await testInit(); + await testInit(); - const bankPaymentId = initResult.response.PaymentId; + const { + data: [payLink], + } = await deep.select({ + type_id: PPay, + }); + + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1697,7 +1698,7 @@ async ( const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); - const initResult = await init({ + const initResult = await sendInit({ TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: uniqid(), OrderId: uniqid(), @@ -1713,11 +1714,10 @@ async ( const getCardListOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, + CustomerKey: uniqid(), }; const getCardListResult = await getCardList(getCardListOptions); - console.log({ getCardListResult }); expect(getCardListResult.error).to.equal(undefined); }; @@ -2116,7 +2116,9 @@ async ( data: [payLink], } = await deep.select({ type_id: PPay }); - const bankPaymentId = payLink.value.value.bankPaymentId; + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); const getStateOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -2159,4 +2161,4 @@ async ( await callTests(); }; -f(); +f(); \ No newline at end of file From 34d1bb07b1df7d37ab0d2ff6a6b8e19f892bf9f4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 11:49:17 +0000 Subject: [PATCH 287/683] Fix typo --- payments-eacq.cjs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index ddbb3540..2cb34d9b 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -210,8 +210,7 @@ const f = async () => { console.log({ dataWithPassword }); return _generateToken(dataWithPassword); }; - - generateToken.toString = generateToken.toString() + const generateTokenString = generateToken.toString() .replace( 'PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_PASSWORD', process.env.PAYMENT_TEST_TERMINAL_PASSWORD @@ -220,7 +219,7 @@ const f = async () => { const getUrl = (method) => `PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL/${method}`; - getUrl.toString = getUrl.toString() + getUrlString = getUrl.toString() .replace( 'PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL', process.env.PAYMENT_EACQ_AND_TEST_URL From d0fd2d8c3bb631590bd43ff78aeab0fe1a9bf8b3 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 11:51:44 +0000 Subject: [PATCH 288/683] Move cancel func --- payments-eacq.cjs | 48 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 2cb34d9b..ae6d1b95 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -354,6 +354,30 @@ const f = async () => { } }; + const cancel = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Cancel'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + const resend = async (options) => { try { const response = await axios({ @@ -1240,30 +1264,6 @@ async ( } ); - const cancel = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Cancel'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - const callTests = async () => { console.log('callTests-start'); const PPayment = await deep.id(packageName, 'Payment'); From d3ce692d5052fe0bb1375d623534adcf1c5da35b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 23 Aug 2022 11:54:34 +0000 Subject: [PATCH 289/683] Use generateToken and url with replaces envs --- payments-eacq.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index ae6d1b95..e3ecc42f 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -888,9 +888,9 @@ const f = async () => { const axios = require('axios'); const errorsConverter = ${JSON.stringify(errorsConverter)}; const getError = ${getError.toString()}; - const getUrl = ${getUrl.toString()}; + const getUrl = ${getUrlString}; const _generateToken = ${_generateToken.toString()}; - const generateToken = ${generateToken.toString()}; + const generateToken = ${generateTokenString}; `; console.log({ handlersDependencies }); From 1bb909736138c92dd7bb26eb335d341a936f58dd Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 24 Aug 2022 05:21:25 +0000 Subject: [PATCH 290/683] Remove unused code --- payments-eacq.cjs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index e3ecc42f..38aa5508 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -205,23 +205,23 @@ const f = async () => { const { Receipt, DATA, Shops, ...restData } = data; const dataWithPassword = { ...restData, - Password: "PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_PASSWORD", + Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, }; console.log({ dataWithPassword }); return _generateToken(dataWithPassword); }; const generateTokenString = generateToken.toString() .replace( - 'PLACEHOLDER_process.env.PAYMENT_TEST_TERMINAL_PASSWORD', + 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', process.env.PAYMENT_TEST_TERMINAL_PASSWORD ); console.log({ generateTokenString }); const getUrl = (method) => - `PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL/${method}`; + `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; getUrlString = getUrl.toString() .replace( - 'PLACEHOLDER_process.env.PAYMENT_EACQ_AND_TEST_URL', + '${process.env.PAYMENT_EACQ_AND_TEST_URL}', process.env.PAYMENT_EACQ_AND_TEST_URL ); console.log({ getUrlString }); @@ -320,7 +320,11 @@ const f = async () => { const error = getError(response.data.ErrorCode); - return d; + return { + error, + request: options, + response: response.data, + }; } catch (error) { return { error, @@ -1389,8 +1393,6 @@ async ( const initResult = await init(initOptions); - confirmDebug('initResult', initResult?.response?.Success); - await payInBrowser({ browser, page, @@ -1403,7 +1405,6 @@ async ( }; const confirmResult = await confirm(confirmOptions); - confirmDebug('confirm', confirmResult); expect(confirmResult.error).to.equal(undefined); expect(confirmResult.response.Status).to.equal('CONFIRMED'); From 69dd23667359ea8b3324db6b8840e1ae9c8b13bb Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 24 Aug 2022 05:29:31 +0000 Subject: [PATCH 291/683] Do not delete any links in realization tests --- payments-eacq.cjs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 38aa5508..a98794fc 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1654,15 +1654,10 @@ async ( console.log('testCancelBeforePay-end'); }; await testCancelAfterPayBeforeConfirmFullPrice(); - await deleteTestLinks(); await testCancelAfterPayBeforeConfirmCustomPriceX2(); - await deleteTestLinks(); await testCancelAfterPayAfterConfirmFullPrice(); - await deleteTestLinks(); await testCancelAfterPayAfterConfirmCustomPriceX2(); - await deleteTestLinks(); await testCancelBeforePay(); - await deleteTestLinks(); console.log('testCancel-end'); }; From 8dea4c41aa9267011372faf3caa1efdcd7c18b02 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 24 Aug 2022 05:35:42 +0000 Subject: [PATCH 292/683] Update realization tests, do not use links in them --- payments-eacq.cjs | 51 ++++++++++++++--------------------------------- 1 file changed, 15 insertions(+), 36 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index a98794fc..fe86ee9f 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1363,6 +1363,8 @@ async ( const initResult = await init(initOptions); expect(initResult.error).to.equal(undefined); + + return initResult; }; const testConfirm = async () => { @@ -1408,6 +1410,8 @@ async ( expect(confirmResult.error).to.equal(undefined); expect(confirmResult.response.Status).to.equal('CONFIRMED'); + + return confirmResult; }; const testCancel = async () => { @@ -1561,17 +1565,9 @@ async ( const testCancelAfterPayAfterConfirmFullPrice = async () => { console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - await testConfirm(); - - const { - data: [payLink], - } = await deep.select({ - type_id: PPay, - }); + const confirmResult = await testConfirm(); - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); + const bankPaymentId = confirmResult.response.PaymentId; const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1590,17 +1586,9 @@ async ( const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); - await testConfirm(); - - const { - data: [payLink], - } = await deep.select({ - type_id: PPay, - }); + const confirmResult = await testConfirm(); - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); + const bankPaymentId = confirmResult.response.PaymentId;; const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1627,17 +1615,9 @@ async ( const testCancelBeforePay = async () => { console.log('testCancelBeforePay-start'); - await testInit(); + const initResult = await testInit(); - const { - data: [payLink], - } = await deep.select({ - type_id: PPay, - }); - - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); + const bankPaymentId = initResult.response.PaymentId;; const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1663,9 +1643,6 @@ async ( }; const testGetState = async () => { - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - const initResult = await init({ TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, OrderId: uniqid(), @@ -1673,6 +1650,9 @@ async ( Amount: PRICE, }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); await payInBrowser({ browser, page, @@ -1690,9 +1670,6 @@ async ( }; const testGetCardList = async () => { - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - const initResult = await sendInit({ TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: uniqid(), @@ -1701,6 +1678,8 @@ async ( Recurrent: 'Y', }); + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); await payInBrowser({ browser, page, From f4f40f7f37cae2fc50bac67bf7d8c6769100d077 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 24 Aug 2022 05:38:14 +0000 Subject: [PATCH 293/683] sendInit -> init --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index fe86ee9f..0e3a83ff 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1670,7 +1670,7 @@ async ( }; const testGetCardList = async () => { - const initResult = await sendInit({ + const initResult = await init({ TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: uniqid(), OrderId: uniqid(), From 60b3079f7e125f2b2e447369d855993e5b87802d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 24 Aug 2022 05:40:49 +0000 Subject: [PATCH 294/683] Use deep.linkId as customer key --- payments-eacq.cjs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 0e3a83ff..f7894d18 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1337,7 +1337,7 @@ async ( OrderId: uniqid(), Amount: PRICE, Description: 'Test shopping', - CustomerKey: uniqid(), + CustomerKey: deep.linkId, Language: 'ru', Recurrent: 'Y', DATA: { @@ -1375,7 +1375,7 @@ async ( TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, Amount: PRICE, OrderId: uniqid(), - CustomerKey: uniqid(), + CustomerKey: deep.linkId, PayType: 'T', // Receipt: { // Items: [{ @@ -1646,7 +1646,7 @@ async ( const initResult = await init({ TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, OrderId: uniqid(), - CustomerKey: uniqid(), + CustomerKey: deep.linkId, Amount: PRICE, }); @@ -1672,7 +1672,7 @@ async ( const testGetCardList = async () => { const initResult = await init({ TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), + CustomerKey: deep.linkId, OrderId: uniqid(), Amount: PRICE, Recurrent: 'Y', @@ -1688,7 +1688,7 @@ async ( const getCardListOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), + CustomerKey: deep.linkId, }; const getCardListResult = await getCardList(getCardListOptions); @@ -1771,7 +1771,7 @@ async ( const addCustomerOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), + CustomerKey: deep.linkId, }; const addCustomerResult = await addCustomer(addCustomerOptions); @@ -1785,7 +1785,7 @@ async ( const customerOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), + CustomerKey: deep.linkId, }; const addCustomerDataOptions = { @@ -1812,7 +1812,7 @@ async ( const removeCustomerData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), + CustomerKey: deep.linkId, }; const newAddCustomerData = { From 105663d581fba0b99625fd03945e62f73bb556d7 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 24 Aug 2022 05:51:41 +0000 Subject: [PATCH 295/683] Use the same customer key for add and remove customer --- payments-eacq.cjs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f7894d18..20bbbee6 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1773,19 +1773,23 @@ async ( TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: deep.linkId, }; + console.log({addCustomerOptions}); const addCustomerResult = await addCustomer(addCustomerOptions); + console.log({addCustomerResult}); expect(addCustomerResult.error).to.equal(undefined); console.log('testAddCustomer-end'); }; + const customerKey = uniqid(); + const testGetCustomer = async () => { console.log('testGetCustomer-start'); const customerOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, + CustomerKey: customerKey, }; const addCustomerDataOptions = { @@ -1812,7 +1816,7 @@ async ( const removeCustomerData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, + CustomerKey: customerKey, }; const newAddCustomerData = { From 627b8029634d83c24c6277fd4868a8ae75643384 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 24 Aug 2022 05:54:30 +0000 Subject: [PATCH 296/683] Fix typo --- payments-eacq.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 20bbbee6..5d2163b1 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1766,12 +1766,14 @@ async ( console.log('testCharge-end'); }; + const customerKey = uniqid(); + const testAddCustomer = async () => { console.log('testAddCustomer-start'); const addCustomerOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, + CustomerKey: customerKey, }; console.log({addCustomerOptions}); @@ -1782,8 +1784,6 @@ async ( console.log('testAddCustomer-end'); }; - const customerKey = uniqid(); - const testGetCustomer = async () => { console.log('testGetCustomer-start'); From dd2c66c12ac0b22831d2f3876ee5e5234b1c29f3 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 24 Aug 2022 05:58:37 +0000 Subject: [PATCH 297/683] Make customer tests independent --- payments-eacq.cjs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 5d2163b1..8170a709 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1766,14 +1766,12 @@ async ( console.log('testCharge-end'); }; - const customerKey = uniqid(); - const testAddCustomer = async () => { console.log('testAddCustomer-start'); const addCustomerOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: customerKey, + CustomerKey: uniqid(), }; console.log({addCustomerOptions}); @@ -1789,7 +1787,7 @@ async ( const customerOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: customerKey, + CustomerKey: uniqid(), }; const addCustomerDataOptions = { @@ -1816,7 +1814,7 @@ async ( const removeCustomerData = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: customerKey, + CustomerKey: uniqid(), }; const newAddCustomerData = { From 2fe431d0f18d87e1266ae7080cd1eb4277444419 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 24 Aug 2022 06:13:38 +0000 Subject: [PATCH 298/683] Add quotes --- payments-eacq.cjs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 8170a709..04bc3005 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -906,12 +906,12 @@ async ({ deep, require, data: { newLink: payLink } }) => { const mpDownPay = await deep.select({ down: { link_id: { _eq: payLink.id }, - tree_id: { _eq: await deep.id(${packageName}, "paymentTree") }, + tree_id: { _eq: await deep.id("${packageName}", "paymentTree") }, }, }); console.log({mpDownPay}); - const sum = mpDownPay.data.find(link => link.type_id == (await deep.id(${packageName}, "Sum"))).value.value; + const sum = mpDownPay.data.find(link => link.type_id == (await deep.id("${packageName}", "Sum"))).value.value; console.log({sum}); const options = { @@ -955,14 +955,14 @@ async ({ deep, require, data: { newLink: payLink } }) => { const { data: [{ id: error }], } = await deep.insert({ - type_id: (await deep.id(${packageName}, "Error")), + type_id: (await deep.id("${packageName}", "Error")), from_id: ${tinkoffProviderId}, to_id: payLink.id, string: { data: { value: initResult.error } }, in: { data: [ { - type_id: await deep.id(${corePackageName}, 'Contain'), + type_id: await deep.id("${corePackageName}", 'Contain'), from_id: ${deep.linkId}, }, ], @@ -975,14 +975,14 @@ async ({ deep, require, data: { newLink: payLink } }) => { const { data: [{ id: urlId }], } = await deep.insert({ - type_id: (await deep.id(${packageName}, "Url")), + type_id: (await deep.id("${packageName}", "Url")), from_id: ${tinkoffProviderId}, to_id: payLink.id, string: { data: { value: initResult.response.PaymentURL } }, in: { data: [ { - type_id: await deep.id(${corePackageName}, 'Contain'), + type_id: await deep.id("${corePackageName}", 'Contain'), from_id: ${deep.linkId}, }, ], @@ -1054,10 +1054,10 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { const toLink = await deep.select({ id: cancelledLink.to_id }); - if(toLink.type_id === (await deep.id(${packageName}, "Pay"))) { + if(toLink.type_id === (await deep.id("${packageName}", "Pay"))) { return toLink; } - if (toLink.type_id === (await deep.id(${packageName}, "Payed"))) { + if (toLink.type_id === (await deep.id("${packageName}", "Payed"))) { return await deep.select({ id: toLink.to_id }); @@ -1080,7 +1080,7 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { if(cancelResult.error) { await deep.insert({ - type_id: (await deep.id(${packageName}, "Error")), + type_id: (await deep.id("${packageName}", "Error")), from_id: ${tinkoffProviderId}, to_id: cancelledLink.id, string: { data: {value: cancelResult.error } } @@ -1164,15 +1164,15 @@ async ( console.log({confirmResult}); } else if (status == 'CONFIRMED') { console.log({payQueryData}); - const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: await deep.id(${packageName}, "Pay"), from_id: req.body.CustomerKey}); + const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: await deep.id("${packageName}", "Pay"), from_id: req.body.CustomerKey}); const payedInsertData = await deep.insert({ - type_id: (await deep.id(${packageName}, "Payed")), + type_id: (await deep.id("${packageName}", "Payed")), from_id: ${tinkoffProviderId}, to_id: payId, in: { data: [ { - type_id: await deep.id(${corePackageName}, 'Contain'), + type_id: await deep.id("${corePackageName}", 'Contain'), from_id: ${deep.linkId}, }, ], From cafdef431dcd7bb05831d56cdaeac7ed73cd0ae4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 24 Aug 2022 06:25:21 +0000 Subject: [PATCH 299/683] Update payInsertHandler --- payments-eacq.cjs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 04bc3005..859bdfab 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1051,22 +1051,25 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { const cancel = ${cancel.toString()}; const getPayLink = async (cancelledLink) => { + console.log("getPayLink-start"); + console.log({cancelledLink}); const toLink = await deep.select({ id: cancelledLink.to_id }); - if(toLink.type_id === (await deep.id("${packageName}", "Pay"))) { - return toLink; + console.log({toLink}); + var result; + if(toLink.type_id === (await deep.id("@deep-foundation/payments-eacq", "Pay"))) { + result = toLink; } - if (toLink.type_id === (await deep.id("${packageName}", "Payed"))) { - return await deep.select({ + if (toLink.type_id === (await deep.id("@deep-foundation/payments-eacq", "Payed"))) { + result = await deep.select({ id: toLink.to_id }); - } - } - - const toLink = await deep.select({ - id: cancelledLink.to_id - }); + } + console.log({result}); + console.log("getPayLink-end"); + return result; + }; const bankPaymentId = (await getPayLink(cancelledLink)).value.value.bankPaymentId; From 73aaab86eb7abb0f66ebaa4b44e81dfd46a8d0a3 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 24 Aug 2022 06:29:39 +0000 Subject: [PATCH 300/683] Update getPayLink --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 859bdfab..009f0124 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1053,7 +1053,7 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { const getPayLink = async (cancelledLink) => { console.log("getPayLink-start"); console.log({cancelledLink}); - const toLink = await deep.select({ + const {data: [toLink]} = await deep.select({ id: cancelledLink.to_id }); console.log({toLink}); From 7e6c399210c162b3b67b1824cb825f35147ed538 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 24 Aug 2022 06:34:58 +0000 Subject: [PATCH 301/683] Change cancelled handler trigger --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 009f0124..49e576fb 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1118,7 +1118,7 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { }, { type_id: HandleInsert, - from_id: PPay, + from_id: PCancelled, in: { data: [ { From f5d2cccd405533c36cd6a81659daae6013601b1d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 24 Aug 2022 06:41:08 +0000 Subject: [PATCH 302/683] Fix template string --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 49e576fb..733297bf 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -213,7 +213,7 @@ const f = async () => { const generateTokenString = generateToken.toString() .replace( 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', - process.env.PAYMENT_TEST_TERMINAL_PASSWORD + `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` ); console.log({ generateTokenString }); From 2dcea19571ee9ae895c686b39b020c5d043e27dd Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 24 Aug 2022 14:29:43 +0000 Subject: [PATCH 303/683] Add object to pay instead of string --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 733297bf..acca8aa5 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1909,7 +1909,7 @@ async ( type_id: PPay, from_id: deep.linkId, to_id: sumId, - string: { data: { value: uniqid() } }, + object: { data: { value: {orderId: uniqid()} } }, in: { data: [ { From 3905ee44cef3f0914df50c8201a9c422b1d3f71f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 24 Aug 2022 14:29:59 +0000 Subject: [PATCH 304/683] Use object to update payLink --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index acca8aa5..83fb0be8 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -990,7 +990,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); console.log({ urlId }); - await deep.update(payLink.id, {value: {...payLink.value.value, bankPaymentId: initResult.response.PaymentId}}) + await deep.update(payLink.id, {object: {data: {value: {...payLink.value.value, bankPaymentId: initResult.response.PaymentId}}}}); return initResult; }; From 92ea1a5b187052cbd91973e69046fa8f0e931d7f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 25 Aug 2022 05:10:09 +0000 Subject: [PATCH 305/683] Fix handlers --- payments-eacq.cjs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 83fb0be8..d495f70b 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -911,12 +911,13 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); console.log({mpDownPay}); - const sum = mpDownPay.data.find(link => link.type_id == (await deep.id("${packageName}", "Sum"))).value.value; + const PSum = await deep.id("${packageName}", "Sum"); + const sum = mpDownPay.data.find(link => link.type_id == PSum).value.value; console.log({sum}); const options = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - OrderId: payLink?.value?.value ?? payLink.id, + OrderId: payLink?.value?.value.orderId ?? payLink.id, CustomerKey: ${deep.linkId}, NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", PayType: 'T', @@ -1064,7 +1065,7 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { if (toLink.type_id === (await deep.id("@deep-foundation/payments-eacq", "Payed"))) { result = await deep.select({ id: toLink.to_id - }); + }).data[0]; } console.log({result}); console.log("getPayLink-end"); @@ -1166,12 +1167,14 @@ async ( const confirmResult = await confirm(confirmOptions); console.log({confirmResult}); } else if (status == 'CONFIRMED') { - console.log({payQueryData}); - const {data: [{id: payId}]} = await deep.select({value: req.body.OrderId, type_id: await deep.id("${packageName}", "Pay"), from_id: req.body.CustomerKey}); + const {data: payLinks} = await deep.select({type_id: await deep.id("${packageName}", "Pay")}); + console.log({payLinks}); + const payLink = payLinks.find((payLink) => payLink.value.value.orderId == req.body.OrderId); + console.log({payLink}); const payedInsertData = await deep.insert({ type_id: (await deep.id("${packageName}", "Payed")), from_id: ${tinkoffProviderId}, - to_id: payId, + to_id: payLink.id, in: { data: [ { @@ -2133,7 +2136,7 @@ async ( await testGetCardList(); }; - await callRealizationTests(); + // await callRealizationTests(); await callIntegrationTests(); }; From 8a74a1ae398f0a7b2e75d0db529a17e35e88dd82 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 25 Aug 2022 05:10:22 +0000 Subject: [PATCH 306/683] Remove unused code --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index d495f70b..bac3d674 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -951,7 +951,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({initResult}); - if (initResult.error != undefined) { + if (initResult.error) { console.log('initResult.error:', initResult.error); const { data: [{ id: error }], From c084274b9497ecbb0e689e9656eddf292a5bec87 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 25 Aug 2022 05:19:38 +0000 Subject: [PATCH 307/683] Handle errros --- payments-eacq.cjs | 68 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 61 insertions(+), 7 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index bac3d674..6e30a272 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -959,7 +959,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { type_id: (await deep.id("${packageName}", "Error")), from_id: ${tinkoffProviderId}, to_id: payLink.id, - string: { data: { value: initResult.error } }, + string: { data: { value: "Could not initialize the order. " + initResult.error } }, in: { data: [ { @@ -991,7 +991,25 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); console.log({ urlId }); - await deep.update(payLink.id, {object: {data: {value: {...payLink.value.value, bankPaymentId: initResult.response.PaymentId}}}}); + const payLinkUpdateQuery = await deep.update(payLink.id, {object: {data: {value: {...payLink.value.value, bankPaymentId: initResult.response.PaymentId}}}}); + if (payLinkUpdateQuery.error) { + console.log('payLinkUpdateQuery.error:', payLinkUpdateQuery.error); + const { + data: [{ id: error }], + } = await deep.insert({ + type_id: (await deep.id("${packageName}", "Error")), + from_id: ${tinkoffProviderId}, + to_id: payLink.id, + string: { data: { value: "Could not add the bank payment id to pay value. " + payLinkUpdateQuery.error } }, + in: { + data: [ + { + type_id: await deep.id("${corePackageName}", 'Contain'), + from_id: ${deep.linkId}, + }, + ], + }, + }); return initResult; }; @@ -1072,7 +1090,8 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { return result; }; - const bankPaymentId = (await getPayLink(cancelledLink)).value.value.bankPaymentId; + const payLink = await getPayLink(cancelledLink); + const bankPaymentId = payLink.value.value.bankPaymentId; const cancelOptions = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", @@ -1081,13 +1100,12 @@ async ({ deep, require, data: { newLink: cancelledLink } }) => { } const cancelResult = await cancel(cancelOptions); - if(cancelResult.error) { await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), from_id: ${tinkoffProviderId}, to_id: cancelledLink.id, - string: { data: {value: cancelResult.error } } + string: { data: {value: "Could not cancel the pay. " + cancelResult.error } } }); } @@ -1166,12 +1184,30 @@ async ( }; const confirmResult = await confirm(confirmOptions); console.log({confirmResult}); + if (confirmResult.error) { + console.log('confirmResult.error:', confirmResult.error); + const { + data: [{ id: error }], + } = await deep.insert({ + type_id: (await deep.id("${packageName}", "Error")), + from_id: ${tinkoffProviderId}, + to_id: payLink.id, + string: { data: { value: "Could not confirm the pay. " + confirmResult.error } }, + in: { + data: [ + { + type_id: await deep.id("${corePackageName}", 'Contain'), + from_id: ${deep.linkId}, + }, + ], + }, + }); } else if (status == 'CONFIRMED') { const {data: payLinks} = await deep.select({type_id: await deep.id("${packageName}", "Pay")}); console.log({payLinks}); const payLink = payLinks.find((payLink) => payLink.value.value.orderId == req.body.OrderId); console.log({payLink}); - const payedInsertData = await deep.insert({ + const payedInsertQuery = await deep.insert({ type_id: (await deep.id("${packageName}", "Payed")), from_id: ${tinkoffProviderId}, to_id: payLink.id, @@ -1184,7 +1220,25 @@ async ( ], }, }); - console.log({payedInsertData}); + if (payedInsertQuery.error) { + console.log('payedInsertQuery.error:', payedInsertQuery.error); + const { + data: [{ id: error }], + } = await deep.insert({ + type_id: (await deep.id("${packageName}", "Error")), + from_id: ${tinkoffProviderId}, + to_id: payLink.id, + string: { data: { value: "Could not insert payed link after confirm. " + payedInsertQuery.error } }, + in: { + data: [ + { + type_id: await deep.id("${corePackageName}", 'Contain'), + from_id: ${deep.linkId}, + }, + ], + }, + }); + console.log({payedInsertQuery}); } res.send('ok'); }; From 7150f4888d0d0157d921a29adb630233f338b1ec Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 26 Aug 2022 05:35:38 +0000 Subject: [PATCH 308/683] Get payment link and then pay link in notification handler --- payments-eacq.cjs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 6e30a272..f08f2b13 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1174,6 +1174,18 @@ async ( console.log({reqBody}); const status = req.body.Status; console.log({status}); + + const paymentLink = deep.select({ + object: {value: {_contains: req.body.OrderId}} + }); + + const payLink = deep.select({ + up: { + parent_id: paymentLink.id, + tree_id: ${paymentTreeId} + } + }); + if (status == 'AUTHORIZED') { const confirm = ${confirm.toString()}; const confirmOptions = { @@ -1203,10 +1215,6 @@ async ( }, }); } else if (status == 'CONFIRMED') { - const {data: payLinks} = await deep.select({type_id: await deep.id("${packageName}", "Pay")}); - console.log({payLinks}); - const payLink = payLinks.find((payLink) => payLink.value.value.orderId == req.body.OrderId); - console.log({payLink}); const payedInsertQuery = await deep.insert({ type_id: (await deep.id("${packageName}", "Payed")), from_id: ${tinkoffProviderId}, From d8c4c029aaf6bc7a9837a534d65cbb84e22feab1 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 26 Aug 2022 05:36:15 +0000 Subject: [PATCH 309/683] Get order and payment id from payment link --- payments-eacq.cjs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f08f2b13..f65d732b 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -915,9 +915,13 @@ async ({ deep, require, data: { newLink: payLink } }) => { const sum = mpDownPay.data.find(link => link.type_id == PSum).value.value; console.log({sum}); + const PPayment = await deep.id("${packageName}", "Payment"); + const paymentLink = mpDownPay.data.find(link => link.type_id === PPayment); + console.log({paymentLink}); + const options = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - OrderId: payLink?.value?.value.orderId ?? payLink.id, + OrderId: paymentLink?.value?.value.orderId ?? paymentLink.id, CustomerKey: ${deep.linkId}, NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", PayType: 'T', From 7b32cbbb62da96d77b015b380951e6123a210715 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 26 Aug 2022 05:36:33 +0000 Subject: [PATCH 310/683] Replace cancelInsertHandler with cancellingPaymentInsertHandler draft --- payments-eacq.cjs | 235 ++++++++++++++++++++++++++++++---------------- 1 file changed, 152 insertions(+), 83 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f65d732b..1b2a188d 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1065,106 +1065,175 @@ async ({ deep, require, data: { newLink: payLink } }) => { }, }, }); - console.log({ payInsertHandlerId }); - const cancelledInsertHandler = /*javascript*/ ` -async ({ deep, require, data: { newLink: cancelledLink } }) => { - ${handlersDependencies} - const cancel = ${cancel.toString()}; - - const getPayLink = async (cancelledLink) => { - console.log("getPayLink-start"); - console.log({cancelledLink}); - const {data: [toLink]} = await deep.select({ - id: cancelledLink.to_id - }); - console.log({toLink}); - var result; - if(toLink.type_id === (await deep.id("@deep-foundation/payments-eacq", "Pay"))) { - result = toLink; - } - if (toLink.type_id === (await deep.id("@deep-foundation/payments-eacq", "Payed"))) { - result = await deep.select({ - id: toLink.to_id - }).data[0]; - } - console.log({result}); - console.log("getPayLink-end"); - return result; - }; + const cancellingPaymentInsertHandler = /*javascript*/ ` + async ({ deep, require, data: { newLink: paymentLink } }) => { + ${handlersDependencies} + const cancel = ${cancel.toString()}; + + const fromLink = await deep.select(paymentLink.from_id); + const toLink = await deep.select(paymentLink.to_id); + const User = await deep.id("${corePackageName}", "User"); + const isCancellingPayment = (fromLink.type_id === paymentLink.type_id) && (toLink.typeId === User); + if(isCancellingPayment) { + const mpUpPaymentQuery = await deep.select({ + up: { + parent_id: paymentLink.id, + tree_id: ${paymentTreeId} + } + }); - const payLink = await getPayLink(cancelledLink); - const bankPaymentId = payLink.value.value.bankPaymentId; + const PSum = await deep.id("${packageName}", "Sum"); + const sumLink = mpUpPaymentQuery.data.find(link => link.type_id == PSum); + const amount = sumLink.value.value; - const cancelOptions = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentId: bankPaymentId, - Amount: cancelledLink.value.value - } + const cancelOptions = { + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + PaymentId: paymentLink.value.value.bankPaymentId, + Amount: amount, + }; + console.log({ cancelOptions }); - const cancelResult = await cancel(cancelOptions); - if(cancelResult.error) { - await deep.insert({ - type_id: (await deep.id("${packageName}", "Error")), - from_id: ${tinkoffProviderId}, - to_id: cancelledLink.id, - string: { data: {value: "Could not cancel the pay. " + cancelResult.error } } - }); - } + const cancelPromise = cancel(cancelOptions); + + const PPay = await deep.id("${packageName}", "Pay"); - return cancelResult; -}; -`; - console.log({ cancelledInsertHandler }); + const payInsertQuery = await deep.insert({ + type_id: PPay, + from_id: ${deep.linkId}, + to_id: sumLink.id + }); + console.log({payInsertQuery}); + if(payInsertQuery.error) { + const errorMessage = "Could not cancel the order. " + cancelResult.error; + const { + data: [{ id: error }], + } = await deep.insert({ + type_id: (await deep.id("${packageName}", "Error")), + from_id: ${tinkoffProviderId}, + to_id: payLink.id, + string: { data: { value: errorMessage } }, + in: { + data: [ + { + type_id: await deep.id("${corePackageName}", 'Contain'), + from_id: ${deep.linkId}, + }, + ], + }, + }); + console.log({ error }); + throw new Error(errorMessage); + } + const payLink = payInsertQuery.data[0]; - const { - data: [{ id: cancelledInsertHandlerId }], - } = await deep.insert({ - type_id: SyncTextFile, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'cancelledInsertHandlerFile' } }, - }, - { - from_id: dockerSupportsJs, - type_id: Handler, + const cancelResult = await cancelPromise; + console.log({cancelResult}); + if (cancelResult.error) { + const errorMessage = "Could not cancel the order. " + cancelResult.error; + const { + data: [{ id: error }], + } = await deep.insert({ + type_id: (await deep.id("${packageName}", "Error")), + from_id: ${tinkoffProviderId}, + to_id: payLink.id, + string: { data: { value: errorMessage } }, in: { data: [ { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'cancelledInsertHandler' } }, + type_id: await deep.id("${corePackageName}", 'Contain'), + from_id: ${deep.linkId}, }, + ], + }, + }); + console.log({ error }); + throw new Error(errorMessage); + } + + const payValueInsertQuery = await deep.insert({linkId: payLink.id, value: {orderId: cancelResult.response.OrderId, bankPaymentId: cancelResult.response.PaymentId}}, {table: "objects"}); + console.log({payValueInsertQuery}); + if (payValueInsertQuery.error) { + const errroMessage = "Could not insert value of the pay link. " + payValueInsertQuery.error; + const { + data: [{ id: error }], + } = await deep.insert({ + type_id: (await deep.id("${packageName}", "Error")), + from_id: ${tinkoffProviderId}, + to_id: payLink.id, + string: { data: { value: errroMessage } }, + in: { + data: [ { - type_id: HandleInsert, - from_id: PCancelled, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'cancelledInsertHandle' } }, - }, - ], - }, + type_id: await deep.id("${corePackageName}", 'Contain'), + from_id: ${deep.linkId}, }, ], }, + }); + throw new Error(errorMessage); + } + + const PPayed = await deep.id("${packageName}", "Payed"); + await deep.insert({ + type_id: PPayed, + from_id: ${tinkoffProviderId}, + to_id: payLink.id + }); + } + + return cancelResult; + }; + `; + console.log({ paymentInsertHandler: cancellingPaymentInsertHandler }); + + const { + data: [{ id: paymentInsertHandlerId }], + } = await deep.insert({ + type_id: SyncTextFile, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'paymentInsertHandlerFile' } }, + }, + { + from_id: dockerSupportsJs, + type_id: Handler, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'paymentInsertHandler' } }, + }, + { + type_id: HandleInsert, + from_id: PPay, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'paymentInsertHandle' } }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + string: { + data: { + value: payInsertHandler, }, - ], - }, - string: { - data: { - value: cancelledInsertHandler, }, - }, - }); - - console.log({ cancelledInsertHandlerId }); + }); + console.log({ paymentInsertHandlerId }); const tinkoffNotificationHandler = /*javascript*/ ` async ( From 494c2d5559a098060bc0c402fdf8572b74e2403e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 <66206278+FreePhoenix888@users.noreply.github.com> Date: Fri, 26 Aug 2022 18:44:47 +0600 Subject: [PATCH 311/683] Rename testCancelIntegration to testCancel. Add parameters to tests --- payments-eacq.cjs | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 1b2a188d..865460da 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1987,7 +1987,7 @@ async ( }; const callIntegrationTests = async () => { - const testInit = async () => { + const testInit = async ({customerKey} = {customerKey: uniqid()}) => { console.log('testInit-start'); const { data: [{ id: paymentId }], @@ -2047,7 +2047,7 @@ async ( type_id: PPay, from_id: deep.linkId, to_id: sumId, - object: { data: { value: {orderId: uniqid()} } }, + object: { data: { value: {orderId: customerKey} } }, in: { data: [ { @@ -2073,9 +2073,9 @@ async ( console.log('testInit-end'); }; - const testFinishAuthorize = async () => { + const testFinishAuthorize = async ({customerKey} = {customerKey: uniqid()}) => { console.log('testFinishAuthorize-start'); - await testInit(); + await testInit({customerKey}); const { data: [ { @@ -2096,9 +2096,9 @@ async ( console.log('testFinishAuthorize-end'); }; - const testConfirm = async () => { + const testConfirm = async ({customerKey} = {customerKey: uniqid()}) => { console.log('testConfirm-start'); - await testFinishAuthorize(); + await testFinishAuthorize({customerKey}); await sleep(17000); let { data } = await deep.select({ type_id: PPayed, @@ -2107,11 +2107,17 @@ async ( console.log('testConfirm-end'); }; - const testCancelIntegration = async () => { - console.log('testCancelIntegration-start'); + const testCancel = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testCancel-start'); const testCancelAfterPayAfterConfirmFullPrice = async () => { console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - await testConfirm(); + await testConfirm({customerKey}); + + const { + data: [paymentLink], + } = await deep.select({ + type_id: PPayment, + }); const { data: [payLink], @@ -2135,6 +2141,12 @@ async ( number: { data: { value: PRICE } }, }); + await deep.insert({ + type_id: PPayment, + from_id: paymentLink.id, + to_id: customerKey + }); + await sleep(5000); const { data: cancelledErrors } = await deep.select({ @@ -2222,7 +2234,7 @@ async ( await testCancelBeforePay(); await deleteTestLinks(); - console.log('testCancelIntegration-end'); + console.log('testCancel-end'); }; const testGetState = async () => { @@ -2266,7 +2278,7 @@ async ( await testInit(); await testFinishAuthorize(); await testConfirm(); - await testCancelIntegration(); + await testCancel(); await testGetState(); await testGetCardList(); }; From 640407250eda05f5b73e897fdca9cc51453511ce Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 27 Aug 2022 12:30:12 +0000 Subject: [PATCH 312/683] Use destructurong, console log errorMessages --- payments-eacq.cjs | 49 +++++++++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 1b2a188d..e0c1617b 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -952,18 +952,16 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({options}); let initResult = await init(options); - console.log({initResult}); - if (initResult.error) { - console.log('initResult.error:', initResult.error); + const errorMessage = "Could not initialize the order. " + error; const { data: [{ id: error }], } = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), from_id: ${tinkoffProviderId}, to_id: payLink.id, - string: { data: { value: "Could not initialize the order. " + initResult.error } }, + string: { data: { value: errorMessage } }, in: { data: [ { @@ -1094,19 +1092,17 @@ async ({ deep, require, data: { newLink: payLink } }) => { Amount: amount, }; console.log({ cancelOptions }); - const cancelPromise = cancel(cancelOptions); - const PPay = await deep.id("${packageName}", "Pay"); - - const payInsertQuery = await deep.insert({ - type_id: PPay, + const {data: [{payLink}], error} = await deep.insert({ + type_id: await deep.id("${packageName}", "Pay"), from_id: ${deep.linkId}, to_id: sumLink.id }); - console.log({payInsertQuery}); - if(payInsertQuery.error) { - const errorMessage = "Could not cancel the order. " + cancelResult.error; + console.log({payLink}); + console.log({error}); + if(error) { + const errorMessage = "Could not cancel the order. " + error; const { data: [{ id: error }], } = await deep.insert({ @@ -1126,12 +1122,12 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({ error }); throw new Error(errorMessage); } - const payLink = payInsertQuery.data[0]; const cancelResult = await cancelPromise; console.log({cancelResult}); - if (cancelResult.error) { - const errorMessage = "Could not cancel the order. " + cancelResult.error; + const {error, response} = cancelResult; + if (error) { + const errorMessage = "Could not cancel the order. " + error; const { data: [{ id: error }], } = await deep.insert({ @@ -1152,16 +1148,15 @@ async ({ deep, require, data: { newLink: payLink } }) => { throw new Error(errorMessage); } - const payValueInsertQuery = await deep.insert({linkId: payLink.id, value: {orderId: cancelResult.response.OrderId, bankPaymentId: cancelResult.response.PaymentId}}, {table: "objects"}); - console.log({payValueInsertQuery}); - if (payValueInsertQuery.error) { - const errroMessage = "Could not insert value of the pay link. " + payValueInsertQuery.error; + const {error} = await deep.insert({linkId: payLink.id, value: {orderId: cancelResult.response.OrderId, bankPaymentId: cancelResult.response.PaymentId}}, {table: "objects"}); + if (error) { + const errroMessage = "Could not insert value of the pay link. " + error; const { data: [{ id: error }], } = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), from_id: ${tinkoffProviderId}, - to_id: payLink.id, + to_id: objectLink.id, string: { data: { value: errroMessage } }, in: { data: [ @@ -1181,15 +1176,15 @@ async ({ deep, require, data: { newLink: payLink } }) => { from_id: ${tinkoffProviderId}, to_id: payLink.id }); + + return cancelResult; } - - return cancelResult; }; `; - console.log({ paymentInsertHandler: cancellingPaymentInsertHandler }); + console.log({ cancellingPaymentInsertHandler }); const { - data: [{ id: paymentInsertHandlerId }], + data: [{ id: cancellingPaymentInsertHandlerId }], } = await deep.insert({ type_id: SyncTextFile, in: { @@ -1233,7 +1228,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }, }, }); - console.log({ paymentInsertHandlerId }); + console.log({ cancellingPaymentInsertHandlerId }); const tinkoffNotificationHandler = /*javascript*/ ` async ( @@ -1270,14 +1265,14 @@ async ( const confirmResult = await confirm(confirmOptions); console.log({confirmResult}); if (confirmResult.error) { - console.log('confirmResult.error:', confirmResult.error); + const errorMessage = "Could not confirm the pay. " + confirmResult.error; const { data: [{ id: error }], } = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), from_id: ${tinkoffProviderId}, to_id: payLink.id, - string: { data: { value: "Could not confirm the pay. " + confirmResult.error } }, + string: { data: { value: errorMessage } }, in: { data: [ { From 17c136fcd017e7d299d1f30d4679e7dc92539c71 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 28 Aug 2022 10:32:50 +0600 Subject: [PATCH 313/683] == -> === --- payments-eacq.cjs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 1ba4e69b..4e03dad2 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -912,7 +912,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({mpDownPay}); const PSum = await deep.id("${packageName}", "Sum"); - const sum = mpDownPay.data.find(link => link.type_id == PSum).value.value; + const sum = mpDownPay.data.find(link => link.type_id === PSum).value.value; console.log({sum}); const PPayment = await deep.id("${packageName}", "Payment"); @@ -1083,7 +1083,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); const PSum = await deep.id("${packageName}", "Sum"); - const sumLink = mpUpPaymentQuery.data.find(link => link.type_id == PSum); + const sumLink = mpUpPaymentQuery.data.find(link => link.type_id === PSum); const amount = sumLink.value.value; const cancelOptions = { @@ -1254,7 +1254,7 @@ async ( } }); - if (status == 'AUTHORIZED') { + if (status === 'AUTHORIZED') { const confirm = ${confirm.toString()}; const confirmOptions = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", @@ -1282,7 +1282,7 @@ async ( ], }, }); - } else if (status == 'CONFIRMED') { + } else if (status === 'CONFIRMED') { const payedInsertQuery = await deep.insert({ type_id: (await deep.id("${packageName}", "Payed")), from_id: ${tinkoffProviderId}, From 84b4d07ed94220f7e0fe51736e563f3facaf8185 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 28 Aug 2022 12:33:11 +0600 Subject: [PATCH 314/683] Update cancellingPaymentInsertHandler --- payments-eacq.cjs | 142 +++++++++++++++++++++++----------------------- 1 file changed, 72 insertions(+), 70 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 4e03dad2..1b2a7d9d 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1066,64 +1066,95 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({ payInsertHandlerId }); const cancellingPaymentInsertHandler = /*javascript*/ ` - async ({ deep, require, data: { newLink: paymentLink } }) => { + async ({ deep, require, data: { newLink: cacellingPaymentLink } }) => { ${handlersDependencies} const cancel = ${cancel.toString()}; - const fromLink = await deep.select(paymentLink.from_id); - const toLink = await deep.select(paymentLink.to_id); + const cancelledPaymentLink = await deep.select(cacellingPaymentLink.from_id); + const userLink = await deep.select(cacellingPaymentLink.to_id); const User = await deep.id("${corePackageName}", "User"); - const isCancellingPayment = (fromLink.type_id === paymentLink.type_id) && (toLink.typeId === User); + const isCancellingPayment = (cancelledPayment.type_id === cacellingPaymentLink.type_id) && (userLink.typeId === User); if(isCancellingPayment) { - const mpUpPaymentQuery = await deep.select({ + const {error} = await deep.insert({link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value}, {table: "objects"}); + if(error) { + // TODO ??? + } + + const {data: mpUpPayment, error} = await deep.select({ up: { - parent_id: paymentLink.id, + parent_id: cancelledPaymentLink.id, tree_id: ${paymentTreeId} } }); + if(error) { + // TODO ??? + } + + const PObject = await deep.id("${packageName}", "Object"); + const objectLinkOfCancelledPayment = mpUpPayment.find(link => link.type_id === PObject); + const {error, data: [objectLink]} = await deep.insert({ + type_id: PObject, + from_id: cacellingPaymentLink.id, + to_id: objectLinkOfCancelledPayment.to_id + }); + if(error) { + // TODO ??? + } + + const PSum = await deep.id("${packageName}", "Sum") + const sumLinkOfCancelledPayment = mpUpPayment.find(link => link.type_id === PSum); + const {error, data: [sumLink]} = await deep.insert({ + type_id: PSum, + from_id: sumLinkOfCancelledPayment.from_id, + to_id: cancellingPaymentLink.id + }); + if(error) { + // TODO ??? + } + + const PPay = await deep.id("${packageName}", "Payed"); + const payLinkOfCancelledPayment = mpUpPayment.find(link => link.type_id === PPay); + const {error, data: [payLink]} = await deep.insert({ + type_id: PPay, + from_id: payLinkOfCancelledPayment.from_id, + to_id: sumLink.id + }); + if(error) { + // TODO ??? + } + + const PUrl = await deep.id("${packageName}", "Url"); + const urlLinkOfCancelledPayment = mpUpPayment.find(link => link.type_id === PUrl); + const {error, data: [urlLink]} = await deep.insert({ + type_id: PUrl, + from_id: urlLinkOfCancelledPayment.from_id, + to_id: payLink.id, + object: { data: { value: urlLinkOfCancelledPayment.value.value }} + }); + if(error) { + // TODO ??? + } + + const PPayed = await deep.id("${packageName}", "Payed"); + const payedLinkOfCancelledPayment = mpUpPayment.find(link => link.type_id === PPayed); + const {error, data: [payedLink]} = await deep.insert({ + type_id: PPayed, + from_id: payedLinkOfCancelledPayment.from_id, + to_id: payLink.id + }); + if(error) { + // TODO ??? + } - const PSum = await deep.id("${packageName}", "Sum"); - const sumLink = mpUpPaymentQuery.data.find(link => link.type_id === PSum); const amount = sumLink.value.value; const cancelOptions = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentId: paymentLink.value.value.bankPaymentId, + PaymentId: cacellingPaymentLink.value.value.bankPaymentId, Amount: amount, }; console.log({ cancelOptions }); - const cancelPromise = cancel(cancelOptions); - - const {data: [{payLink}], error} = await deep.insert({ - type_id: await deep.id("${packageName}", "Pay"), - from_id: ${deep.linkId}, - to_id: sumLink.id - }); - console.log({payLink}); - console.log({error}); - if(error) { - const errorMessage = "Could not cancel the order. " + error; - const { - data: [{ id: error }], - } = await deep.insert({ - type_id: (await deep.id("${packageName}", "Error")), - from_id: ${tinkoffProviderId}, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - in: { - data: [ - { - type_id: await deep.id("${corePackageName}", 'Contain'), - from_id: ${deep.linkId}, - }, - ], - }, - }); - console.log({ error }); - throw new Error(errorMessage); - } - - const cancelResult = await cancelPromise; + const cancelResult = await cancel(cancelOptions); console.log({cancelResult}); const {error, response} = cancelResult; if (error) { @@ -1148,35 +1179,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { throw new Error(errorMessage); } - const {error} = await deep.insert({linkId: payLink.id, value: {orderId: cancelResult.response.OrderId, bankPaymentId: cancelResult.response.PaymentId}}, {table: "objects"}); - if (error) { - const errroMessage = "Could not insert value of the pay link. " + error; - const { - data: [{ id: error }], - } = await deep.insert({ - type_id: (await deep.id("${packageName}", "Error")), - from_id: ${tinkoffProviderId}, - to_id: objectLink.id, - string: { data: { value: errroMessage } }, - in: { - data: [ - { - type_id: await deep.id("${corePackageName}", 'Contain'), - from_id: ${deep.linkId}, - }, - ], - }, - }); - throw new Error(errorMessage); - } - - const PPayed = await deep.id("${packageName}", "Payed"); - await deep.insert({ - type_id: PPayed, - from_id: ${tinkoffProviderId}, - to_id: payLink.id - }); - return cancelResult; } }; From 8766476a8c7622feed7ba11f5caee296804b5a87 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 29 Aug 2022 11:16:01 +0600 Subject: [PATCH 315/683] Fix typo --- payments-eacq.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 1b2a7d9d..ab3f5d56 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1014,6 +1014,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); return initResult; + }; }; `; console.log({ payInsertHandler }); From e4adab5bb4e8b12f5746ab28bc03822662ac6544 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 29 Aug 2022 11:25:23 +0600 Subject: [PATCH 316/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index ab3f5d56..1e19fc13 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -954,7 +954,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { let initResult = await init(options); console.log({initResult}); if (initResult.error) { - const errorMessage = "Could not initialize the order. " + error; + const errorMessage = "Could not initialize the order. " + initResult.error; const { data: [{ id: error }], } = await deep.insert({ From 8e47a0c15c36d2cf5cfd0b5505b233955af33751 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 29 Aug 2022 12:21:54 +0600 Subject: [PATCH 317/683] Update update query --- payments-eacq.cjs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 1e19fc13..675d5474 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -993,16 +993,16 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); console.log({ urlId }); - const payLinkUpdateQuery = await deep.update(payLink.id, {object: {data: {value: {...payLink.value.value, bankPaymentId: initResult.response.PaymentId}}}}); - if (payLinkUpdateQuery.error) { - console.log('payLinkUpdateQuery.error:', payLinkUpdateQuery.error); + const payLinkUpdateQuery = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); + console.log({paymentLinkUpdateQuery}); + if (paymentLinkUpdateQuery.error) { const { data: [{ id: error }], } = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), from_id: ${tinkoffProviderId}, to_id: payLink.id, - string: { data: { value: "Could not add the bank payment id to pay value. " + payLinkUpdateQuery.error } }, + string: { data: { value: "Could not add the bank payment id to payment value. " + paymentLinkUpdateQuery.error } }, in: { data: [ { From 5d5971cd2ff1874737a4aeec624a4be0854d00a7 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 29 Aug 2022 12:57:21 +0600 Subject: [PATCH 318/683] Insert payment with object value --- payments-eacq.cjs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 675d5474..ef42291e 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -898,7 +898,7 @@ const f = async () => { `; console.log({ handlersDependencies }); - const payInsertHandler = /*javascript*/ ` + const payInsertHandler = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} const init = ${init.toString()}; @@ -993,7 +993,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); console.log({ urlId }); - const payLinkUpdateQuery = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); + const paymentLinkUpdateQuery = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); console.log({paymentLinkUpdateQuery}); if (paymentLinkUpdateQuery.error) { const { @@ -1066,7 +1066,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); console.log({ payInsertHandlerId }); - const cancellingPaymentInsertHandler = /*javascript*/ ` + const cancellingPaymentInsertHandler = ` async ({ deep, require, data: { newLink: cacellingPaymentLink } }) => { ${handlersDependencies} const cancel = ${cancel.toString()}; @@ -1233,7 +1233,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); console.log({ cancellingPaymentInsertHandlerId }); - const tinkoffNotificationHandler = /*javascript*/ ` + const tinkoffNotificationHandler = ` async ( req, res, @@ -1991,6 +1991,7 @@ async ( data: [{ id: paymentId }], } = await deep.insert({ type_id: PPayment, + object: { data: { value: {orderId: uniqid()} } }, in: { data: [ { @@ -2045,7 +2046,6 @@ async ( type_id: PPay, from_id: deep.linkId, to_id: sumId, - object: { data: { value: {orderId: customerKey} } }, in: { data: [ { From 8cc1dcb1b829c73a8ef0b3a9ffe396a11b7508b0 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 30 Aug 2022 13:44:21 +0600 Subject: [PATCH 319/683] Update error handling in payInsertHandler --- payments-eacq.cjs | 39 +++++++++++---------------------------- 1 file changed, 11 insertions(+), 28 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index ef42291e..c6145ad3 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -910,14 +910,17 @@ async ({ deep, require, data: { newLink: payLink } }) => { }, }); console.log({mpDownPay}); + mpDownPay.error && throw new Error(mpDownPay.error); const PSum = await deep.id("${packageName}", "Sum"); const sum = mpDownPay.data.find(link => link.type_id === PSum).value.value; console.log({sum}); + if(!sum) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); const PPayment = await deep.id("${packageName}", "Payment"); const paymentLink = mpDownPay.data.find(link => link.type_id === PPayment); console.log({paymentLink}); + if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found.") const options = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", @@ -948,16 +951,13 @@ async ({ deep, require, data: { newLink: payLink } }) => { // Taxation: 'usn_income', // } }; - console.log({options}); let initResult = await init(options); console.log({initResult}); if (initResult.error) { const errorMessage = "Could not initialize the order. " + initResult.error; - const { - data: [{ id: error }], - } = await deep.insert({ + const errorInsertQuery = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), from_id: ${tinkoffProviderId}, to_id: payLink.id, @@ -971,13 +971,11 @@ async ({ deep, require, data: { newLink: payLink } }) => { ], }, }); - console.log({ error }); - } + console.log({ errorInsertQuery }); + errorInsertQuery.error && throw new Error(errorInsertQuery.error); + } - console.log('Payment URL:', initResult.response.PaymentURL); - const { - data: [{ id: urlId }], - } = await deep.insert({ + const urlInsertQuery = await deep.insert({ type_id: (await deep.id("${packageName}", "Url")), from_id: ${tinkoffProviderId}, to_id: payLink.id, @@ -991,27 +989,12 @@ async ({ deep, require, data: { newLink: payLink } }) => { ], }, }); - console.log({ urlId }); + console.log({urlInsertQuery}); + urlInsertQuery.error && throw new Error(urlInsertQuery.error); const paymentLinkUpdateQuery = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); console.log({paymentLinkUpdateQuery}); - if (paymentLinkUpdateQuery.error) { - const { - data: [{ id: error }], - } = await deep.insert({ - type_id: (await deep.id("${packageName}", "Error")), - from_id: ${tinkoffProviderId}, - to_id: payLink.id, - string: { data: { value: "Could not add the bank payment id to payment value. " + paymentLinkUpdateQuery.error } }, - in: { - data: [ - { - type_id: await deep.id("${corePackageName}", 'Contain'), - from_id: ${deep.linkId}, - }, - ], - }, - }); + paymentLinkUpdateQuery.error && throw new Error(paymentLinkUpdateQuery.error); return initResult; }; From 4ea7b5df92316bcc9ecd1a075359801b53e48fee Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 30 Aug 2022 14:13:46 +0600 Subject: [PATCH 320/683] Update cancelling payment insert handler --- payments-eacq.cjs | 58 ++++++++++++++++------------------------------- 1 file changed, 20 insertions(+), 38 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index c6145ad3..890369d3 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1059,85 +1059,67 @@ async ({ deep, require, data: { newLink: payLink } }) => { const User = await deep.id("${corePackageName}", "User"); const isCancellingPayment = (cancelledPayment.type_id === cacellingPaymentLink.type_id) && (userLink.typeId === User); if(isCancellingPayment) { - const {error} = await deep.insert({link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value}, {table: "objects"}); - if(error) { - // TODO ??? - } + const insertPaymentValueQuery = await deep.insert({link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value}, {table: "objects"}); + insertPaymentValueQuery.error && throw new Error(insertPaymentValueQuery.error); - const {data: mpUpPayment, error} = await deep.select({ + const {data: mpUpCancelledPayment, error} = await deep.select({ up: { parent_id: cancelledPaymentLink.id, tree_id: ${paymentTreeId} } }); - if(error) { - // TODO ??? - } + console.log({mpUpCancelledPayment}); + console.log({error}); + error && throw new Error(error); const PObject = await deep.id("${packageName}", "Object"); - const objectLinkOfCancelledPayment = mpUpPayment.find(link => link.type_id === PObject); + const objectLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PObject); + (!objectLinkOfCancelledPayment) && throw new Error("The link of type object associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); const {error, data: [objectLink]} = await deep.insert({ type_id: PObject, from_id: cacellingPaymentLink.id, to_id: objectLinkOfCancelledPayment.to_id }); - if(error) { - // TODO ??? - } + error && throw new Error(error); const PSum = await deep.id("${packageName}", "Sum") - const sumLinkOfCancelledPayment = mpUpPayment.find(link => link.type_id === PSum); + const sumLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PSum); + (!sumLinkOfCancelledPayment) && throw new Error("The link of type sum associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); const {error, data: [sumLink]} = await deep.insert({ type_id: PSum, from_id: sumLinkOfCancelledPayment.from_id, to_id: cancellingPaymentLink.id }); - if(error) { - // TODO ??? - } + error && throw new Error(error); const PPay = await deep.id("${packageName}", "Payed"); - const payLinkOfCancelledPayment = mpUpPayment.find(link => link.type_id === PPay); + const payLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PPay); + (!payLinkOfCancelledPayment) && throw new Error("The link of type pay associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); const {error, data: [payLink]} = await deep.insert({ type_id: PPay, from_id: payLinkOfCancelledPayment.from_id, to_id: sumLink.id }); - if(error) { - // TODO ??? - } + error && throw new Error(error); const PUrl = await deep.id("${packageName}", "Url"); - const urlLinkOfCancelledPayment = mpUpPayment.find(link => link.type_id === PUrl); + const urlLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PUrl); + (!urlLinkOfCancelledPayment) && throw new Error("The link of type url associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); const {error, data: [urlLink]} = await deep.insert({ type_id: PUrl, from_id: urlLinkOfCancelledPayment.from_id, to_id: payLink.id, object: { data: { value: urlLinkOfCancelledPayment.value.value }} }); - if(error) { - // TODO ??? - } - - const PPayed = await deep.id("${packageName}", "Payed"); - const payedLinkOfCancelledPayment = mpUpPayment.find(link => link.type_id === PPayed); - const {error, data: [payedLink]} = await deep.insert({ - type_id: PPayed, - from_id: payedLinkOfCancelledPayment.from_id, - to_id: payLink.id - }); - if(error) { - // TODO ??? - } - - const amount = sumLink.value.value; + error && throw new Error(error); const cancelOptions = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", PaymentId: cacellingPaymentLink.value.value.bankPaymentId, - Amount: amount, + Amount: sumLink.value.value, }; console.log({ cancelOptions }); + const cancelResult = await cancel(cancelOptions); console.log({cancelResult}); const {error, response} = cancelResult; From 0dffb6417c4ce46befaf32abc03bfac6377f1e78 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 30 Aug 2022 15:37:20 +0600 Subject: [PATCH 321/683] Cancel if cancelling payment in payInsertHandler --- payments-eacq.cjs | 106 ++++++++++++++++++++++++++-------------------- 1 file changed, 61 insertions(+), 45 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 890369d3..0bb7ff22 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -901,26 +901,78 @@ const f = async () => { const payInsertHandler = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} - const init = ${init.toString()}; - const mpDownPay = await deep.select({ + const {data: mpDownPay, error} = await deep.select({ down: { link_id: { _eq: payLink.id }, tree_id: { _eq: await deep.id("${packageName}", "paymentTree") }, }, }); console.log({mpDownPay}); - mpDownPay.error && throw new Error(mpDownPay.error); + error && throw new Error(error); + + const PPayment = await deep.id("${packageName}", "Payment"); + const paymentLink = mpDownPay.find(link => link.type_id === PPayment); + console.log({paymentLink}); + if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found.") const PSum = await deep.id("${packageName}", "Sum"); - const sum = mpDownPay.data.find(link => link.type_id === PSum).value.value; + const sum = mpDownPay.find(link => link.type_id === PSum).value.value; console.log({sum}); if(!sum) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); - const PPayment = await deep.id("${packageName}", "Payment"); - const paymentLink = mpDownPay.data.find(link => link.type_id === PPayment); - console.log({paymentLink}); - if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found.") + const PUrl = await deep.id("${packageName}", "Url"); + + const {error, data: {paymentFromLink}} = await deep.insert({ + id: paymentLink.from_id + }); + error && throw new Error(error); + + const {error, data: {paymentToLink}} = await deep.insert({ + id: paymentLink.to_id + }); + error && throw new Error(error); + + const isCancellingPay = (paymentFromLink.type_id === paymentLink.type_id) && (paymentToLink.type_id === await deep.id("${corePackageName}", "User")); + + if(isCancellingPay) { + const cancel = ${cancel.toString()}; + + const cancellingPaymentLink = paymentFromLink; + const cancelOptions = { + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + PaymentId: cancellingPaymentLink.value.value.bankPaymentId, + Amount: sumLink.value.value, + }; + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + console.log({cancelResult}); + const {error, response} = cancelResult; + if (error) { + const errorMessage = "Could not cancel the order. " + error; + const {error} = await deep.insert({ + type_id: (await deep.id("${packageName}", "Error")), + from_id: ${tinkoffProviderId}, + to_id: payLink.id, + string: { data: { value: errorMessage } }, + in: { + data: [ + { + type_id: await deep.id("${corePackageName}", 'Contain'), + from_id: ${deep.linkId}, + }, + ], + }, + }); + error && throw new Error(error); + throw new Error(errorMessage); + } + + return cancelResult; + } + + const init = ${init.toString()}; const options = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", @@ -976,7 +1028,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { } const urlInsertQuery = await deep.insert({ - type_id: (await deep.id("${packageName}", "Url")), + type_id: PUrl, from_id: ${tinkoffProviderId}, to_id: payLink.id, string: { data: { value: initResult.response.PaymentURL } }, @@ -1052,8 +1104,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { const cancellingPaymentInsertHandler = ` async ({ deep, require, data: { newLink: cacellingPaymentLink } }) => { ${handlersDependencies} - const cancel = ${cancel.toString()}; - const cancelledPaymentLink = await deep.select(cacellingPaymentLink.from_id); const userLink = await deep.select(cacellingPaymentLink.to_id); const User = await deep.id("${corePackageName}", "User"); @@ -1112,40 +1162,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { object: { data: { value: urlLinkOfCancelledPayment.value.value }} }); error && throw new Error(error); - - const cancelOptions = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentId: cacellingPaymentLink.value.value.bankPaymentId, - Amount: sumLink.value.value, - }; - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - console.log({cancelResult}); - const {error, response} = cancelResult; - if (error) { - const errorMessage = "Could not cancel the order. " + error; - const { - data: [{ id: error }], - } = await deep.insert({ - type_id: (await deep.id("${packageName}", "Error")), - from_id: ${tinkoffProviderId}, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - in: { - data: [ - { - type_id: await deep.id("${corePackageName}", 'Contain'), - from_id: ${deep.linkId}, - }, - ], - }, - }); - console.log({ error }); - throw new Error(errorMessage); - } - - return cancelResult; } }; `; From 03f80856875944507c75cc19dfcd7bccd45375d7 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 30 Aug 2022 15:38:01 +0600 Subject: [PATCH 322/683] Update payment insert handler name --- payments-eacq.cjs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 0bb7ff22..61eaedb4 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1101,7 +1101,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); console.log({ payInsertHandlerId }); - const cancellingPaymentInsertHandler = ` + const paymentInsertHandler = ` async ({ deep, require, data: { newLink: cacellingPaymentLink } }) => { ${handlersDependencies} const cancelledPaymentLink = await deep.select(cacellingPaymentLink.from_id); @@ -1165,10 +1165,10 @@ async ({ deep, require, data: { newLink: payLink } }) => { } }; `; - console.log({ cancellingPaymentInsertHandler }); + console.log({ paymentInsertHandler }); const { - data: [{ id: cancellingPaymentInsertHandlerId }], + data: [{ id: paymentInsertHandlerId }], } = await deep.insert({ type_id: SyncTextFile, in: { @@ -1212,7 +1212,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }, }, }); - console.log({ cancellingPaymentInsertHandlerId }); + console.log({ paymentInsertHandlerId }); const tinkoffNotificationHandler = ` async ( From ebf92811a58b7fc23708f3f672f7d20032b691b9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 30 Aug 2022 15:40:10 +0600 Subject: [PATCH 323/683] Insert pay if cancel was successfull --- payments-eacq.cjs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 61eaedb4..5f69471f 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -969,6 +969,12 @@ async ({ deep, require, data: { newLink: payLink } }) => { throw new Error(errorMessage); } + await deep.insert({ + type_id: await deep.id("${packageName}", "Payed"); + from_id: ${tinkoffProviderId}, + to_id: payLink.id + }); + return cancelResult; } From 42a0066af6ffbab69589ed3ad91d0e56873a9f32 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 30 Aug 2022 16:26:35 +0600 Subject: [PATCH 324/683] Update error handling --- payments-eacq.cjs | 53 ++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 5f69471f..f0102cf9 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1011,11 +1011,11 @@ async ({ deep, require, data: { newLink: payLink } }) => { }; console.log({options}); - let initResult = await init(options); + let {response, error} = await init(options); console.log({initResult}); - if (initResult.error) { - const errorMessage = "Could not initialize the order. " + initResult.error; - const errorInsertQuery = await deep.insert({ + if (error) { + const errorMessage = "Could not initialize the order. " + error; + const {error} = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), from_id: ${tinkoffProviderId}, to_id: payLink.id, @@ -1029,11 +1029,11 @@ async ({ deep, require, data: { newLink: payLink } }) => { ], }, }); - console.log({ errorInsertQuery }); - errorInsertQuery.error && throw new Error(errorInsertQuery.error); + error && throw new Error(error); + throw new Error(errorMessage); } - const urlInsertQuery = await deep.insert({ + const {error} = await deep.insert({ type_id: PUrl, from_id: ${tinkoffProviderId}, to_id: payLink.id, @@ -1048,11 +1048,10 @@ async ({ deep, require, data: { newLink: payLink } }) => { }, }); console.log({urlInsertQuery}); - urlInsertQuery.error && throw new Error(urlInsertQuery.error); + error && throw new Error(error); - const paymentLinkUpdateQuery = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); - console.log({paymentLinkUpdateQuery}); - paymentLinkUpdateQuery.error && throw new Error(paymentLinkUpdateQuery.error); + const {error} = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); + error && throw new Error(error); return initResult; }; @@ -1115,8 +1114,8 @@ async ({ deep, require, data: { newLink: payLink } }) => { const User = await deep.id("${corePackageName}", "User"); const isCancellingPayment = (cancelledPayment.type_id === cacellingPaymentLink.type_id) && (userLink.typeId === User); if(isCancellingPayment) { - const insertPaymentValueQuery = await deep.insert({link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value}, {table: "objects"}); - insertPaymentValueQuery.error && throw new Error(insertPaymentValueQuery.error); + const {error} = await deep.insert({link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value}, {table: "objects"}); + error && throw new Error(error); const {data: mpUpCancelledPayment, error} = await deep.select({ up: { @@ -1252,13 +1251,10 @@ async ( Amount: req.body.Amount, // Receipt: req.body.Receipt, }; - const confirmResult = await confirm(confirmOptions); - console.log({confirmResult}); - if (confirmResult.error) { - const errorMessage = "Could not confirm the pay. " + confirmResult.error; - const { - data: [{ id: error }], - } = await deep.insert({ + const {error} = await confirm(confirmOptions); + if (error) { + const errorMessage = "Could not confirm the pay. " + error; + const {error} = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), from_id: ${tinkoffProviderId}, to_id: payLink.id, @@ -1272,8 +1268,10 @@ async ( ], }, }); + error && throw new Error(error); + throw new Error(errorMessage); } else if (status === 'CONFIRMED') { - const payedInsertQuery = await deep.insert({ + const {error} = await deep.insert({ type_id: (await deep.id("${packageName}", "Payed")), from_id: ${tinkoffProviderId}, to_id: payLink.id, @@ -1286,15 +1284,13 @@ async ( ], }, }); - if (payedInsertQuery.error) { - console.log('payedInsertQuery.error:', payedInsertQuery.error); - const { - data: [{ id: error }], - } = await deep.insert({ + if (error) { + const errorMessage = "Could not insert payed link after confirm. " + error; + const { error } = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), from_id: ${tinkoffProviderId}, to_id: payLink.id, - string: { data: { value: "Could not insert payed link after confirm. " + payedInsertQuery.error } }, + string: { data: { value: errorMessage } }, in: { data: [ { @@ -1304,7 +1300,8 @@ async ( ], }, }); - console.log({payedInsertQuery}); + error && throw new Error(error); + throw new Error(errorMessage); } res.send('ok'); }; From 937ff2e80bcc4dca6866a2336ea696788c3579ca Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 30 Aug 2022 16:29:00 +0600 Subject: [PATCH 325/683] Update error handling --- payments-eacq.cjs | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f0102cf9..ed549f93 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -909,7 +909,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }, }); console.log({mpDownPay}); - error && throw new Error(error); + if(error) { throw new Error(error); } const PPayment = await deep.id("${packageName}", "Payment"); const paymentLink = mpDownPay.find(link => link.type_id === PPayment); @@ -926,12 +926,12 @@ async ({ deep, require, data: { newLink: payLink } }) => { const {error, data: {paymentFromLink}} = await deep.insert({ id: paymentLink.from_id }); - error && throw new Error(error); + if(error) { throw new Error(error); } const {error, data: {paymentToLink}} = await deep.insert({ id: paymentLink.to_id }); - error && throw new Error(error); + if(error) { throw new Error(error); } const isCancellingPay = (paymentFromLink.type_id === paymentLink.type_id) && (paymentToLink.type_id === await deep.id("${corePackageName}", "User")); @@ -965,7 +965,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { ], }, }); - error && throw new Error(error); + if(error) { throw new Error(error); } throw new Error(errorMessage); } @@ -1029,7 +1029,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { ], }, }); - error && throw new Error(error); + if(error) { throw new Error(error); } throw new Error(errorMessage); } @@ -1048,10 +1048,10 @@ async ({ deep, require, data: { newLink: payLink } }) => { }, }); console.log({urlInsertQuery}); - error && throw new Error(error); + if(error) { throw new Error(error); } const {error} = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); - error && throw new Error(error); + if(error) { throw new Error(error); } return initResult; }; @@ -1115,7 +1115,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const isCancellingPayment = (cancelledPayment.type_id === cacellingPaymentLink.type_id) && (userLink.typeId === User); if(isCancellingPayment) { const {error} = await deep.insert({link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value}, {table: "objects"}); - error && throw new Error(error); + if(error) { throw new Error(error); } const {data: mpUpCancelledPayment, error} = await deep.select({ up: { @@ -1125,48 +1125,48 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); console.log({mpUpCancelledPayment}); console.log({error}); - error && throw new Error(error); + if(error) { throw new Error(error); } const PObject = await deep.id("${packageName}", "Object"); const objectLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PObject); - (!objectLinkOfCancelledPayment) && throw new Error("The link of type object associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); + if (!objectLinkOfCancelledPayment) { throw new Error("The link of type object associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); } const {error, data: [objectLink]} = await deep.insert({ type_id: PObject, from_id: cacellingPaymentLink.id, to_id: objectLinkOfCancelledPayment.to_id }); - error && throw new Error(error); + if(error) { throw new Error(error); } const PSum = await deep.id("${packageName}", "Sum") const sumLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PSum); - (!sumLinkOfCancelledPayment) && throw new Error("The link of type sum associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); + if (!sumLinkOfCancelledPayment) { throw new Error("The link of type sum associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); } const {error, data: [sumLink]} = await deep.insert({ type_id: PSum, from_id: sumLinkOfCancelledPayment.from_id, to_id: cancellingPaymentLink.id }); - error && throw new Error(error); + if(error) { throw new Error(error); } const PPay = await deep.id("${packageName}", "Payed"); const payLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PPay); - (!payLinkOfCancelledPayment) && throw new Error("The link of type pay associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); + if (!payLinkOfCancelledPayment) { throw new Error("The link of type pay associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); } const {error, data: [payLink]} = await deep.insert({ type_id: PPay, from_id: payLinkOfCancelledPayment.from_id, to_id: sumLink.id }); - error && throw new Error(error); + if(error) { throw new Error(error); } const PUrl = await deep.id("${packageName}", "Url"); const urlLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PUrl); - (!urlLinkOfCancelledPayment) && throw new Error("The link of type url associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); + if (!urlLinkOfCancelledPayment) { throw new Error("The link of type url associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); } const {error, data: [urlLink]} = await deep.insert({ type_id: PUrl, from_id: urlLinkOfCancelledPayment.from_id, to_id: payLink.id, object: { data: { value: urlLinkOfCancelledPayment.value.value }} }); - error && throw new Error(error); + if(error) { throw new Error(error); } } }; `; @@ -1268,7 +1268,7 @@ async ( ], }, }); - error && throw new Error(error); + if(error) { throw new Error(error); } throw new Error(errorMessage); } else if (status === 'CONFIRMED') { const {error} = await deep.insert({ @@ -1300,7 +1300,7 @@ async ( ], }, }); - error && throw new Error(error); + if(error) { throw new Error(error); } throw new Error(errorMessage); } res.send('ok'); From f09879dbcd5790a0cb38a35e859d1198ad6c5322 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 30 Aug 2022 17:33:37 +0600 Subject: [PATCH 326/683] Update handlers --- payments-eacq.cjs | 145 ++++++++++++++++++++++------------------------ 1 file changed, 68 insertions(+), 77 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index ed549f93..356ffda9 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -902,43 +902,39 @@ const f = async () => { async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} - const {data: mpDownPay, error} = await deep.select({ + const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ down: { link_id: { _eq: payLink.id }, tree_id: { _eq: await deep.id("${packageName}", "paymentTree") }, }, }); console.log({mpDownPay}); - if(error) { throw new Error(error); } + if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError); } const PPayment = await deep.id("${packageName}", "Payment"); - const paymentLink = mpDownPay.find(link => link.type_id === PPayment); + const paymentLink = mpDownPayQuery.data.find(link => link.type_id === PPayment); console.log({paymentLink}); if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found.") const PSum = await deep.id("${packageName}", "Sum"); - const sum = mpDownPay.find(link => link.type_id === PSum).value.value; + const sum = mpDownPayQuery.data.find(link => link.type_id === PSum).value.value; console.log({sum}); if(!sum) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); const PUrl = await deep.id("${packageName}", "Url"); - const {error, data: {paymentFromLink}} = await deep.insert({ - id: paymentLink.from_id - }); - if(error) { throw new Error(error); } + const {data: [fromLinkOfPayment], error: fromLinkOfPaymentSelectQueryError} = await deep.select(paymentLink.from_id); + if(fromLinkOfPaymentSelectQueryError) { throw new Error(fromLinkOfPaymentSelectQueryError); } - const {error, data: {paymentToLink}} = await deep.insert({ - id: paymentLink.to_id - }); - if(error) { throw new Error(error); } + const {data: [toLinkOfPayment], error: toLinkOfPaymentSelectQueryError} = await deep.select(paymentLink.to_id); + if(toLinkOfPaymentSelectQueryError) { throw new Error(toLinkOfPaymentSelectQueryError); } - const isCancellingPay = (paymentFromLink.type_id === paymentLink.type_id) && (paymentToLink.type_id === await deep.id("${corePackageName}", "User")); + const isCancellingPay = (fromLinkOfPayment.type_id === paymentLink.type_id) && (toLinkOfPayment.type_id === await deep.id("${corePackageName}", "User")); if(isCancellingPay) { const cancel = ${cancel.toString()}; - const cancellingPaymentLink = paymentFromLink; + const cancellingPaymentLink = fromLinkOfPayment; const cancelOptions = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", PaymentId: cancellingPaymentLink.value.value.bankPaymentId, @@ -948,10 +944,9 @@ async ({ deep, require, data: { newLink: payLink } }) => { const cancelResult = await cancel(cancelOptions); console.log({cancelResult}); - const {error, response} = cancelResult; - if (error) { - const errorMessage = "Could not cancel the order. " + error; - const {error} = await deep.insert({ + if (cancelResult.error) { + const errorMessage = "Could not cancel the order. " + cancelResult.error; + const {error: errorLinkInsertQueryError} = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), from_id: ${tinkoffProviderId}, to_id: payLink.id, @@ -965,15 +960,16 @@ async ({ deep, require, data: { newLink: payLink } }) => { ], }, }); - if(error) { throw new Error(error); } + if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError); } throw new Error(errorMessage); } - await deep.insert({ + const {error: payedLinkInsertQueryError} = await deep.insert({ type_id: await deep.id("${packageName}", "Payed"); from_id: ${tinkoffProviderId}, to_id: payLink.id }); + if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError); } return cancelResult; } @@ -1011,11 +1007,11 @@ async ({ deep, require, data: { newLink: payLink } }) => { }; console.log({options}); - let {response, error} = await init(options); + let initResult = await init(options); console.log({initResult}); - if (error) { - const errorMessage = "Could not initialize the order. " + error; - const {error} = await deep.insert({ + if (initResult.error) { + const errorMessage = "Could not initialize the order. " + initResult.error; + const {error: errorLinkInsertQueryError} = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), from_id: ${tinkoffProviderId}, to_id: payLink.id, @@ -1029,11 +1025,11 @@ async ({ deep, require, data: { newLink: payLink } }) => { ], }, }); - if(error) { throw new Error(error); } + if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError); } throw new Error(errorMessage); } - const {error} = await deep.insert({ + const {error: urlLinkInsertQueryError} = await deep.insert({ type_id: PUrl, from_id: ${tinkoffProviderId}, to_id: payLink.id, @@ -1047,11 +1043,10 @@ async ({ deep, require, data: { newLink: payLink } }) => { ], }, }); - console.log({urlInsertQuery}); - if(error) { throw new Error(error); } + if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError); } - const {error} = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); - if(error) { throw new Error(error); } + const {error: paymentLinkValueUpdateQueryError} = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); + if(paymentLinkValueUpdateQueryError) { throw new Error(paymentLinkValueUpdateQueryError); } return initResult; }; @@ -1107,66 +1102,72 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({ payInsertHandlerId }); const paymentInsertHandler = ` - async ({ deep, require, data: { newLink: cacellingPaymentLink } }) => { + async ({ deep, require, data: { newLink: cancellingPaymentLink } }) => { ${handlersDependencies} - const cancelledPaymentLink = await deep.select(cacellingPaymentLink.from_id); - const userLink = await deep.select(cacellingPaymentLink.to_id); + const {data: [fromLinkOfPayment], error: fromLinkOfPaymentSelectQueryError} = await deep.select(cancellingPaymentLink.from_id); + if(fromLinkOfPaymentSelectQueryError) {throw new Error(fromLinkOfPaymentSelectQueryError)}; + + const {data: [toLinkOfPayment], error: toLinkOfPaymentSelectQueryError} = await deep.select(cancellingPaymentLink.to_id); + if(toLinkOfPaymentSelectQueryError) {throw new Error(toLinkOfPaymentSelectQueryError)}; + const {data: [toLinkOfPayment]} = toLinkOfPaymentQuery; + const User = await deep.id("${corePackageName}", "User"); - const isCancellingPayment = (cancelledPayment.type_id === cacellingPaymentLink.type_id) && (userLink.typeId === User); + const isCancellingPayment = (fromLinkOfPayment.type_id === cancellingPaymentLink.type_id) && (toLinkOfPayment.type_id === User); if(isCancellingPayment) { - const {error} = await deep.insert({link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value}, {table: "objects"}); - if(error) { throw new Error(error); } + const cancelledPaymentLink = fromLinkOfPayment; + const userLink = toLinkOfPayment; - const {data: mpUpCancelledPayment, error} = await deep.select({ + const {error: cancellingPaymentLinkValueInsertQueryError} = await deep.insert({link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value}, {table: "objects"}); + if(cancellingPaymentLinkValueInsertQueryError) { throw new Error(cancellingPaymentLinkValueInsertQueryError); } + + const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentQueryError} = await deep.select({ up: { parent_id: cancelledPaymentLink.id, tree_id: ${paymentTreeId} } }); - console.log({mpUpCancelledPayment}); - console.log({error}); - if(error) { throw new Error(error); } + if(mpUpCancelledPaymentQueryError) { throw new Error(mpUpCancelledPaymentQueryError); } const PObject = await deep.id("${packageName}", "Object"); const objectLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PObject); if (!objectLinkOfCancelledPayment) { throw new Error("The link of type object associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); } - const {error, data: [objectLink]} = await deep.insert({ + const {data: [objectLink], error: objectLinkInsertQueryError} = await deep.insert({ type_id: PObject, - from_id: cacellingPaymentLink.id, + from_id: cancellingPaymentLink.id, to_id: objectLinkOfCancelledPayment.to_id }); - if(error) { throw new Error(error); } + if(objectLinkInsertQueryError) { throw new Error(objectLinkInsertQueryError); } const PSum = await deep.id("${packageName}", "Sum") const sumLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PSum); if (!sumLinkOfCancelledPayment) { throw new Error("The link of type sum associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); } - const {error, data: [sumLink]} = await deep.insert({ + const {data: [sumLink], error: sumLinkInsertQueryError} = await deep.insert({ type_id: PSum, from_id: sumLinkOfCancelledPayment.from_id, to_id: cancellingPaymentLink.id }); - if(error) { throw new Error(error); } + if(sumLinkInsertQueryError) { throw new Error(sumLinkInsertQueryError); } const PPay = await deep.id("${packageName}", "Payed"); const payLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PPay); if (!payLinkOfCancelledPayment) { throw new Error("The link of type pay associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); } - const {error, data: [payLink]} = await deep.insert({ + const {data: [payLink], error: payLinkInsertQueryError} = await deep.insert({ type_id: PPay, from_id: payLinkOfCancelledPayment.from_id, to_id: sumLink.id }); - if(error) { throw new Error(error); } - + if(payLinkInsertQueryError) { throw new Error(payLinkInsertQueryError); } + const PUrl = await deep.id("${packageName}", "Url"); const urlLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PUrl); if (!urlLinkOfCancelledPayment) { throw new Error("The link of type url associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); } - const {error, data: [urlLink]} = await deep.insert({ + const {data: [urlLink], error: urlLinkInsertQueryError} = await deep.insert({ type_id: PUrl, from_id: urlLinkOfCancelledPayment.from_id, to_id: payLink.id, object: { data: { value: urlLinkOfCancelledPayment.value.value }} }); - if(error) { throw new Error(error); } + if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError); } } }; `; @@ -1229,12 +1230,11 @@ async ( ${handlersDependencies} const reqBody = req.body; console.log({reqBody}); - const status = req.body.Status; - console.log({status}); - const paymentLink = deep.select({ + const {data: [paymentLink], error: paymentLinkSelectQueryError} = deep.select({ object: {value: {_contains: req.body.OrderId}} }); + if(paymentLinkSelectQueryError) { throw new Error(paymentLinkSelectQueryError); } const payLink = deep.select({ up: { @@ -1245,16 +1245,20 @@ async ( if (status === 'AUTHORIZED') { const confirm = ${confirm.toString()}; + const confirmOptions = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", PaymentId: req.body.PaymentId, Amount: req.body.Amount, // Receipt: req.body.Receipt, }; - const {error} = await confirm(confirmOptions); - if (error) { - const errorMessage = "Could not confirm the pay. " + error; - const {error} = await deep.insert({ + + const confirmResult = await confirm(confirmOptions); + console.log({confirmResult}); + + if (confirmResult.error) { + const errorMessage = "Could not confirm the pay. " + confirmResult.error; + const {errorLinkInsertError} = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), from_id: ${tinkoffProviderId}, to_id: payLink.id, @@ -1268,10 +1272,13 @@ async ( ], }, }); - if(error) { throw new Error(error); } + if(errorLinkInsertError) { throw new Error(errorLinkInsertError); } throw new Error(errorMessage); + } + + return confirmResult; } else if (status === 'CONFIRMED') { - const {error} = await deep.insert({ + const {error: payedLinkInsertError, data: [payedLink]} = await deep.insert({ type_id: (await deep.id("${packageName}", "Payed")), from_id: ${tinkoffProviderId}, to_id: payLink.id, @@ -1284,24 +1291,8 @@ async ( ], }, }); - if (error) { - const errorMessage = "Could not insert payed link after confirm. " + error; - const { error } = await deep.insert({ - type_id: (await deep.id("${packageName}", "Error")), - from_id: ${tinkoffProviderId}, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - in: { - data: [ - { - type_id: await deep.id("${corePackageName}", 'Contain'), - from_id: ${deep.linkId}, - }, - ], - }, - }); - if(error) { throw new Error(error); } - throw new Error(errorMessage); + if(payedLinkInsertError) { throw new Error(payedLinkInsertError); } + return payedLink; } res.send('ok'); }; From 51e8d9c28a22310c5ff7a4dd6644493f8343a0ec Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 31 Aug 2022 11:55:31 +0000 Subject: [PATCH 327/683] Update pay insert handler --- payments-eacq.cjs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 356ffda9..bfb3b787 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -912,25 +912,26 @@ async ({ deep, require, data: { newLink: payLink } }) => { if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError); } const PPayment = await deep.id("${packageName}", "Payment"); - const paymentLink = mpDownPayQuery.data.find(link => link.type_id === PPayment); + const paymentLink = mpDownPay.find(link => link.type_id === PPayment); console.log({paymentLink}); if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found.") const PSum = await deep.id("${packageName}", "Sum"); - const sum = mpDownPayQuery.data.find(link => link.type_id === PSum).value.value; + const sum = mpDownPay.find(link => link.type_id === PSum).value.value; console.log({sum}); if(!sum) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); - const PUrl = await deep.id("${packageName}", "Url"); - - const {data: [fromLinkOfPayment], error: fromLinkOfPaymentSelectQueryError} = await deep.select(paymentLink.from_id); - if(fromLinkOfPaymentSelectQueryError) { throw new Error(fromLinkOfPaymentSelectQueryError); } - - const {data: [toLinkOfPayment], error: toLinkOfPaymentSelectQueryError} = await deep.select(paymentLink.to_id); - if(toLinkOfPaymentSelectQueryError) { throw new Error(toLinkOfPaymentSelectQueryError); } - - const isCancellingPay = (fromLinkOfPayment.type_id === paymentLink.type_id) && (toLinkOfPayment.type_id === await deep.id("${corePackageName}", "User")); + const PUrl = await deep.id("@deep-foundation/payments-eacq", "Url"); + const fromLinkOfPaymentQuery = await deep.select({ + id: paymentLink.from_id + }); + const toLinkOfPaymentQuery = await deep.select({ + id: paymentLink.to_id + }); + if(fromLinkOfPaymentQuery.error) { throw new Error(fromLinkOfPaymentQuery.error); } + if(toLinkOfPaymentQuery.error) { throw new Error(toLinkOfPaymentQuery.error); } + const isCancellingPay = fromLinkOfPaymentQuery.data && toLinkOfPaymentQuery.data && (fromLinkOfPaymentQuery.data[0].type_id === paymentLink.type_id) && (toLinkOfPaymentQuery.data[0].type_id === await deep.id("@deep-foundation/core", "User")); if(isCancellingPay) { const cancel = ${cancel.toString()}; @@ -965,7 +966,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { } const {error: payedLinkInsertQueryError} = await deep.insert({ - type_id: await deep.id("${packageName}", "Payed"); + type_id: await deep.id("${packageName}", "Payed"), from_id: ${tinkoffProviderId}, to_id: payLink.id }); @@ -1049,7 +1050,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { if(paymentLinkValueUpdateQueryError) { throw new Error(paymentLinkValueUpdateQueryError); } return initResult; - }; }; `; console.log({ payInsertHandler }); From 742cb6922385b4b85587cda89c866c033695aa8a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 31 Aug 2022 11:57:15 +0000 Subject: [PATCH 328/683] Udpate error handling --- payments-eacq.cjs | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index bfb3b787..98e46bdd 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -909,7 +909,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }, }); console.log({mpDownPay}); - if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError); } + if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } const PPayment = await deep.id("${packageName}", "Payment"); const paymentLink = mpDownPay.find(link => link.type_id === PPayment); @@ -929,8 +929,8 @@ async ({ deep, require, data: { newLink: payLink } }) => { const toLinkOfPaymentQuery = await deep.select({ id: paymentLink.to_id }); - if(fromLinkOfPaymentQuery.error) { throw new Error(fromLinkOfPaymentQuery.error); } - if(toLinkOfPaymentQuery.error) { throw new Error(toLinkOfPaymentQuery.error); } + if(fromLinkOfPaymentQuery.error) { throw new Error(fromLinkOfPaymentQuery.error.message); } + if(toLinkOfPaymentQuery.error) { throw new Error(toLinkOfPaymentQuery.error.message); } const isCancellingPay = fromLinkOfPaymentQuery.data && toLinkOfPaymentQuery.data && (fromLinkOfPaymentQuery.data[0].type_id === paymentLink.type_id) && (toLinkOfPaymentQuery.data[0].type_id === await deep.id("@deep-foundation/core", "User")); if(isCancellingPay) { const cancel = ${cancel.toString()}; @@ -961,7 +961,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { ], }, }); - if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError); } + if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } throw new Error(errorMessage); } @@ -970,7 +970,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { from_id: ${tinkoffProviderId}, to_id: payLink.id }); - if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError); } + if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError.message); } return cancelResult; } @@ -1026,7 +1026,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { ], }, }); - if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError); } + if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } throw new Error(errorMessage); } @@ -1044,10 +1044,10 @@ async ({ deep, require, data: { newLink: payLink } }) => { ], }, }); - if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError); } + if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } const {error: paymentLinkValueUpdateQueryError} = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); - if(paymentLinkValueUpdateQueryError) { throw new Error(paymentLinkValueUpdateQueryError); } + if(paymentLinkValueUpdateQueryError) { throw new Error(paymentLinkValueUpdateQueryError.message); } return initResult; }; @@ -1105,10 +1105,10 @@ async ({ deep, require, data: { newLink: payLink } }) => { async ({ deep, require, data: { newLink: cancellingPaymentLink } }) => { ${handlersDependencies} const {data: [fromLinkOfPayment], error: fromLinkOfPaymentSelectQueryError} = await deep.select(cancellingPaymentLink.from_id); - if(fromLinkOfPaymentSelectQueryError) {throw new Error(fromLinkOfPaymentSelectQueryError)}; + if(fromLinkOfPaymentSelectQueryError) {throw new Error(fromLinkOfPaymentSelectQueryError.message)}; const {data: [toLinkOfPayment], error: toLinkOfPaymentSelectQueryError} = await deep.select(cancellingPaymentLink.to_id); - if(toLinkOfPaymentSelectQueryError) {throw new Error(toLinkOfPaymentSelectQueryError)}; + if(toLinkOfPaymentSelectQueryError) {throw new Error(toLinkOfPaymentSelectQueryError.message)}; const {data: [toLinkOfPayment]} = toLinkOfPaymentQuery; const User = await deep.id("${corePackageName}", "User"); @@ -1118,7 +1118,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const userLink = toLinkOfPayment; const {error: cancellingPaymentLinkValueInsertQueryError} = await deep.insert({link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value}, {table: "objects"}); - if(cancellingPaymentLinkValueInsertQueryError) { throw new Error(cancellingPaymentLinkValueInsertQueryError); } + if(cancellingPaymentLinkValueInsertQueryError) { throw new Error(cancellingPaymentLinkValueInsertQueryError.message); } const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentQueryError} = await deep.select({ up: { @@ -1126,7 +1126,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { tree_id: ${paymentTreeId} } }); - if(mpUpCancelledPaymentQueryError) { throw new Error(mpUpCancelledPaymentQueryError); } + if(mpUpCancelledPaymentQueryError) { throw new Error(mpUpCancelledPaymentQueryError.message); } const PObject = await deep.id("${packageName}", "Object"); const objectLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PObject); @@ -1136,7 +1136,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { from_id: cancellingPaymentLink.id, to_id: objectLinkOfCancelledPayment.to_id }); - if(objectLinkInsertQueryError) { throw new Error(objectLinkInsertQueryError); } + if(objectLinkInsertQueryError) { throw new Error(objectLinkInsertQueryError.message); } const PSum = await deep.id("${packageName}", "Sum") const sumLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PSum); @@ -1146,7 +1146,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { from_id: sumLinkOfCancelledPayment.from_id, to_id: cancellingPaymentLink.id }); - if(sumLinkInsertQueryError) { throw new Error(sumLinkInsertQueryError); } + if(sumLinkInsertQueryError) { throw new Error(sumLinkInsertQueryError.message); } const PPay = await deep.id("${packageName}", "Payed"); const payLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PPay); @@ -1156,7 +1156,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { from_id: payLinkOfCancelledPayment.from_id, to_id: sumLink.id }); - if(payLinkInsertQueryError) { throw new Error(payLinkInsertQueryError); } + if(payLinkInsertQueryError) { throw new Error(payLinkInsertQueryError.message); } const PUrl = await deep.id("${packageName}", "Url"); const urlLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PUrl); @@ -1167,7 +1167,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { to_id: payLink.id, object: { data: { value: urlLinkOfCancelledPayment.value.value }} }); - if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError); } + if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } } }; `; @@ -1234,7 +1234,7 @@ async ( const {data: [paymentLink], error: paymentLinkSelectQueryError} = deep.select({ object: {value: {_contains: req.body.OrderId}} }); - if(paymentLinkSelectQueryError) { throw new Error(paymentLinkSelectQueryError); } + if(paymentLinkSelectQueryError) { throw new Error(paymentLinkSelectQueryError.message); } const payLink = deep.select({ up: { From 7ad864e7674c222372ec8a3f71c6b11560438ae5 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 31 Aug 2022 12:35:30 +0000 Subject: [PATCH 329/683] Update isCancellingPay condition --- payments-eacq.cjs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 98e46bdd..9e35f4bf 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -931,7 +931,8 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); if(fromLinkOfPaymentQuery.error) { throw new Error(fromLinkOfPaymentQuery.error.message); } if(toLinkOfPaymentQuery.error) { throw new Error(toLinkOfPaymentQuery.error.message); } - const isCancellingPay = fromLinkOfPaymentQuery.data && toLinkOfPaymentQuery.data && (fromLinkOfPaymentQuery.data[0].type_id === paymentLink.type_id) && (toLinkOfPaymentQuery.data[0].type_id === await deep.id("@deep-foundation/core", "User")); + console.log(fromLinkOfPaymentQuery.data); + const isCancellingPay = fromLinkOfPaymentQuery.data.length > 0 && toLinkOfPaymentQuery.data.length > 0 && (fromLinkOfPaymentQuery.data[0].type_id === paymentLink.type_id) && (toLinkOfPaymentQuery.data[0].type_id === await deep.id("@deep-foundation/core", "User")); if(isCancellingPay) { const cancel = ${cancel.toString()}; From ebc77ebbedb00d4854d49e3331a7c7f5f88d9c52 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 31 Aug 2022 12:35:39 +0000 Subject: [PATCH 330/683] Add await --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 9e35f4bf..205693fd 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1232,7 +1232,7 @@ async ( const reqBody = req.body; console.log({reqBody}); - const {data: [paymentLink], error: paymentLinkSelectQueryError} = deep.select({ + const {data: [paymentLink], error: paymentLinkSelectQueryError} = await deep.select({ object: {value: {_contains: req.body.OrderId}} }); if(paymentLinkSelectQueryError) { throw new Error(paymentLinkSelectQueryError.message); } From 615b26a16052f2e683104b33dac9581ef0e82d2a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 31 Aug 2022 12:35:52 +0000 Subject: [PATCH 331/683] Add contain for notification handler sync text file --- payments-eacq.cjs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 205693fd..da5cdb87 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1363,6 +1363,18 @@ async ( value: tinkoffNotificationHandler, }, }, + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, }, }, }, From 5be4db63ad82442c2874aee0985379d66a49cb95 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 31 Aug 2022 12:36:10 +0000 Subject: [PATCH 332/683] Delete test links after every test and temporarily comment some tests --- payments-eacq.cjs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index da5cdb87..324a8281 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2261,12 +2261,18 @@ async ( console.log('testGetCardList-end'); }; - await testInit(); - await testFinishAuthorize(); + // await testInit(); + // await deleteTestLinks(); + // await testFinishAuthorize(); + // await deleteTestLinks(); await testConfirm(); + await deleteTestLinks(); await testCancel(); + await deleteTestLinks(); await testGetState(); + await deleteTestLinks(); await testGetCardList(); + await deleteTestLinks(); }; // await callRealizationTests(); From c22e19c61f5894b78ae46f0773af6e894401da5e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 31 Aug 2022 15:45:00 +0000 Subject: [PATCH 333/683] Update notification handler --- payments-eacq.cjs | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 324a8281..e197b56e 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1233,18 +1233,27 @@ async ( console.log({reqBody}); const {data: [paymentLink], error: paymentLinkSelectQueryError} = await deep.select({ - object: {value: {_contains: req.body.OrderId}} + object: {value: {_contains: {orderId: req.body.OrderId}}} }); + console.log({paymentLink}); if(paymentLinkSelectQueryError) { throw new Error(paymentLinkSelectQueryError.message); } + if(!paymentLink) { throw new Error("The payment link associated with the order id " + req.body.OrderId + " is not found."); } - const payLink = deep.select({ + const {data: mpUpPaymentLink, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ up: { - parent_id: paymentLink.id, - tree_id: ${paymentTreeId} + parent_id: { _eq: paymentLink.id }, + tree_id: { _eq: ${paymentTreeId} } } }); + console.log({mpUpPaymentLink}); + if(mpUpPaymentLinkSelectQueryError) { throw new Error(mpUpPaymentLinkSelectQueryError.message); } + + const PPay = await deep.id("${packageName}", "Pay"); + const payLink = mpUpPaymentLink.find(link => link.type_id === PPay); + console.log({payLink}); + if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } - if (status === 'AUTHORIZED') { + if (reqBody.status === 'AUTHORIZED') { const confirm = ${confirm.toString()}; const confirmOptions = { @@ -1253,6 +1262,7 @@ async ( Amount: req.body.Amount, // Receipt: req.body.Receipt, }; + console.log({confirmOptions}); const confirmResult = await confirm(confirmOptions); console.log({confirmResult}); @@ -1278,7 +1288,7 @@ async ( } return confirmResult; - } else if (status === 'CONFIRMED') { + } else if (reqBody.status === 'CONFIRMED') { const {error: payedLinkInsertError, data: [payedLink]} = await deep.insert({ type_id: (await deep.id("${packageName}", "Payed")), from_id: ${tinkoffProviderId}, From 8caaf11b8094ac5242d6de0101dc706e96c60097 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 31 Aug 2022 16:19:53 +0000 Subject: [PATCH 334/683] Fix notification handler, add todo for cancel tests --- payments-eacq.cjs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index e197b56e..58f39b25 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1253,7 +1253,8 @@ async ( console.log({payLink}); if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } - if (reqBody.status === 'AUTHORIZED') { + + if (req.body.Status === 'AUTHORIZED') { const confirm = ${confirm.toString()}; const confirmOptions = { @@ -1288,7 +1289,7 @@ async ( } return confirmResult; - } else if (reqBody.status === 'CONFIRMED') { + } else if (req.body.Status === 'CONFIRMED') { const {error: payedLinkInsertError, data: [payedLink]} = await deep.insert({ type_id: (await deep.id("${packageName}", "Payed")), from_id: ${tinkoffProviderId}, @@ -1457,7 +1458,7 @@ async ( console.log('deleteTestLinks-start'); const { data: testLinks } = await deep.select({ type_id: { - _in: { PObject, PSum, PPay, PUrl, PPayed, PError, PCancelled }, + _in: [ PObject, PSum, PPay, PUrl, PPayed, PError, PCancelled ], }, }); for (let i = 0; i < testLinks.length; i++) { @@ -1703,15 +1704,16 @@ async ( const testCancelAfterPayAfterConfirmFullPrice = async () => { console.log('testCancelAfterPayAfterConfirmFullPrice-start'); const confirmResult = await testConfirm(); + console.log({confirmResult}); const bankPaymentId = confirmResult.response.PaymentId; + console.log({bankPaymentId}); const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: PRICE, }; - console.log({ cancelOptions }); const cancelResult = await cancel(cancelOptions); @@ -2114,12 +2116,14 @@ async ( } = await deep.select({ type_id: PPayment, }); + console.log({paymentLink}); const { data: [payLink], } = await deep.select({ type_id: PPay, }); + console.log({payLink}); const { data: [payedLink], @@ -2127,7 +2131,9 @@ async ( type_id: PPayed, to_id: payLink.id, }); + console.log({payedLink}); + // TODO Remove this here and in other cancel tests const { data: [cancelledLink], } = await deep.insert({ @@ -2136,6 +2142,7 @@ async ( to_id: payedLink.id, number: { data: { value: PRICE } }, }); + console.log({cancelledLink}); await deep.insert({ type_id: PPayment, @@ -2275,8 +2282,8 @@ async ( // await deleteTestLinks(); // await testFinishAuthorize(); // await deleteTestLinks(); - await testConfirm(); - await deleteTestLinks(); + // await testConfirm(); + // await deleteTestLinks(); await testCancel(); await deleteTestLinks(); await testGetState(); From 5c10df013a95e517ed2b031eb2a660d8aef70e5b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 1 Sep 2022 03:26:59 +0000 Subject: [PATCH 335/683] Add cancel tests draft --- payments-eacq.cjs | 44 ++++++++++++-------------------------------- 1 file changed, 12 insertions(+), 32 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 58f39b25..2e7a0856 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2118,46 +2118,26 @@ async ( }); console.log({paymentLink}); - const { - data: [payLink], - } = await deep.select({ - type_id: PPay, - }); - console.log({payLink}); - - const { - data: [payedLink], - } = await deep.select({ - type_id: PPayed, - to_id: payLink.id, - }); - console.log({payedLink}); - - // TODO Remove this here and in other cancel tests - const { - data: [cancelledLink], - } = await deep.insert({ - type_id: PCancelled, - from_id: tinkoffProviderId, - to_id: payedLink.id, - number: { data: { value: PRICE } }, - }); - console.log({cancelledLink}); - - await deep.insert({ + const {data: [cancellingPaymentLink], error: cancellingPaymentLinkInsertQueryError} = await deep.insert({ type_id: PPayment, from_id: paymentLink.id, - to_id: customerKey + to_id: deep.linkId }); + if(cancellingPaymentLinkInsertQueryError) {throw new Error(cancellingPaymentLinkInsertQueryError); } await sleep(5000); - const { data: cancelledErrors } = await deep.select({ - type_id: PError, - to_id: cancelledLink.id, + const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ + up: { + parent_id: {_eq: cancellingPaymentLink.id}, + tree_id: paymentTreeId + } }); + if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } + const PPayed = await deep.id(packageName, "Payd"); + const payedLink = mpUpCancelledPayment.data.find(link => link.type_id === PPayed); + expect(payedLink).to.equal(true); - expect(cancelledErrors.length).to.equal(0); console.log('testCancelAfterPayAfterConfirmFullPrice-end'); }; From 3449eb8de62d81d1aee602a30bf839637dbe50f6 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 1 Sep 2022 03:33:25 +0000 Subject: [PATCH 336/683] Add test cancel draft --- payments-eacq.cjs | 49 +++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 2e7a0856..542c1ff3 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2125,7 +2125,21 @@ async ( }); if(cancellingPaymentLinkInsertQueryError) {throw new Error(cancellingPaymentLinkInsertQueryError); } - await sleep(5000); + await sleep(3000); + + const { + data: [sumLink] + } = await deep.select({ + type_id: PSum + }); + + await deep.insert({ + type_id: PPay, + from_id: deep.linkId, + to_id: sumLink.id + }); + + await sleep(3000); const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ up: { @@ -2146,37 +2160,26 @@ async ( await testConfirm(); const { - data: [payLink], + data: [paymentLink], } = await deep.select({ - type_id: PPay, + type_id: PPayment, }); const { - data: [payedLink], + data: [sumLink] } = await deep.select({ - type_id: PPayed, - to_id: payLink.id, + type_id: PSum }); - for (let i = 0; i < 2; i++) { - const { - data: [cancelledLink], - } = await deep.insert({ - type_id: PCancelled, - from_id: tinkoffProviderId, - to_id: payedLink.id, - number: { data: { value: Math.floor(PRICE / 3) } }, - }); - - await sleep(5000); + await deep.update({link_id: sumLink.id, value: parseInt(sumLink.value.value) / 3}, {table: "strings"}) - const { data: cancelledErrors } = await deep.select({ - type_id: PError, - to_id: cancelledLink.id, - }); + await deep.insert({ + type_id: PPay, + from_id: deep.linkId, + to_id: sumLink.id + }); - expect(cancelledErrors.length).to.equal(0); - } + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); }; From 86cc65571b9dfecf90edbe9ac6b7865416151341 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 1 Sep 2022 11:34:23 +0000 Subject: [PATCH 337/683] Do not use the same customer id for all cancel tests --- payments-eacq.cjs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 542c1ff3..826118b4 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2105,9 +2105,9 @@ async ( console.log('testConfirm-end'); }; - const testCancel = async ({customerKey} = {customerKey: uniqid()}) => { + const testCancel = async () => { console.log('testCancel-start'); - const testCancelAfterPayAfterConfirmFullPrice = async () => { + const testCancelAfterPayAfterConfirmFullPrice = async ({customerKey} = {customerKey: uniqid()}) => { console.log('testCancelAfterPayAfterConfirmFullPrice-start'); await testConfirm({customerKey}); @@ -2155,7 +2155,7 @@ async ( console.log('testCancelAfterPayAfterConfirmFullPrice-end'); }; - const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { + const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({customerKey} = {customerKey: uniqid()}) => { console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); await testConfirm(); @@ -2184,7 +2184,7 @@ async ( console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); }; - const testCancelBeforePay = async () => { + const testCancelBeforePay = async ({customerKey} = {customerKey: uniqid()}) => { console.log('testCancelBeforePay-start'); await testInit(); From b3967b21ca98f33581d7867b7fff3e9ffb86baa7 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 2 Sep 2022 08:02:52 +0000 Subject: [PATCH 338/683] Update payInsertHandler and cancel tests --- payments-eacq.cjs | 290 ++++++++++++++++++++-------------------------- 1 file changed, 123 insertions(+), 167 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 826118b4..245dd941 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -897,7 +897,6 @@ const f = async () => { const generateToken = ${generateTokenString}; `; console.log({ handlersDependencies }); - const payInsertHandler = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} @@ -917,29 +916,40 @@ async ({ deep, require, data: { newLink: payLink } }) => { if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found.") const PSum = await deep.id("${packageName}", "Sum"); - const sum = mpDownPay.find(link => link.type_id === PSum).value.value; - console.log({sum}); - if(!sum) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); + const sumLink = mpDownPay.find(link => link.type_id === PSum); + console.log({sumLink}); + if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); const PUrl = await deep.id("@deep-foundation/payments-eacq", "Url"); const fromLinkOfPaymentQuery = await deep.select({ id: paymentLink.from_id }); + if(fromLinkOfPaymentQuery.error) { throw new Error(fromLinkOfPaymentQuery.error.message); } + const fromLinkOfPayment = fromLinkOfPaymentQuery.data[0]; + console.log({fromLinkOfPayment}); + const toLinkOfPaymentQuery = await deep.select({ id: paymentLink.to_id }); - if(fromLinkOfPaymentQuery.error) { throw new Error(fromLinkOfPaymentQuery.error.message); } if(toLinkOfPaymentQuery.error) { throw new Error(toLinkOfPaymentQuery.error.message); } - console.log(fromLinkOfPaymentQuery.data); + const toLinkOfPayment = fromLinkOfPaymentQuery.data[0]; + console.log({toLinkOfPayment}); + const isCancellingPay = fromLinkOfPaymentQuery.data.length > 0 && toLinkOfPaymentQuery.data.length > 0 && (fromLinkOfPaymentQuery.data[0].type_id === paymentLink.type_id) && (toLinkOfPaymentQuery.data[0].type_id === await deep.id("@deep-foundation/core", "User")); + console.log({isCancellingPay}); if(isCancellingPay) { const cancel = ${cancel.toString()}; const cancellingPaymentLink = fromLinkOfPayment; + + const cancelledPaymentLink = fromLinkOfPayment; + + await deep.insert({link_id: 1, value: cancelledPaymentLink.value.value}, {table: "objects"}); + const cancelOptions = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentId: cancellingPaymentLink.value.value.bankPaymentId, + PaymentId: cancelledPaymentLink.value.value.bankPaymentId, Amount: sumLink.value.value, }; console.log({ cancelOptions }); @@ -947,7 +957,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const cancelResult = await cancel(cancelOptions); console.log({cancelResult}); if (cancelResult.error) { - const errorMessage = "Could not cancel the order. " + cancelResult.error; + const errorMessage = "Could not cancel the order. " + JSON.stringify(cancelResult.error); const {error: errorLinkInsertQueryError} = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), from_id: ${tinkoffProviderId}, @@ -1102,125 +1112,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); console.log({ payInsertHandlerId }); - const paymentInsertHandler = ` - async ({ deep, require, data: { newLink: cancellingPaymentLink } }) => { - ${handlersDependencies} - const {data: [fromLinkOfPayment], error: fromLinkOfPaymentSelectQueryError} = await deep.select(cancellingPaymentLink.from_id); - if(fromLinkOfPaymentSelectQueryError) {throw new Error(fromLinkOfPaymentSelectQueryError.message)}; - - const {data: [toLinkOfPayment], error: toLinkOfPaymentSelectQueryError} = await deep.select(cancellingPaymentLink.to_id); - if(toLinkOfPaymentSelectQueryError) {throw new Error(toLinkOfPaymentSelectQueryError.message)}; - const {data: [toLinkOfPayment]} = toLinkOfPaymentQuery; - - const User = await deep.id("${corePackageName}", "User"); - const isCancellingPayment = (fromLinkOfPayment.type_id === cancellingPaymentLink.type_id) && (toLinkOfPayment.type_id === User); - if(isCancellingPayment) { - const cancelledPaymentLink = fromLinkOfPayment; - const userLink = toLinkOfPayment; - - const {error: cancellingPaymentLinkValueInsertQueryError} = await deep.insert({link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value}, {table: "objects"}); - if(cancellingPaymentLinkValueInsertQueryError) { throw new Error(cancellingPaymentLinkValueInsertQueryError.message); } - - const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentQueryError} = await deep.select({ - up: { - parent_id: cancelledPaymentLink.id, - tree_id: ${paymentTreeId} - } - }); - if(mpUpCancelledPaymentQueryError) { throw new Error(mpUpCancelledPaymentQueryError.message); } - - const PObject = await deep.id("${packageName}", "Object"); - const objectLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PObject); - if (!objectLinkOfCancelledPayment) { throw new Error("The link of type object associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); } - const {data: [objectLink], error: objectLinkInsertQueryError} = await deep.insert({ - type_id: PObject, - from_id: cancellingPaymentLink.id, - to_id: objectLinkOfCancelledPayment.to_id - }); - if(objectLinkInsertQueryError) { throw new Error(objectLinkInsertQueryError.message); } - - const PSum = await deep.id("${packageName}", "Sum") - const sumLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PSum); - if (!sumLinkOfCancelledPayment) { throw new Error("The link of type sum associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); } - const {data: [sumLink], error: sumLinkInsertQueryError} = await deep.insert({ - type_id: PSum, - from_id: sumLinkOfCancelledPayment.from_id, - to_id: cancellingPaymentLink.id - }); - if(sumLinkInsertQueryError) { throw new Error(sumLinkInsertQueryError.message); } - - const PPay = await deep.id("${packageName}", "Payed"); - const payLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PPay); - if (!payLinkOfCancelledPayment) { throw new Error("The link of type pay associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); } - const {data: [payLink], error: payLinkInsertQueryError} = await deep.insert({ - type_id: PPay, - from_id: payLinkOfCancelledPayment.from_id, - to_id: sumLink.id - }); - if(payLinkInsertQueryError) { throw new Error(payLinkInsertQueryError.message); } - - const PUrl = await deep.id("${packageName}", "Url"); - const urlLinkOfCancelledPayment = mpUpCancelledPayment.find(link => link.type_id === PUrl); - if (!urlLinkOfCancelledPayment) { throw new Error("The link of type url associated with the cancelled payment " + cancelledPaymentLink.id + " is not found."); } - const {data: [urlLink], error: urlLinkInsertQueryError} = await deep.insert({ - type_id: PUrl, - from_id: urlLinkOfCancelledPayment.from_id, - to_id: payLink.id, - object: { data: { value: urlLinkOfCancelledPayment.value.value }} - }); - if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } - } - }; - `; - console.log({ paymentInsertHandler }); - - const { - data: [{ id: paymentInsertHandlerId }], - } = await deep.insert({ - type_id: SyncTextFile, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'paymentInsertHandlerFile' } }, - }, - { - from_id: dockerSupportsJs, - type_id: Handler, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'paymentInsertHandler' } }, - }, - { - type_id: HandleInsert, - from_id: PPay, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'paymentInsertHandle' } }, - }, - ], - }, - }, - ], - }, - }, - ], - }, - string: { - data: { - value: payInsertHandler, - }, - }, - }); - console.log({ paymentInsertHandlerId }); - const tinkoffNotificationHandler = ` async ( req, @@ -2118,39 +2009,50 @@ async ( }); console.log({paymentLink}); - const {data: [cancellingPaymentLink], error: cancellingPaymentLinkInsertQueryError} = await deep.insert({ + const cancellingPaymentLinkInsertQuery = await deep.insert({ type_id: PPayment, from_id: paymentLink.id, to_id: deep.linkId }); - if(cancellingPaymentLinkInsertQueryError) {throw new Error(cancellingPaymentLinkInsertQueryError); } + console.log({cancellingPaymentLinkInsertQuery}); + if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; + console.log({cancellingPaymentLink}); await sleep(3000); const { - data: [sumLink] - } = await deep.select({ - type_id: PSum + data: [sumLinkOfCancellingPayment] + } = await deep.insert({ + type_id: PSum, + from_id: sumProviderId, + to_id: cancellingPaymentLink.id, + number: {data: {value: PRICE}} }); + console.log({sumLinkOfCancellingPayment}); + + await sleep(15000); - await deep.insert({ + const payLinkInsertQuery = await deep.insert({ type_id: PPay, from_id: deep.linkId, - to_id: sumLink.id + to_id: sumLinkOfCancellingPayment.id }); + console.log({payLinkInsertQuery}); + if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} await sleep(3000); const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ up: { parent_id: {_eq: cancellingPaymentLink.id}, - tree_id: paymentTreeId + tree_id: {_eq: paymentTreeId} } }); if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const PPayed = await deep.id(packageName, "Payd"); - const payedLink = mpUpCancelledPayment.data.find(link => link.type_id === PPayed); - expect(payedLink).to.equal(true); + const PPayed = await deep.id(packageName, "Payed"); + const payedLink = mpUpCancelledPayment.find(link => link.type_id === PPayed); + expect(payedLink).to.not.equal(undefined); console.log('testCancelAfterPayAfterConfirmFullPrice-end'); }; @@ -2164,22 +2066,54 @@ async ( } = await deep.select({ type_id: PPayment, }); + console.log({paymentLink}); - const { - data: [sumLink] - } = await deep.select({ - type_id: PSum - }); - - await deep.update({link_id: sumLink.id, value: parseInt(sumLink.value.value) / 3}, {table: "strings"}) - - await deep.insert({ - type_id: PPay, - from_id: deep.linkId, - to_id: sumLink.id - }); - - + for (let i = 0; i < 2; i++) { + const cancellingPaymentLinkInsertQuery = await deep.insert({ + type_id: PPayment, + from_id: paymentLink.id, + to_id: deep.linkId + }); + console.log({cancellingPaymentLinkInsertQuery}); + if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; + console.log({cancellingPaymentLink}); + + await sleep(3000); + + const { + data: [sumLinkOfCancellingPayment] + } = await deep.insert({ + type_id: PSum, + from_id: sumProviderId, + to_id: cancellingPaymentLink.id, + number: {data: {value: Math.floor(PRICE / 3)}} + }); + console.log({sumLinkOfCancellingPayment}); + + await sleep(15000); + + const payLinkInsertQuery = await deep.insert({ + type_id: PPay, + from_id: deep.linkId, + to_id: sumLinkOfCancellingPayment.id + }); + console.log({payLinkInsertQuery}); + if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} + + await sleep(3000); + + const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ + up: { + parent_id: {_eq: cancellingPaymentLink.id}, + tree_id: {_eq: paymentTreeId} + } + }); + if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } + const PPayed = await deep.id(packageName, "Payed"); + const payedLink = mpUpCancelledPayment.find(link => link.type_id === PPayed); + expect(payedLink).to.not.equal(undefined); + } console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); }; @@ -2188,29 +2122,51 @@ async ( console.log('testCancelBeforePay-start'); await testInit(); - const { - data: [payLink], - } = await deep.select({ - type_id: PPay, + const cancellingPaymentLinkInsertQuery = await deep.insert({ + type_id: PPayment, + from_id: paymentLink.id, + to_id: deep.linkId }); + console.log({cancellingPaymentLinkInsertQuery}); + if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; + console.log({cancellingPaymentLink}); + + await sleep(3000); const { - data: [cancelledLink], + data: [sumLinkOfCancellingPayment] } = await deep.insert({ - type_id: PCancelled, - from_id: tinkoffProviderId, - to_id: payLink.id, - number: { data: { value: PRICE } }, + type_id: PSum, + from_id: sumProviderId, + to_id: cancellingPaymentLink.id, + number: {data: {value: PRICE}} }); + console.log({sumLinkOfCancellingPayment}); - await sleep(5000); + await sleep(15000); + + const payLinkInsertQuery = await deep.insert({ + type_id: PPay, + from_id: deep.linkId, + to_id: sumLinkOfCancellingPayment.id + }); + console.log({payLinkInsertQuery}); + if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} - const { data: cancelledErrors } = await deep.select({ - type_id: PError, - to_id: cancelledLink.id, + await sleep(3000); + + const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ + up: { + parent_id: {_eq: cancellingPaymentLink.id}, + tree_id: {_eq: paymentTreeId} + } }); + if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } + const PPayed = await deep.id(packageName, "Payed"); + const payedLink = mpUpCancelledPayment.find(link => link.type_id === PPayed); + expect(payedLink).to.not.equal(undefined); - expect(cancelledErrors.length).to.equal(0); console.log('testCancelBeforePay-end'); }; await testCancelAfterPayAfterConfirmFullPrice(); From 8d94b799e6b95a35d751acab641c4f585e7046ee Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 2 Sep 2022 08:10:48 +0000 Subject: [PATCH 339/683] Update cancelTests --- payments-eacq.cjs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 245dd941..f254ae56 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2059,7 +2059,7 @@ async ( const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({customerKey} = {customerKey: uniqid()}) => { console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); - await testConfirm(); + await testConfirm({customerKey}); const { data: [paymentLink], @@ -2090,9 +2090,7 @@ async ( number: {data: {value: Math.floor(PRICE / 3)}} }); console.log({sumLinkOfCancellingPayment}); - - await sleep(15000); - + const payLinkInsertQuery = await deep.insert({ type_id: PPay, from_id: deep.linkId, @@ -2120,7 +2118,14 @@ async ( const testCancelBeforePay = async ({customerKey} = {customerKey: uniqid()}) => { console.log('testCancelBeforePay-start'); - await testInit(); + await testInit({customerKey}); + + const { + data: [paymentLink], + } = await deep.select({ + type_id: PPayment, + }); + console.log({paymentLink}); const cancellingPaymentLinkInsertQuery = await deep.insert({ type_id: PPayment, From 3ff50df97de827600d303c3df1f023c0d86ec297 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 2 Sep 2022 12:26:46 +0000 Subject: [PATCH 340/683] Delete paymen links in deleteTestLinks --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f254ae56..b0e27900 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1349,7 +1349,7 @@ async ( console.log('deleteTestLinks-start'); const { data: testLinks } = await deep.select({ type_id: { - _in: [ PObject, PSum, PPay, PUrl, PPayed, PError, PCancelled ], + _in: [ PPayment, PObject, PSum, PPay, PUrl, PPayed, PError, PCancelled ], }, }); for (let i = 0; i < testLinks.length; i++) { From b208b664a587349141558cdf54178a2a3ded2e69 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 2 Sep 2022 12:26:52 +0000 Subject: [PATCH 341/683] Fix typo --- payments-eacq.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index b0e27900..e00caeb4 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1356,7 +1356,7 @@ async ( const { id } = testLinks[i]; await deep.delete({ id: id }); } - console.log('deleteTestLinks-start'); + console.log('deleteTestLinks-end'); }; const callRealizationTests = async () => { From 23f7aca23f3e6e0e414a753620750149a6eb5c30 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 2 Sep 2022 12:27:04 +0000 Subject: [PATCH 342/683] Add console log --- payments-eacq.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index e00caeb4..f01bb580 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2107,6 +2107,7 @@ async ( tree_id: {_eq: paymentTreeId} } }); + console.log({mpUpCancelledPayment}); if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } const PPayed = await deep.id(packageName, "Payed"); const payedLink = mpUpCancelledPayment.find(link => link.type_id === PPayed); From e4f607365e8988345f6242a287df642db574367d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 2 Sep 2022 12:27:14 +0000 Subject: [PATCH 343/683] Comment unused code --- .vscode/settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 442837fe..472cb638 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,5 @@ { - "workbench.colorTheme": "Starfall Ocean", + "workbench.colorTheme": "Default Dark+", "editor.tabSize": 2, "files.autoSave": "off", "workbench.colorCustomizations": { From 846008fe99fc50943e904f0051bec57b751245b0 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 2 Sep 2022 12:28:41 +0000 Subject: [PATCH 344/683] Delete unused code --- payments-eacq.cjs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index f01bb580..dfb34b51 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -2184,7 +2184,7 @@ async ( console.log('testCancel-end'); }; - + /* const testGetState = async () => { console.log('testGetState-start'); await testFinishAuthorize(); @@ -2222,19 +2222,19 @@ async ( expect(getCardListResult.error).to.equal(undefined); console.log('testGetCardList-end'); }; - - // await testInit(); - // await deleteTestLinks(); - // await testFinishAuthorize(); - // await deleteTestLinks(); - // await testConfirm(); - // await deleteTestLinks(); + */ + await testInit(); + await deleteTestLinks(); + await testFinishAuthorize(); + await deleteTestLinks(); + await testConfirm(); + await deleteTestLinks(); await testCancel(); await deleteTestLinks(); - await testGetState(); + /*await testGetState(); await deleteTestLinks(); await testGetCardList(); - await deleteTestLinks(); + await deleteTestLinks();*/ }; // await callRealizationTests(); From 4722d1f819ec0f2cd362102925137ecb6492758f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 12:04:25 +0600 Subject: [PATCH 345/683] Move provider vars initialization to tests --- payments-eacq.cjs | 66 ++++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index dfb34b51..584e762f 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -669,20 +669,6 @@ const f = async () => { console.log({ PTinkoffProvider }); - const { - data: [{ id: tinkoffProviderId }], - } = await deep.insert({ - type_id: PTinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - const { data: [{ id: PPayment }], } = await deep.insert({ @@ -869,24 +855,6 @@ const f = async () => { }, }); - console.log({ tinkoffProviderId }); - - const { - data: [{ id: sumProviderId }], - } = await deep.insert({ - type_id: PSumProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ sumProviderId }); - const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); @@ -1311,6 +1279,40 @@ async ( const Type = await deep.id(corePackageName, 'Type'); const Any = await deep.id(corePackageName, 'Any'); + console.log({ paymentTreeId }); + + const { + data: [{ id: tinkoffProviderId }], + } = await deep.insert({ + type_id: PTinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ tinkoffProviderId }); + + const { + data: [{ id: sumProviderId }], + } = await deep.insert({ + type_id: PSumProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ sumProviderId }); + const { data: [{ id: Product }], } = await deep.insert({ From 9ec57f15128d4af8830167f8b7cc8e2e8ee8beb5 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 12:07:18 +0600 Subject: [PATCH 346/683] Add StorageBusiness --- payments-eacq.cjs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 584e762f..3f4f6aa7 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -605,6 +605,7 @@ const f = async () => { const BasePayed = await deep.id(basePackageName, 'Payed'); const BaseCancelled = await deep.id(basePackageName, 'Cancelled'); const BaseError = await deep.id(basePackageName, 'Error'); + const Storage = await deep.id(basePackageName, 'Storage')o const { data: [{ id: packageId }], @@ -855,6 +856,19 @@ const f = async () => { }, }); + const { + data: [{ id: StorageBusiness }], + } = await deep.insert({ + type_id: Storage, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Storage' } }, + }, + }, + }); + const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); From 64f8e7416a95a3ed663db6f63b55c49789a5857e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 12:08:01 +0600 Subject: [PATCH 347/683] Add Token --- payments-eacq.cjs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 3f4f6aa7..07684171 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -869,6 +869,19 @@ const f = async () => { }, }); + const { + data: [{ id: Token }], + } = await deep.insert({ + type_id: Type, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Token' } }, + }, + }, + }); + const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); From 49fd4b38716b67efb6ad3c199d8fbea80b28718c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 12:19:05 +0600 Subject: [PATCH 348/683] Add StorageClient --- payments-eacq.cjs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 07684171..dc7c1e59 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -882,6 +882,19 @@ const f = async () => { }, }); + const { + data: [{ id: StorageClient }], + } = await deep.insert({ + type_id: Storage, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'StorageClient' } }, + }, + }, + }); + const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); From 6d61ed51a0901ebeecac678296b45a3ce3703d4d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 12:19:58 +0600 Subject: [PATCH 349/683] Add constraints to StorageClient --- payments-eacq.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index dc7c1e59..1448cb2a 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -886,6 +886,8 @@ const f = async () => { data: [{ id: StorageClient }], } = await deep.insert({ type_id: Storage, + from_id: PPayment, + to_id: Any, in: { data: { type_id: Contain, From 741179e460e3dbd41a7ac093e54f14964aaaf6d3 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 12:21:42 +0600 Subject: [PATCH 350/683] Remove unused code --- payments-eacq.cjs | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 1448cb2a..bb7d6307 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1309,17 +1309,6 @@ async ( const callTests = async () => { console.log('callTests-start'); - const PPayment = await deep.id(packageName, 'Payment'); - const PObject = await deep.id(packageName, 'Object'); - const PSum = await deep.id(packageName, 'Sum'); - const PPay = await deep.id(packageName, 'Pay'); - const PUrl = await deep.id(packageName, 'Url'); - const PPayed = await deep.id(packageName, 'Payed'); - const PError = await deep.id(packageName, 'Error'); - const PCancelled = await deep.id(packageName, 'Cancelled'); - const paymentTreeId = await deep.id(packageName, 'paymentTree'); - const Type = await deep.id(corePackageName, 'Type'); - const Any = await deep.id(corePackageName, 'Any'); console.log({ paymentTreeId }); From 7545983764ae5257ed4c1960137ef57abb6a0805 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 12:26:02 +0600 Subject: [PATCH 351/683] Add storageBusiness initialization --- payments-eacq.cjs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index bb7d6307..797e128c 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1344,6 +1344,22 @@ async ( console.log({ sumProviderId }); + const { + data: [{ id: storageBusiness }], + } = await deep.insert({ + type_id: StorageBusiness, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ sumProviderId }); + const { data: [{ id: Product }], } = await deep.insert({ From 83bcd53fef1ce85f621c82030d06ee75839e89ac Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 12:30:23 +0600 Subject: [PATCH 352/683] Create token link in tests --- payments-eacq.cjs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 797e128c..89a3312e 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1358,7 +1358,26 @@ async ( }, }); - console.log({ sumProviderId }); + console.log({ storageBusiness }); + + const { + data: [{ id: token }], + } = await deep.insert({ + type_id: Token, + from_id: storageBusiness, + to_id: storageBusiness, + string: {data: {value: process.env.PAYMENT_TEST_TERMINAL_KEY}}, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ storageBusiness }); const { data: [{ id: Product }], From 9e653da4d204ddcfe0f83a7d8b15d488a7eaa8ad Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 13:06:41 +0600 Subject: [PATCH 353/683] Add title type --- payments-eacq.cjs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 89a3312e..cf49be50 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -897,6 +897,21 @@ const f = async () => { }, }); + const { + data: [{ id: Title }], + } = await deep.insert({ + type_id: Type, + from_id: StorageClient, + to_id: SyncTextFile, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'StorageClient' } }, + }, + }, + }); + const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); From e4d7b49c3e55eff132498569a318ddcc5b092eeb Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 13:07:25 +0600 Subject: [PATCH 354/683] Add draft code --- payments-eacq.cjs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index cf49be50..31039fa2 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1220,6 +1220,32 @@ async ( }, }); if(payedLinkInsertError) { throw new Error(payedLinkInsertError); } + + /*const {error: paymentLinkValueUpdateQueryError} = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); + if(paymentLinkValueUpdateQueryError) { throw new Error(paymentLinkValueUpdateQueryError.message); } + + const StorageClient = await deep.id("${packageName}", "StorageClient"); + const storageClientLinkInsertQuery = await deep.insert({ + type_id: StorageClient + }); + if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} + const storageClientLink = storageClientLinkInsertQuery.data[0]; + + const Title = await deep.id("${packageName}", "Title"); + const titleLinkInsertQuery = await deep.insert({ + type_id: Title, + string: {data: {value: initResult}} + }); + + const Income = await deep.id("${packageName}", "Income"); + const incomeLinkInsertQuery = await deep.insert({ + type_id: Income, + from_id: paymentLink.id, + to_id: storageClientLink.id + }); + if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} + const incomeLink = incomeLinkInsertQuery.data[0];*/ + return payedLink; } res.send('ok'); From e70fda15cf457652de4c625780caa90c0f84c4c9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 13:26:31 +0600 Subject: [PATCH 355/683] Uncomment code and save pan and cardId --- payments-eacq.cjs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/payments-eacq.cjs b/payments-eacq.cjs index 31039fa2..aba3b226 100644 --- a/payments-eacq.cjs +++ b/payments-eacq.cjs @@ -1221,12 +1221,13 @@ async ( }); if(payedLinkInsertError) { throw new Error(payedLinkInsertError); } - /*const {error: paymentLinkValueUpdateQueryError} = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); + const {error: paymentLinkValueUpdateQueryError} = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); if(paymentLinkValueUpdateQueryError) { throw new Error(paymentLinkValueUpdateQueryError.message); } const StorageClient = await deep.id("${packageName}", "StorageClient"); const storageClientLinkInsertQuery = await deep.insert({ - type_id: StorageClient + type_id: StorageClient, + string: {data: {value: req.body.CardId}} }); if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} const storageClientLink = storageClientLinkInsertQuery.data[0]; @@ -1234,7 +1235,7 @@ async ( const Title = await deep.id("${packageName}", "Title"); const titleLinkInsertQuery = await deep.insert({ type_id: Title, - string: {data: {value: initResult}} + string: {data: {value: req.body.Pan}} }); const Income = await deep.id("${packageName}", "Income"); @@ -1244,7 +1245,7 @@ async ( to_id: storageClientLink.id }); if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} - const incomeLink = incomeLinkInsertQuery.data[0];*/ + const incomeLink = incomeLinkInsertQuery.data[0]; return payedLink; } From 59f05c9c9f37146265e2fc84ea2274b7d11226fe Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 13:29:49 +0600 Subject: [PATCH 356/683] Rename package name --- payments-eacq.cjs => payments-tinkoff-c2b.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename payments-eacq.cjs => payments-tinkoff-c2b.cjs (99%) diff --git a/payments-eacq.cjs b/payments-tinkoff-c2b.cjs similarity index 99% rename from payments-eacq.cjs rename to payments-tinkoff-c2b.cjs index aba3b226..df6d7efa 100644 --- a/payments-eacq.cjs +++ b/payments-tinkoff-c2b.cjs @@ -22,7 +22,7 @@ dotenvExpand.expand(myEnv); const corePackageName = '@deep-foundation/core'; const basePackageName = '@deep-foundation/payments'; -const packageName = '@deep-foundation/payments-eacq'; +const packageName = '@deep-foundation/payments-c2b'; const PRICE = 5500; @@ -945,7 +945,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({sumLink}); if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); - const PUrl = await deep.id("@deep-foundation/payments-eacq", "Url"); + const PUrl = await deep.id("${packageName}, "Url"); const fromLinkOfPaymentQuery = await deep.select({ id: paymentLink.from_id From f127cb44852d00e1ff5f7f06150f23545722ca27 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 13:37:57 +0600 Subject: [PATCH 357/683] Get terminal key from tokenLink --- payments-tinkoff-c2b.cjs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index df6d7efa..f513b10d 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1013,8 +1013,18 @@ async ({ deep, require, data: { newLink: payLink } }) => { const init = ${init.toString()}; + const storageBusiness = toLinkOfPayment; + const Token = await deep.id("${packageName}", "Token"); + const tokenLinkSelectQuery = await deep.select({ + type_id: Token, + from_id: storageBusiness, + to_id: storageBusiness + }); + if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} + const tokenLink = tokenLinkSelectQuery.data[0]; + const options = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + TerminalKey: tokenLink.value.value, OrderId: paymentLink?.value?.value.orderId ?? paymentLink.id, CustomerKey: ${deep.linkId}, NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", From 1b08f75c7890f54b84d1065ebe7e187b77b11d54 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 13:42:36 +0600 Subject: [PATCH 358/683] Get token from link --- payments-tinkoff-c2b.cjs | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index f513b10d..59ad31ee 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1013,12 +1013,12 @@ async ({ deep, require, data: { newLink: payLink } }) => { const init = ${init.toString()}; - const storageBusiness = toLinkOfPayment; + const storageBusinessLink = toLinkOfPayment; const Token = await deep.id("${packageName}", "Token"); const tokenLinkSelectQuery = await deep.select({ type_id: Token, - from_id: storageBusiness, - to_id: storageBusiness + from_id: storageBusinessLink.id, + to_id: storageBusinessLink.id }); if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} const tokenLink = tokenLinkSelectQuery.data[0]; @@ -1183,8 +1183,23 @@ async ( if (req.body.Status === 'AUTHORIZED') { const confirm = ${confirm.toString()}; + const storageBusinessLinkSelectQuery = await deep.select({ + id: paymentLink.to_id + }); + if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} + const storageBusinessLink = storageBusinessLinkSelectQuery.data[0]; + + const Token = await deep.id("${packageName}", "Token"); + const tokenLinkSelectQuery = await deep.select({ + type_id: Token, + from_id: storageBusinessLink.id, + to_id: storageBusinessLink.id + }); + if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} + const tokenLink = tokenLinkSelectQuery.data[0]; + const confirmOptions = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + TerminalKey: tokenLink.value.value, PaymentId: req.body.PaymentId, Amount: req.body.Amount, // Receipt: req.body.Receipt, @@ -1397,7 +1412,7 @@ async ( console.log({ sumProviderId }); const { - data: [{ id: storageBusiness }], + data: [{ id: storageBusinessLink }], } = await deep.insert({ type_id: StorageBusiness, in: { @@ -1410,14 +1425,14 @@ async ( }, }); - console.log({ storageBusiness }); + console.log({ storageBusinessLink }); const { data: [{ id: token }], } = await deep.insert({ type_id: Token, - from_id: storageBusiness, - to_id: storageBusiness, + from_id: storageBusiness.id, + to_id: storageBusiness.id, string: {data: {value: process.env.PAYMENT_TEST_TERMINAL_KEY}}, in: { data: [ @@ -1429,7 +1444,7 @@ async ( }, }); - console.log({ storageBusiness }); + console.log({ token }); const { data: [{ id: Product }], From 0c36cef599eb842b4c1766891a60b4de35b24a09 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 13:49:12 +0600 Subject: [PATCH 359/683] Do not insert deep.linkId from out --- payments-tinkoff-c2b.cjs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 59ad31ee..6f725f7a 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -992,7 +992,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { data: [ { type_id: await deep.id("${corePackageName}", 'Contain'), - from_id: ${deep.linkId}, + from_id: deep.linkId, }, ], }, @@ -1026,7 +1026,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const options = { TerminalKey: tokenLink.value.value, OrderId: paymentLink?.value?.value.orderId ?? paymentLink.id, - CustomerKey: ${deep.linkId}, + CustomerKey: deep.linkId, NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", PayType: 'T', Amount: ${PRICE}, @@ -1067,7 +1067,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { data: [ { type_id: await deep.id("${corePackageName}", 'Contain'), - from_id: ${deep.linkId}, + from_id: deep.linkId, }, ], }, @@ -1085,7 +1085,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { data: [ { type_id: await deep.id("${corePackageName}", 'Contain'), - from_id: ${deep.linkId}, + from_id: deep.linkId, }, ], }, @@ -1220,7 +1220,7 @@ async ( data: [ { type_id: await deep.id("${corePackageName}", 'Contain'), - from_id: ${deep.linkId}, + from_id: deep.linkId, }, ], }, @@ -1239,7 +1239,7 @@ async ( data: [ { type_id: await deep.id("${corePackageName}", 'Contain'), - from_id: ${deep.linkId}, + from_id: deep.linkId, }, ], }, From 43d796fbc7496973a65d100827d8b8ed8031ca7f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 14:02:56 +0600 Subject: [PATCH 360/683] Do not insert tinkoffProviderLink.id from outside --- payments-tinkoff-c2b.cjs | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 6f725f7a..323b56c1 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -926,6 +926,13 @@ const f = async () => { async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} + const TinkoffProvider = await deep.id("${packageName}", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: TinkoffProvider + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; + const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ down: { link_id: { _eq: payLink.id }, @@ -938,7 +945,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const PPayment = await deep.id("${packageName}", "Payment"); const paymentLink = mpDownPay.find(link => link.type_id === PPayment); console.log({paymentLink}); - if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found.") + if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found."); const PSum = await deep.id("${packageName}", "Sum"); const sumLink = mpDownPay.find(link => link.type_id === PSum); @@ -983,9 +990,10 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({cancelResult}); if (cancelResult.error) { const errorMessage = "Could not cancel the order. " + JSON.stringify(cancelResult.error); + const {error: errorLinkInsertQueryError} = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), - from_id: ${tinkoffProviderId}, + from_id: tinkoffProviderLink.id, to_id: payLink.id, string: { data: { value: errorMessage } }, in: { @@ -1003,7 +1011,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const {error: payedLinkInsertQueryError} = await deep.insert({ type_id: await deep.id("${packageName}", "Payed"), - from_id: ${tinkoffProviderId}, + from_id: tinkoffProviderLink.id, to_id: payLink.id }); if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError.message); } @@ -1060,7 +1068,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const errorMessage = "Could not initialize the order. " + initResult.error; const {error: errorLinkInsertQueryError} = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), - from_id: ${tinkoffProviderId}, + from_id: tinkoffProviderLink.id, to_id: payLink.id, string: { data: { value: errorMessage } }, in: { @@ -1078,7 +1086,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const {error: urlLinkInsertQueryError} = await deep.insert({ type_id: PUrl, - from_id: ${tinkoffProviderId}, + from_id: tinkoffProviderLink.id, to_id: payLink.id, string: { data: { value: initResult.response.PaymentURL } }, in: { @@ -1158,6 +1166,13 @@ async ( const reqBody = req.body; console.log({reqBody}); + const TinkoffProvider = await deep.id("${packageName}", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: TinkoffProvider + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; + const {data: [paymentLink], error: paymentLinkSelectQueryError} = await deep.select({ object: {value: {_contains: {orderId: req.body.OrderId}}} }); @@ -1213,7 +1228,7 @@ async ( const errorMessage = "Could not confirm the pay. " + confirmResult.error; const {errorLinkInsertError} = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), - from_id: ${tinkoffProviderId}, + from_id: tinkoffProviderLink.id, to_id: payLink.id, string: { data: { value: errorMessage } }, in: { @@ -1233,7 +1248,7 @@ async ( } else if (req.body.Status === 'CONFIRMED') { const {error: payedLinkInsertError, data: [payedLink]} = await deep.insert({ type_id: (await deep.id("${packageName}", "Payed")), - from_id: ${tinkoffProviderId}, + from_id: tinkoffProviderLink.id, to_id: payLink.id, in: { data: [ From 16feb3138a5199f87baa44e1d3ef3d5940c929ab Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 16:27:38 +0600 Subject: [PATCH 361/683] Do not insert paymentTree id from outside --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 323b56c1..855e434e 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1183,7 +1183,7 @@ async ( const {data: mpUpPaymentLink, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ up: { parent_id: { _eq: paymentLink.id }, - tree_id: { _eq: ${paymentTreeId} } + tree_id: { _eq: await deep.id("${packageName}", "paymentTree) } } }); console.log({mpUpPaymentLink}); From 023db30b24aeb30e91825ba3e5dbfb1cdd24820c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 <66206278+FreePhoenix888@users.noreply.github.com> Date: Sun, 11 Sep 2022 16:41:57 +0600 Subject: [PATCH 362/683] Delete settings.json --- .vscode/settings.json | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 472cb638..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "workbench.colorTheme": "Default Dark+", - "editor.tabSize": 2, - "files.autoSave": "off", - "workbench.colorCustomizations": { - "activityBar.background": "#181818", - "titleBar.activeBackground": "#181818", - "titleBar.activeForeground": "#F9FAFF" - }, - "editor.wordWrap": "on" -} \ No newline at end of file From cf81280b885a8c7d9a6adb9b38859f0fedf3d479 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 10:54:54 +0000 Subject: [PATCH 363/683] Fix typo --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 855e434e..2b347763 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -605,7 +605,7 @@ const f = async () => { const BasePayed = await deep.id(basePackageName, 'Payed'); const BaseCancelled = await deep.id(basePackageName, 'Cancelled'); const BaseError = await deep.id(basePackageName, 'Error'); - const Storage = await deep.id(basePackageName, 'Storage')o + const Storage = await deep.id(basePackageName, 'Storage'); const { data: [{ id: packageId }], From b3b0611c531d5be90b737ed9c4b60b8bc9ccf7ba Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 10:57:44 +0000 Subject: [PATCH 364/683] Add storage type --- payments.cjs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/payments.cjs b/payments.cjs index 58fce6e2..5c22b036 100644 --- a/payments.cjs +++ b/payments.cjs @@ -185,5 +185,18 @@ const f = async () => { }); console.log({ PError: PError }); + + const { data: [{ id: PStorage }] } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Storage' } }, + } }, + }); + + console.log({ PError: PStorage }); }; f(); \ No newline at end of file From d7a3137cfc3bd669e5fcdbd8c37d2614484139e0 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 20:30:28 +0600 Subject: [PATCH 365/683] Fix typo --- payments-tinkoff-c2b.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 855e434e..c4205b08 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1446,8 +1446,8 @@ async ( data: [{ id: token }], } = await deep.insert({ type_id: Token, - from_id: storageBusiness.id, - to_id: storageBusiness.id, + from_id: storageBusinessLink.id, + to_id: storageBusinessLink.id, string: {data: {value: process.env.PAYMENT_TEST_TERMINAL_KEY}}, in: { data: [ From 23c8b67cb381b805f019909ceb4956618295889f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 20:46:57 +0600 Subject: [PATCH 366/683] Fix typo --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index fad74926..f2922c37 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -952,7 +952,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({sumLink}); if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); - const PUrl = await deep.id("${packageName}, "Url"); + const PUrl = await deep.id("${packageName}", "Url"); const fromLinkOfPaymentQuery = await deep.select({ id: paymentLink.from_id From 0a8154f097573500ee657dc38a0f264a97428ca0 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 14:53:05 +0000 Subject: [PATCH 367/683] Add from and to to payment link --- payments-tinkoff-c2b.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index f2922c37..165a6b5e 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -2033,6 +2033,8 @@ async ( } = await deep.insert({ type_id: PPayment, object: { data: { value: {orderId: uniqid()} } }, + from_id: deep.linkId, + to_id: storageBusinessLink.id, in: { data: [ { From 4f113ef13f3d0a73f54e13fc73dc3674853ce0ec Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 14:53:27 +0000 Subject: [PATCH 368/683] Comment cancel tests --- payments-tinkoff-c2b.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 165a6b5e..d8c15dea 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -2381,8 +2381,8 @@ async ( await deleteTestLinks(); await testConfirm(); await deleteTestLinks(); - await testCancel(); - await deleteTestLinks(); + // await testCancel(); + // await deleteTestLinks(); /*await testGetState(); await deleteTestLinks(); await testGetCardList(); From f32aae9a0f6fa5b243ae9008b8ae6bd9db5528e8 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 14:58:32 +0000 Subject: [PATCH 369/683] Fix typo --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index d8c15dea..d183ef3a 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1427,7 +1427,7 @@ async ( console.log({ sumProviderId }); const { - data: [{ id: storageBusinessLink }], + data: [storageBusinessLink], } = await deep.insert({ type_id: StorageBusiness, in: { From 53a70da16d78803710d11c72b5373baa2607cf81 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 15:00:21 +0000 Subject: [PATCH 370/683] Add any from and to for token --- payments-tinkoff-c2b.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index d183ef3a..8d8d0f9f 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -873,6 +873,8 @@ const f = async () => { data: [{ id: Token }], } = await deep.insert({ type_id: Type, + from_id: Any, + to_id: Any, in: { data: { type_id: Contain, From c7da1663c1fcb2a5b53a94cba7fb97e4e2ccc1e2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 15:57:58 +0000 Subject: [PATCH 371/683] Fix typos --- payments-tinkoff-c2b.cjs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 8d8d0f9f..379c2a01 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -967,7 +967,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { id: paymentLink.to_id }); if(toLinkOfPaymentQuery.error) { throw new Error(toLinkOfPaymentQuery.error.message); } - const toLinkOfPayment = fromLinkOfPaymentQuery.data[0]; + const toLinkOfPayment = toLinkOfPaymentQuery.data[0]; console.log({toLinkOfPayment}); const isCancellingPay = fromLinkOfPaymentQuery.data.length > 0 && toLinkOfPaymentQuery.data.length > 0 && (fromLinkOfPaymentQuery.data[0].type_id === paymentLink.type_id) && (toLinkOfPaymentQuery.data[0].type_id === await deep.id("@deep-foundation/core", "User")); @@ -1024,6 +1024,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const init = ${init.toString()}; const storageBusinessLink = toLinkOfPayment; + console.log({storageBusinessLink}); const Token = await deep.id("${packageName}", "Token"); const tokenLinkSelectQuery = await deep.select({ type_id: Token, @@ -1032,6 +1033,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} const tokenLink = tokenLinkSelectQuery.data[0]; + console.log({tokenLink}); const options = { TerminalKey: tokenLink.value.value, @@ -1185,7 +1187,7 @@ async ( const {data: mpUpPaymentLink, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ up: { parent_id: { _eq: paymentLink.id }, - tree_id: { _eq: await deep.id("${packageName}", "paymentTree) } + tree_id: { _eq: await deep.id("${packageName}", "paymentTree") } } }); console.log({mpUpPaymentLink}); @@ -1445,7 +1447,7 @@ async ( console.log({ storageBusinessLink }); const { - data: [{ id: token }], + data: [{ id: tokenId }], } = await deep.insert({ type_id: Token, from_id: storageBusinessLink.id, @@ -1461,7 +1463,7 @@ async ( }, }); - console.log({ token }); + console.log({ token: tokenId }); const { data: [{ id: Product }], From 27a417f1dd8593461746492efa29430729eaa7ea Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Sep 2022 22:19:44 +0600 Subject: [PATCH 372/683] Rename --- payments-tinkoff-c2b.cjs | 156 +++++++++++++++++++-------------------- 1 file changed, 78 insertions(+), 78 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index d8c15dea..b64e2f33 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -637,7 +637,7 @@ const f = async () => { console.log({ packageId }); const { - data: [{ id: PSumProvider }], + data: [{ id: SumProvider }], } = await deep.insert({ type_id: Type, from_id: Any, @@ -651,10 +651,10 @@ const f = async () => { }, }); - console.log({ PSumProvider: PSumProvider }); + console.log({ SumProvider: SumProvider }); const { - data: [{ id: PTinkoffProvider }], + data: [{ id: TinkoffProvider }], } = await deep.insert({ type_id: Type, from_id: Any, @@ -668,10 +668,10 @@ const f = async () => { }, }); - console.log({ PTinkoffProvider }); + console.log({ TinkoffProvider }); const { - data: [{ id: PPayment }], + data: [{ id: Payment }], } = await deep.insert({ type_id: BasePayment, from_id: Any, @@ -685,13 +685,13 @@ const f = async () => { }, }); - console.log({ PPayment: PPayment }); + console.log({ Payment: Payment }); const { - data: [{ id: PObject }], + data: [{ id: Object }], } = await deep.insert({ type_id: BaseObject, - from_id: PPayment, + from_id: Payment, to_id: Any, in: { data: { @@ -702,14 +702,14 @@ const f = async () => { }, }); - console.log({ PObject: PObject }); + console.log({ Object: Object }); const { - data: [{ id: PSum }], + data: [{ id: Sum }], } = await deep.insert({ type_id: BaseSum, from_id: Any, - to_id: PPayment, + to_id: Payment, in: { data: { type_id: Contain, @@ -719,14 +719,14 @@ const f = async () => { }, }); - console.log({ PSum: PSum }); + console.log({ Sum: Sum }); const { - data: [{ id: PPay }], + data: [{ id: Pay }], } = await deep.insert({ type_id: BasePay, from_id: User, - to_id: PSum, + to_id: Sum, in: { data: { type_id: Contain, @@ -736,14 +736,14 @@ const f = async () => { }, }); - console.log({ PPay: PPay }); + console.log({ Pay: Pay }); const { - data: [{ id: PUrl }], + data: [{ id: Url }], } = await deep.insert({ type_id: BaseUrl, - from_id: PTinkoffProvider, - to_id: PPay, + from_id: TinkoffProvider, + to_id: Pay, in: { data: { type_id: Contain, @@ -753,14 +753,14 @@ const f = async () => { }, }); - console.log({ PUrl: PUrl }); + console.log({ Url: Url }); const { - data: [{ id: PPayed }], + data: [{ id: Payed }], } = await deep.insert({ type_id: BasePayed, - from_id: PTinkoffProvider, - to_id: PPay, + from_id: TinkoffProvider, + to_id: Pay, in: { data: { type_id: Contain, @@ -770,14 +770,14 @@ const f = async () => { }, }); - console.log({ PPayed: PPayed }); + console.log({ Payed: Payed }); const { - data: [{ id: PError }], + data: [{ id: Error }], } = await deep.insert({ type_id: BaseError, - from_id: PTinkoffProvider, - to_id: PPay, + from_id: TinkoffProvider, + to_id: Pay, in: { data: { type_id: Contain, @@ -787,14 +787,14 @@ const f = async () => { }, }); - console.log({ PError: PError }); + console.log({ Error: Error }); // TODO: Use BaseCancelled const { - data: [{ id: PCancelled }], + data: [{ id: Cancelled }], } = await deep.insert({ type_id: BaseCancelled, - from_id: PTinkoffProvider, + from_id: TinkoffProvider, to_id: Any, in: { data: { @@ -805,7 +805,7 @@ const f = async () => { }, }); - console.log({ PCancelled }); + console.log({ Cancelled }); const { data: [{ id: paymentTreeId }], @@ -822,35 +822,35 @@ const f = async () => { data: [ { type_id: TreeIncludeNode, - to_id: PPayment, + to_id: Payment, }, { type_id: TreeIncludeUp, - to_id: PSum, + to_id: Sum, }, { type_id: TreeIncludeDown, - to_id: PObject, + to_id: Object, }, { type_id: TreeIncludeUp, - to_id: PError, + to_id: Error, }, { type_id: TreeIncludeUp, - to_id: PPayed, + to_id: Payed, }, { type_id: TreeIncludeUp, - to_id: PCancelled, + to_id: Cancelled, }, { type_id: TreeIncludeUp, - to_id: PPay, + to_id: Pay, }, { type_id: TreeIncludeUp, - to_id: PUrl, + to_id: Url, }, ], }, @@ -864,7 +864,7 @@ const f = async () => { data: { type_id: Contain, from_id: packageId, // before created package - string: { data: { value: 'Storage' } }, + string: { data: { value: 'StorageBusiness' } }, }, }, }); @@ -886,7 +886,7 @@ const f = async () => { data: [{ id: StorageClient }], } = await deep.insert({ type_id: Storage, - from_id: PPayment, + from_id: Payment, to_id: Any, in: { data: { @@ -942,17 +942,17 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({mpDownPay}); if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } - const PPayment = await deep.id("${packageName}", "Payment"); - const paymentLink = mpDownPay.find(link => link.type_id === PPayment); + const Payment = await deep.id("${packageName}", "Payment"); + const paymentLink = mpDownPay.find(link => link.type_id === Payment); console.log({paymentLink}); if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found."); - const PSum = await deep.id("${packageName}", "Sum"); - const sumLink = mpDownPay.find(link => link.type_id === PSum); + const Sum = await deep.id("${packageName}", "Sum"); + const sumLink = mpDownPay.find(link => link.type_id === Sum); console.log({sumLink}); if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); - const PUrl = await deep.id("${packageName}", "Url"); + const Url = await deep.id("${packageName}", "Url"); const fromLinkOfPaymentQuery = await deep.select({ id: paymentLink.from_id @@ -1085,7 +1085,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { } const {error: urlLinkInsertQueryError} = await deep.insert({ - type_id: PUrl, + type_id: Url, from_id: tinkoffProviderLink.id, to_id: payLink.id, string: { data: { value: initResult.response.PaymentURL } }, @@ -1131,7 +1131,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }, { type_id: HandleInsert, - from_id: PPay, + from_id: Pay, in: { data: [ { @@ -1189,8 +1189,8 @@ async ( console.log({mpUpPaymentLink}); if(mpUpPaymentLinkSelectQueryError) { throw new Error(mpUpPaymentLinkSelectQueryError.message); } - const PPay = await deep.id("${packageName}", "Pay"); - const payLink = mpUpPaymentLink.find(link => link.type_id === PPay); + const Pay = await deep.id("${packageName}", "Pay"); + const payLink = mpUpPaymentLink.find(link => link.type_id === Pay); console.log({payLink}); if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } @@ -1397,7 +1397,7 @@ async ( const { data: [{ id: tinkoffProviderId }], } = await deep.insert({ - type_id: PTinkoffProvider, + type_id: TinkoffProvider, in: { data: [ { @@ -1413,7 +1413,7 @@ async ( const { data: [{ id: sumProviderId }], } = await deep.insert({ - type_id: PSumProvider, + type_id: SumProvider, in: { data: [ { @@ -1499,7 +1499,7 @@ async ( console.log('deleteTestLinks-start'); const { data: testLinks } = await deep.select({ type_id: { - _in: [ PPayment, PObject, PSum, PPay, PUrl, PPayed, PError, PCancelled ], + _in: [ Payment, Object, Sum, Pay, Url, Payed, Error, Cancelled ], }, }); for (let i = 0; i < testLinks.length; i++) { @@ -2031,7 +2031,7 @@ async ( const { data: [{ id: paymentId }], } = await deep.insert({ - type_id: PPayment, + type_id: Payment, object: { data: { value: {orderId: uniqid()} } }, from_id: deep.linkId, to_id: storageBusinessLink.id, @@ -2049,7 +2049,7 @@ async ( const { data: [{ id: sumId }], } = await deep.insert({ - type_id: PSum, + type_id: Sum, from_id: sumProviderId, to_id: paymentId, number: { data: { value: 150 } }, @@ -2068,7 +2068,7 @@ async ( const { data: [{ id: objectId }], } = await deep.insert({ - type_id: PObject, + type_id: Object, from_id: paymentId, to_id: productId, in: { @@ -2086,7 +2086,7 @@ async ( const { data: [{ id: payId }], } = await deep.insert({ - type_id: PPay, + type_id: Pay, from_id: deep.linkId, to_id: sumId, in: { @@ -2106,7 +2106,7 @@ async ( const { data: { length }, } = await deep.select({ - type_id: PUrl, + type_id: Url, to_id: payId, }); @@ -2124,7 +2124,7 @@ async ( }, ], } = await deep.select({ - type_id: PUrl, + type_id: Url, }); const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); @@ -2142,7 +2142,7 @@ async ( await testFinishAuthorize({customerKey}); await sleep(17000); let { data } = await deep.select({ - type_id: PPayed, + type_id: Payed, }); expect(data.length).to.greaterThan(0); console.log('testConfirm-end'); @@ -2157,12 +2157,12 @@ async ( const { data: [paymentLink], } = await deep.select({ - type_id: PPayment, + type_id: Payment, }); console.log({paymentLink}); const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: PPayment, + type_id: Payment, from_id: paymentLink.id, to_id: deep.linkId }); @@ -2176,7 +2176,7 @@ async ( const { data: [sumLinkOfCancellingPayment] } = await deep.insert({ - type_id: PSum, + type_id: Sum, from_id: sumProviderId, to_id: cancellingPaymentLink.id, number: {data: {value: PRICE}} @@ -2186,7 +2186,7 @@ async ( await sleep(15000); const payLinkInsertQuery = await deep.insert({ - type_id: PPay, + type_id: Pay, from_id: deep.linkId, to_id: sumLinkOfCancellingPayment.id }); @@ -2202,8 +2202,8 @@ async ( } }); if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const PPayed = await deep.id(packageName, "Payed"); - const payedLink = mpUpCancelledPayment.find(link => link.type_id === PPayed); + const Payed = await deep.id(packageName, "Payed"); + const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); console.log('testCancelAfterPayAfterConfirmFullPrice-end'); @@ -2216,13 +2216,13 @@ async ( const { data: [paymentLink], } = await deep.select({ - type_id: PPayment, + type_id: Payment, }); console.log({paymentLink}); for (let i = 0; i < 2; i++) { const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: PPayment, + type_id: Payment, from_id: paymentLink.id, to_id: deep.linkId }); @@ -2236,7 +2236,7 @@ async ( const { data: [sumLinkOfCancellingPayment] } = await deep.insert({ - type_id: PSum, + type_id: Sum, from_id: sumProviderId, to_id: cancellingPaymentLink.id, number: {data: {value: Math.floor(PRICE / 3)}} @@ -2244,7 +2244,7 @@ async ( console.log({sumLinkOfCancellingPayment}); const payLinkInsertQuery = await deep.insert({ - type_id: PPay, + type_id: Pay, from_id: deep.linkId, to_id: sumLinkOfCancellingPayment.id }); @@ -2261,8 +2261,8 @@ async ( }); console.log({mpUpCancelledPayment}); if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const PPayed = await deep.id(packageName, "Payed"); - const payedLink = mpUpCancelledPayment.find(link => link.type_id === PPayed); + const Payed = await deep.id(packageName, "Payed"); + const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); } @@ -2276,12 +2276,12 @@ async ( const { data: [paymentLink], } = await deep.select({ - type_id: PPayment, + type_id: Payment, }); console.log({paymentLink}); const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: PPayment, + type_id: Payment, from_id: paymentLink.id, to_id: deep.linkId }); @@ -2295,7 +2295,7 @@ async ( const { data: [sumLinkOfCancellingPayment] } = await deep.insert({ - type_id: PSum, + type_id: Sum, from_id: sumProviderId, to_id: cancellingPaymentLink.id, number: {data: {value: PRICE}} @@ -2305,7 +2305,7 @@ async ( await sleep(15000); const payLinkInsertQuery = await deep.insert({ - type_id: PPay, + type_id: Pay, from_id: deep.linkId, to_id: sumLinkOfCancellingPayment.id }); @@ -2321,8 +2321,8 @@ async ( } }); if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const PPayed = await deep.id(packageName, "Payed"); - const payedLink = mpUpCancelledPayment.find(link => link.type_id === PPayed); + const Payed = await deep.id(packageName, "Payed"); + const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); console.log('testCancelBeforePay-end'); @@ -2343,7 +2343,7 @@ async ( const { data: [payLink], - } = await deep.select({ type_id: PPay }); + } = await deep.select({ type_id: Pay }); const bankPaymentId = await getBankPaymentId( payLink?.value?.value ?? payLink.id From 89b44690b0ed72842a99f1768aead6d6ac37a1b1 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 12 Sep 2022 21:20:20 +0600 Subject: [PATCH 373/683] Use names of packages directly --- payments-tinkoff-c2b.cjs | 160 +++++++++++++++++++-------------------- 1 file changed, 78 insertions(+), 82 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index b64e2f33..d6a0c7b3 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -20,10 +20,6 @@ const { get } = require('lodash'); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); -const corePackageName = '@deep-foundation/core'; -const basePackageName = '@deep-foundation/payments'; -const packageName = '@deep-foundation/payments-c2b'; - const PRICE = 5500; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); @@ -538,80 +534,80 @@ const f = async () => { }); const deep = new DeepClient({ deep: guestDeep, ...admin }); - const User = await deep.id(corePackageName, 'User'); - const Type = await deep.id(corePackageName, 'Type'); - const Any = await deep.id(corePackageName, 'Any'); - const Join = await deep.id(corePackageName, 'Join'); - const Contain = await deep.id(corePackageName, 'Contain'); - const Value = await deep.id(corePackageName, 'Value'); - const String = await deep.id(corePackageName, 'String'); - const Package = await deep.id(corePackageName, 'Package'); + const User = await deep.id('@deep-foundation/core', 'User'); + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + const Join = await deep.id('@deep-foundation/core', 'Join'); + const Contain = await deep.id('@deep-foundation/core', 'Contain'); + const Value = await deep.id('@deep-foundation/core', 'Value'); + const String = await deep.id('@deep-foundation/core', 'String'); + const Package = await deep.id('@deep-foundation/core', 'Package'); - const SyncTextFile = await deep.id(corePackageName, 'SyncTextFile'); + const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); const dockerSupportsJs = await deep.id( - corePackageName, + '@deep-foundation/core', 'dockerSupportsJs' ); - const Handler = await deep.id(corePackageName, 'Handler'); - const HandleInsert = await deep.id(corePackageName, 'HandleInsert'); - const HandleDelete = await deep.id(corePackageName, 'HandleDelete'); + const Handler = await deep.id('@deep-foundation/core', 'Handler'); + const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); + const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); - const Tree = await deep.id(corePackageName, 'Tree'); + const Tree = await deep.id('@deep-foundation/core', 'Tree'); const TreeIncludeNode = await deep.id( - corePackageName, + '@deep-foundation/core', 'TreeIncludeNode' ); - const TreeIncludeUp = await deep.id(corePackageName, 'TreeIncludeUp'); + const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); const TreeIncludeDown = await deep.id( - corePackageName, + '@deep-foundation/core', 'TreeIncludeDown' ); - const Rule = await deep.id(corePackageName, 'Rule'); - const RuleSubject = await deep.id(corePackageName, 'RuleSubject'); - const RuleObject = await deep.id(corePackageName, 'RuleObject'); - const RuleAction = await deep.id(corePackageName, 'RuleAction'); - const Selector = await deep.id(corePackageName, 'Selector'); + const Rule = await deep.id('@deep-foundation/core', 'Rule'); + const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); + const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); + const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); + const Selector = await deep.id('@deep-foundation/core', 'Selector'); const SelectorInclude = await deep.id( - corePackageName, + '@deep-foundation/core', 'SelectorInclude' ); const SelectorExclude = await deep.id( - corePackageName, + '@deep-foundation/core', 'SelectorExclude' ); - const SelectorTree = await deep.id(corePackageName, 'SelectorTree'); - const containTree = await deep.id(corePackageName, 'containTree'); + const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); + const containTree = await deep.id('@deep-foundation/core', 'containTree'); const AllowInsertType = await deep.id( - corePackageName, + '@deep-foundation/core', 'AllowInsertType' ); const AllowDeleteType = await deep.id( - corePackageName, + '@deep-foundation/core', 'AllowDeleteType' ); const SelectorFilter = await deep.id( - corePackageName, + '@deep-foundation/core', 'SelectorFilter' ); - const Query = await deep.id(corePackageName, 'Query'); + const Query = await deep.id('@deep-foundation/core', 'Query'); const usersId = await deep.id('deep', 'users'); - const BasePayment = await deep.id(basePackageName, 'Payment'); - const BaseObject = await deep.id(basePackageName, 'Object'); - const BaseSum = await deep.id(basePackageName, 'Sum'); - const BasePay = await deep.id(basePackageName, 'Pay'); - const BaseUrl = await deep.id(basePackageName, 'Url'); - const BasePayed = await deep.id(basePackageName, 'Payed'); - const BaseCancelled = await deep.id(basePackageName, 'Cancelled'); - const BaseError = await deep.id(basePackageName, 'Error'); - const Storage = await deep.id(basePackageName, 'Storage'); + const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); + const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); + const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); + const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); + const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); + const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); + const BaseCancelled = await deep.id('@deep-foundation/payments', 'Cancelled'); + const BaseError = await deep.id('@deep-foundation/payments', 'Error'); + const Storage = await deep.id('@deep-foundation/payments', 'Storage'); const { data: [{ id: packageId }], } = await deep.insert({ type_id: Package, - string: { data: { value: packageName } }, + string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, in: { data: [ { @@ -926,7 +922,7 @@ const f = async () => { async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} - const TinkoffProvider = await deep.id("${packageName}", "TinkoffProvider"); + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider }); @@ -936,23 +932,23 @@ async ({ deep, require, data: { newLink: payLink } }) => { const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ down: { link_id: { _eq: payLink.id }, - tree_id: { _eq: await deep.id("${packageName}", "paymentTree") }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") }, }, }); console.log({mpDownPay}); if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } - const Payment = await deep.id("${packageName}", "Payment"); + const Payment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); const paymentLink = mpDownPay.find(link => link.type_id === Payment); console.log({paymentLink}); if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found."); - const Sum = await deep.id("${packageName}", "Sum"); + const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); const sumLink = mpDownPay.find(link => link.type_id === Sum); console.log({sumLink}); if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); - const Url = await deep.id("${packageName}", "Url"); + const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); const fromLinkOfPaymentQuery = await deep.select({ id: paymentLink.from_id @@ -992,14 +988,14 @@ async ({ deep, require, data: { newLink: payLink } }) => { const errorMessage = "Could not cancel the order. " + JSON.stringify(cancelResult.error); const {error: errorLinkInsertQueryError} = await deep.insert({ - type_id: (await deep.id("${packageName}", "Error")), + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), from_id: tinkoffProviderLink.id, to_id: payLink.id, string: { data: { value: errorMessage } }, in: { data: [ { - type_id: await deep.id("${corePackageName}", 'Contain'), + type_id: await deep.id("@deep-foundation/payments", 'Contain'), from_id: deep.linkId, }, ], @@ -1010,7 +1006,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { } const {error: payedLinkInsertQueryError} = await deep.insert({ - type_id: await deep.id("${packageName}", "Payed"), + type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), from_id: tinkoffProviderLink.id, to_id: payLink.id }); @@ -1022,7 +1018,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const init = ${init.toString()}; const storageBusinessLink = toLinkOfPayment; - const Token = await deep.id("${packageName}", "Token"); + const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); const tokenLinkSelectQuery = await deep.select({ type_id: Token, from_id: storageBusinessLink.id, @@ -1067,14 +1063,14 @@ async ({ deep, require, data: { newLink: payLink } }) => { if (initResult.error) { const errorMessage = "Could not initialize the order. " + initResult.error; const {error: errorLinkInsertQueryError} = await deep.insert({ - type_id: (await deep.id("${packageName}", "Error")), + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), from_id: tinkoffProviderLink.id, to_id: payLink.id, string: { data: { value: errorMessage } }, in: { data: [ { - type_id: await deep.id("${corePackageName}", 'Contain'), + type_id: await deep.id("@deep-foundation/payments", 'Contain'), from_id: deep.linkId, }, ], @@ -1092,7 +1088,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { in: { data: [ { - type_id: await deep.id("${corePackageName}", 'Contain'), + type_id: await deep.id("@deep-foundation/payments", 'Contain'), from_id: deep.linkId, }, ], @@ -1166,7 +1162,7 @@ async ( const reqBody = req.body; console.log({reqBody}); - const TinkoffProvider = await deep.id("${packageName}", "TinkoffProvider"); + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider }); @@ -1180,17 +1176,17 @@ async ( if(paymentLinkSelectQueryError) { throw new Error(paymentLinkSelectQueryError.message); } if(!paymentLink) { throw new Error("The payment link associated with the order id " + req.body.OrderId + " is not found."); } - const {data: mpUpPaymentLink, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ + const {data: mpUpPayment, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ up: { parent_id: { _eq: paymentLink.id }, - tree_id: { _eq: await deep.id("${packageName}", "paymentTree) } + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } } }); - console.log({mpUpPaymentLink}); - if(mpUpPaymentLinkSelectQueryError) { throw new Error(mpUpPaymentLinkSelectQueryError.message); } + console.log({mpUpPayment}); + if(mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } - const Pay = await deep.id("${packageName}", "Pay"); - const payLink = mpUpPaymentLink.find(link => link.type_id === Pay); + const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + const payLink = mpUpPayment.find(link => link.type_id === Pay); console.log({payLink}); if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } @@ -1204,7 +1200,7 @@ async ( if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} const storageBusinessLink = storageBusinessLinkSelectQuery.data[0]; - const Token = await deep.id("${packageName}", "Token"); + const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); const tokenLinkSelectQuery = await deep.select({ type_id: Token, from_id: storageBusinessLink.id, @@ -1227,14 +1223,14 @@ async ( if (confirmResult.error) { const errorMessage = "Could not confirm the pay. " + confirmResult.error; const {errorLinkInsertError} = await deep.insert({ - type_id: (await deep.id("${packageName}", "Error")), + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), from_id: tinkoffProviderLink.id, to_id: payLink.id, string: { data: { value: errorMessage } }, in: { data: [ { - type_id: await deep.id("${corePackageName}", 'Contain'), + type_id: await deep.id("@deep-foundation/payments", 'Contain'), from_id: deep.linkId, }, ], @@ -1247,13 +1243,13 @@ async ( return confirmResult; } else if (req.body.Status === 'CONFIRMED') { const {error: payedLinkInsertError, data: [payedLink]} = await deep.insert({ - type_id: (await deep.id("${packageName}", "Payed")), + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed")), from_id: tinkoffProviderLink.id, to_id: payLink.id, in: { data: [ { - type_id: await deep.id("${corePackageName}", 'Contain'), + type_id: await deep.id("@deep-foundation/payments", 'Contain'), from_id: deep.linkId, }, ], @@ -1264,7 +1260,7 @@ async ( const {error: paymentLinkValueUpdateQueryError} = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); if(paymentLinkValueUpdateQueryError) { throw new Error(paymentLinkValueUpdateQueryError.message); } - const StorageClient = await deep.id("${packageName}", "StorageClient"); + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); const storageClientLinkInsertQuery = await deep.insert({ type_id: StorageClient, string: {data: {value: req.body.CardId}} @@ -1272,13 +1268,13 @@ async ( if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} const storageClientLink = storageClientLinkInsertQuery.data[0]; - const Title = await deep.id("${packageName}", "Title"); + const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); const titleLinkInsertQuery = await deep.insert({ type_id: Title, string: {data: {value: req.body.Pan}} }); - const Income = await deep.id("${packageName}", "Income"); + const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); const incomeLinkInsertQuery = await deep.insert({ type_id: Income, from_id: paymentLink.id, @@ -1296,20 +1292,20 @@ async ( await deep.insert( { - type_id: await deep.id(corePackageName, 'Port'), + type_id: await deep.id('@deep-foundation/core', 'Port'), number: { data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, }, in: { data: { - type_id: await deep.id(corePackageName, 'RouterListening'), + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), from: { data: { - type_id: await deep.id(corePackageName, 'Router'), + type_id: await deep.id('@deep-foundation/core', 'Router'), in: { data: { type_id: await deep.id( - corePackageName, + '@deep-foundation/core', 'RouterStringUse' ), string: { @@ -1320,21 +1316,21 @@ async ( }, from: { data: { - type_id: await deep.id(corePackageName, 'Route'), + type_id: await deep.id('@deep-foundation/core', 'Route'), out: { data: { type_id: await deep.id( - corePackageName, + '@deep-foundation/core', 'HandleRoute' ), to: { data: { type_id: await deep.id( - corePackageName, + '@deep-foundation/core', 'Handler' ), from_id: await deep.id( - corePackageName, + '@deep-foundation/core', 'dockerSupportsJs' ), in: { @@ -2202,7 +2198,7 @@ async ( } }); if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const Payed = await deep.id(packageName, "Payed"); + const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); @@ -2261,7 +2257,7 @@ async ( }); console.log({mpUpCancelledPayment}); if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const Payed = await deep.id(packageName, "Payed"); + const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); } @@ -2321,7 +2317,7 @@ async ( } }); if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const Payed = await deep.id(packageName, "Payed"); + const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); From 035a790c077442bca2fb1688502187c24fe114fe Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 12 Sep 2022 21:26:17 +0600 Subject: [PATCH 374/683] Add @deep-foundation/payments-tinkoff-c2b-cancelling draft --- payments-tinkoff-c2b-cancelling.cjs | 1979 +++++++++++++++++++++++++++ 1 file changed, 1979 insertions(+) create mode 100644 payments-tinkoff-c2b-cancelling.cjs diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs new file mode 100644 index 00000000..d385a915 --- /dev/null +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -0,0 +1,1979 @@ +require('react'); +require('graphql'); +require('lodash'); +require('subscriptions-transport-ws'); +const dotenv = require('dotenv'); +const dotenvExpand = require('dotenv-expand'); +const { generateApolloClient } = require('@deep-foundation/hasura/client'); +const { DeepClient } = require('@deep-foundation/deeplinks/imports/client'); +const { + minilinks, + Link, +} = require('@deep-foundation/deeplinks/imports/minilinks'); +const puppeteer = require('puppeteer'); +const crypto = require('crypto'); +const axios = require('axios'); +const uniqid = require('uniqid'); +const { expect } = require('chai'); +const { get } = require('lodash'); + +var myEnv = dotenv.config(); +dotenvExpand.expand(myEnv); + +const corePackageName = '@deep-foundation/core'; +const basePackageName = '@deep-foundation/payments'; +const packageName = '@deep-foundation/payments-c2b'; + +const PRICE = 5500; + +const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); + +const payInBrowser = async ({ page, browser, url }) => { + await page.goto(url, { waitUntil: 'networkidle2' }); + await sleep(5000); + const oldForm = await page.evaluate(() => { + return !!document.querySelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + }); + if (oldForm) { + console.log('OLD FORM!!!!!!!'); + // Старая форма используется на тестовом сервере + const cvc1 = await page.evaluate(() => { + return !!document.querySelector( + 'button[automation-id="pay-card__submit"]' + ); + }); + if (cvc1) { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_TEST_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_TEST_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-card__submit"]'); // submit button + } else { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_E2C_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_E2C_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-wallet__submit"]'); // submit button + await sleep(300); + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(1000); + } + // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен + await sleep(1000); + } else { + console.log('NEW FORM!!!!!!!'); + await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number + await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date + await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code + await page.click('button[type=submit]'); // submit button + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(3000); + } + await browser.close(); +}; + +const f = async () => { + const apolloClient = generateApolloClient({ + path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE + ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') + ? false + : true, + // admin token in prealpha deep secret key + // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', + }); + + const unloginedDeep = new DeepClient({ apolloClient }); + + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + + const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + console.log({ dataString }); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + console.log({ hash }); + return hash; + }; + + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + ...restData, + Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, + }; + console.log({ dataWithPassword }); + return _generateToken(dataWithPassword); + }; + const generateTokenString = generateToken.toString() + .replace( + 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', + `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` + ); + console.log({ generateTokenString }); + + const getUrl = (method) => + `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; + getUrlString = getUrl.toString() + .replace( + '${process.env.PAYMENT_EACQ_AND_TEST_URL}', + process.env.PAYMENT_EACQ_AND_TEST_URL + ); + console.log({ getUrlString }); + + const getMarketUrl = (method) => + `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; + + const getState = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetState'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const checkOrder = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('CheckOrder'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getCardList = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCardList'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode || '0'); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const init = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Init'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const cancel = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Cancel'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const resend = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Resend'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const charge = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Charge'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const addCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('AddCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const removeCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('RemoveCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getBankPaymentId = async (orderId) => { + const checkOrderOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: orderId, + }; + + const checkOrderResult = await checkOrder(checkOrderOptions); + expect(checkOrderResult.error).to.equal(undefined); + + console.log({ checkOrderResponse: checkOrderResult }); + + const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; + + console.log({ paymentId: bankPaymentId }); + return bankPaymentId; + }; + + const guest = await unloginedDeep.guest(); + const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); + const admin = await guestDeep.login({ + linkId: await guestDeep.id('deep', 'admin'), + }); + const deep = new DeepClient({ deep: guestDeep, ...admin }); + + const User = await deep.id(corePackageName, 'User'); + const Type = await deep.id(corePackageName, 'Type'); + const Any = await deep.id(corePackageName, 'Any'); + const Join = await deep.id(corePackageName, 'Join'); + const Contain = await deep.id(corePackageName, 'Contain'); + const Value = await deep.id(corePackageName, 'Value'); + const String = await deep.id(corePackageName, 'String'); + const Package = await deep.id(corePackageName, 'Package'); + + const SyncTextFile = await deep.id(corePackageName, 'SyncTextFile'); + const dockerSupportsJs = await deep.id( + corePackageName, + 'dockerSupportsJs' + ); + const Handler = await deep.id(corePackageName, 'Handler'); + const HandleInsert = await deep.id(corePackageName, 'HandleInsert'); + const HandleDelete = await deep.id(corePackageName, 'HandleDelete'); + + const Tree = await deep.id(corePackageName, 'Tree'); + const TreeIncludeNode = await deep.id( + corePackageName, + 'TreeIncludeNode' + ); + const TreeIncludeUp = await deep.id(corePackageName, 'TreeIncludeUp'); + const TreeIncludeDown = await deep.id( + corePackageName, + 'TreeIncludeDown' + ); + + const Rule = await deep.id(corePackageName, 'Rule'); + const RuleSubject = await deep.id(corePackageName, 'RuleSubject'); + const RuleObject = await deep.id(corePackageName, 'RuleObject'); + const RuleAction = await deep.id(corePackageName, 'RuleAction'); + const Selector = await deep.id(corePackageName, 'Selector'); + const SelectorInclude = await deep.id( + corePackageName, + 'SelectorInclude' + ); + const SelectorExclude = await deep.id( + corePackageName, + 'SelectorExclude' + ); + const SelectorTree = await deep.id(corePackageName, 'SelectorTree'); + const containTree = await deep.id(corePackageName, 'containTree'); + const AllowInsertType = await deep.id( + corePackageName, + 'AllowInsertType' + ); + const AllowDeleteType = await deep.id( + corePackageName, + 'AllowDeleteType' + ); + const SelectorFilter = await deep.id( + corePackageName, + 'SelectorFilter' + ); + const Query = await deep.id(corePackageName, 'Query'); + const usersId = await deep.id('deep', 'users'); + + const BasePayment = await deep.id(basePackageName, 'Payment'); + const BaseObject = await deep.id(basePackageName, 'Object'); + const BaseSum = await deep.id(basePackageName, 'Sum'); + const BasePay = await deep.id(basePackageName, 'Pay'); + const BaseUrl = await deep.id(basePackageName, 'Url'); + const BasePayed = await deep.id(basePackageName, 'Payed'); + const BaseCancelled = await deep.id(basePackageName, 'Cancelled'); + const BaseError = await deep.id(basePackageName, 'Error'); + const Storage = await deep.id(basePackageName, 'Storage'); + + const { + data: [{ id: packageId }], + } = await deep.insert({ + type_id: Package, + string: { data: { value: packageName } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + out: { + data: [ + { + type_id: Join, + to_id: await deep.id('deep', 'users', 'packages'), + }, + { + type_id: Join, + to_id: await deep.id('deep', 'admin'), + }, + ], + }, + }); + + console.log({ packageId }); + + const SumProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "SumProvider"); + console.log({ SumProvider: SumProvider }); + + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + console.log({ TinkoffProvider }); + + const Payment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); + console.log({ Payment: Payment }); + + const { + data: [{ id: CancellingPayment }], + } = await deep.insert({ + type_id: Type, + from_id: StorageBusiness, + to_id: User, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'CancellingPayment' } }, + }, + }, + }); + console.log({CancellingPayment}); + + const Object = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Object"); + console.log({ Object: Object }); + + const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); + console.log({ Sum: Sum }); + + const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + console.log({ Pay: Pay }); + + const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); + console.log({ Url: Url }); + + const Payed = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"); + console.log({ Payed: Payed }); + + const Error = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error"); + console.log({ Error: Error }); + + const paymentTreeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree"); + console.log({ paymentTreeId }); + + const StorageBusiness = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageBusiness"); + console.log({ StorageBusiness }); + + + const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); + console.log({ Token }); + + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + console.log({ StorageClient }); + + const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); + console.log({ Title }); + + const handlersDependencies = ` + const crypto = require('crypto'); + const axios = require('axios'); + const errorsConverter = ${JSON.stringify(errorsConverter)}; + const getError = ${getError.toString()}; + const getUrl = ${getUrlString}; + const _generateToken = ${_generateToken.toString()}; + const generateToken = ${generateTokenString}; + `; + console.log({ handlersDependencies }); + const payInsertHandler = ` +async ({ deep, require, data: { newLink: payLink } }) => { + ${handlersDependencies} + + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: TinkoffProvider + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; + + const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ + down: { + link_id: { _eq: payLink.id }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") }, + }, + }); + console.log({mpDownPay}); + if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } + + const Payment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); + const paymentLink = mpDownPay.find(link => link.type_id === Payment); + console.log({paymentLink}); + if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found."); + + const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); + const sumLink = mpDownPay.find(link => link.type_id === Sum); + console.log({sumLink}); + if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); + + const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); + + const fromLinkOfPaymentQuery = await deep.select({ + id: paymentLink.from_id + }); + if(fromLinkOfPaymentQuery.error) { throw new Error(fromLinkOfPaymentQuery.error.message); } + const fromLinkOfPayment = fromLinkOfPaymentQuery.data[0]; + console.log({fromLinkOfPayment}); + + const toLinkOfPaymentQuery = await deep.select({ + id: paymentLink.to_id + }); + if(toLinkOfPaymentQuery.error) { throw new Error(toLinkOfPaymentQuery.error.message); } + const toLinkOfPayment = fromLinkOfPaymentQuery.data[0]; + console.log({toLinkOfPayment}); + + const isCancellingPay = fromLinkOfPaymentQuery.data.length > 0 && toLinkOfPaymentQuery.data.length > 0 && (fromLinkOfPaymentQuery.data[0].type_id === paymentLink.type_id) && (toLinkOfPaymentQuery.data[0].type_id === await deep.id("@deep-foundation/core", "User")); + console.log({isCancellingPay}); + if(isCancellingPay) { + const cancel = ${cancel.toString()}; + + const cancellingPaymentLink = fromLinkOfPayment; + + const cancelledPaymentLink = fromLinkOfPayment; + + await deep.insert({link_id: 1, value: cancelledPaymentLink.value.value}, {table: "objects"}); + + const cancelOptions = { + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + PaymentId: cancelledPaymentLink.value.value.bankPaymentId, + Amount: sumLink.value.value, + }; + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + console.log({cancelResult}); + if (cancelResult.error) { + const errorMessage = "Could not cancel the order. " + JSON.stringify(cancelResult.error); + + const {error: errorLinkInsertQueryError} = await deep.insert({ + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), + from_id: tinkoffProviderLink.id, + to_id: payLink.id, + string: { data: { value: errorMessage } }, + in: { + data: [ + { + type_id: await deep.id("${corePackageName}", 'Contain'), + from_id: deep.linkId, + }, + ], + }, + }); + if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } + throw new Error(errorMessage); + } + + const {error: payedLinkInsertQueryError} = await deep.insert({ + type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), + from_id: tinkoffProviderLink.id, + to_id: payLink.id + }); + if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError.message); } + + return cancelResult; + } +}; +`; + console.log({ payInsertHandler }); + + const { + data: [{ id: payInsertHandlerId }], + } = await deep.insert({ + type_id: SyncTextFile, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandlerFile' } }, + }, + { + from_id: dockerSupportsJs, + type_id: Handler, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandler' } }, + }, + { + type_id: HandleInsert, + from_id: Pay, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandle' } }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + string: { + data: { + value: payInsertHandler, + }, + }, + }); + console.log({ payInsertHandlerId }); + + const tinkoffNotificationHandler = ` +async ( + req, + res, + next, + { deep, require, gql } +) => { + ${handlersDependencies} + const reqBody = req.body; + console.log({reqBody}); + + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: TinkoffProvider + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; + + const {data: [paymentLink], error: paymentLinkSelectQueryError} = await deep.select({ + object: {value: {_contains: {orderId: req.body.OrderId}}} + }); + console.log({paymentLink}); + if(paymentLinkSelectQueryError) { throw new Error(paymentLinkSelectQueryError.message); } + if(!paymentLink) { throw new Error("The payment link associated with the order id " + req.body.OrderId + " is not found."); } + + const {data: mpUpPaymentLink, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ + up: { + parent_id: { _eq: paymentLink.id }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree) } + } + }); + console.log({mpUpPaymentLink}); + if(mpUpPaymentLinkSelectQueryError) { throw new Error(mpUpPaymentLinkSelectQueryError.message); } + + const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + const payLink = mpUpPaymentLink.find(link => link.type_id === Pay); + console.log({payLink}); + if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } + + + if (req.body.Status === 'CANCELLED') { + const bankPaymentId = req.body.PaymentId; + + const CancellingPayment = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "CancellingPayment"); + const cancellingPaymentLinkSelectQuery = await deep.select({ + type_id: CancellingPayment, + object: {value: {_contains: {bankPaymentId} }} + }); + if(cancellingPaymentLinkSelectQuery.error) {throw new Error(cancellingPaymentLinkSelectQuery.error.message);} + if(!cancellingPaymentLinkSelectQuery.data || !cancellingPaymentLinkSelectQuery.data[0]) {throw new Error("Could not find cancelling payment link with bank payment id " + bankPaymentId);} + const cancellingPaymentLink = cancellingPaymentLinkSelectQuery.data[0]; + + const {data: mpUpPayment, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ + up: { + parent_id: { _eq: cancellingPaymentLink.id }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } + } + }); + + const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum") + const sumLink = mpUpPayment.find(link => link.type_id === Sum); + if(!sumLink) {throw new Error("Could not find sum link associated with the cancelling payment " + cancellingPaymentLink);} + + const Payed = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed") + const payedInsertLinkInsertQuery = await deep.insert({ + type_id: Payed, + from_id: tinkoffProviderLink.id, + to_id: sumLink.id + }); + if(payedInsertLinkInsertQuery.error) {throw new Error(payedInsertLinkInsertQuery.error.message);} + } + + res.send('ok'); +}; +`; + console.log({ tinkoffNotificationHandler }); + + await deep.insert( + { + type_id: await deep.id(corePackageName, 'Port'), + number: { + data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, + }, + in: { + data: { + type_id: await deep.id(corePackageName, 'RouterListening'), + from: { + data: { + type_id: await deep.id(corePackageName, 'Router'), + in: { + data: { + type_id: await deep.id( + corePackageName, + 'RouterStringUse' + ), + string: { + data: { + value: + process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, + }, + }, + from: { + data: { + type_id: await deep.id(corePackageName, 'Route'), + out: { + data: { + type_id: await deep.id( + corePackageName, + 'HandleRoute' + ), + to: { + data: { + type_id: await deep.id( + corePackageName, + 'Handler' + ), + from_id: await deep.id( + corePackageName, + 'dockerSupportsJs' + ), + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + to: { + data: { + type_id: SyncTextFile, + string: { + data: { + value: tinkoffNotificationHandler, + }, + }, + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + } + ); + + const callTests = async () => { + console.log('callTests-start'); + + console.log({ paymentTreeId }); + + const { + data: [{ id: tinkoffProviderId }], + } = await deep.insert({ + type_id: TinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ tinkoffProviderId }); + + const { + data: [{ id: sumProviderId }], + } = await deep.insert({ + type_id: SumProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ sumProviderId }); + + const { + data: [{ id: storageBusinessLink }], + } = await deep.insert({ + type_id: StorageBusiness, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ storageBusinessLink }); + + const { + data: [{ id: token }], + } = await deep.insert({ + type_id: Token, + from_id: storageBusinessLink.id, + to_id: storageBusinessLink.id, + string: {data: {value: process.env.PAYMENT_TEST_TERMINAL_KEY}}, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ token }); + + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ Product }); + + const { + data: [{ id: productId }], + } = await deep.insert({ + type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ product: productId }); + + const deleteTestLinks = async () => { + console.log('deleteTestLinks-start'); + const { data: testLinks } = await deep.select({ + type_id: { + _in: [ Payment, Object, Sum, Pay, Url, Payed, Error, Cancelled ], + }, + }); + for (let i = 0; i < testLinks.length; i++) { + const { id } = testLinks[i]; + await deep.delete({ id: id }); + } + console.log('deleteTestLinks-end'); + }; + + const callRealizationTests = async () => { + const testInit = async () => { + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + Amount: PRICE, + Description: 'Test shopping', + CustomerKey: deep.linkId, + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: PRICE, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + expect(initResult.error).to.equal(undefined); + + return initResult; + }; + + const testConfirm = async () => { + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: PRICE, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const confirmOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const confirmResult = await confirm(confirmOptions); + + expect(confirmResult.error).to.equal(undefined); + expect(confirmResult.response.Status).to.equal('CONFIRMED'); + + return confirmResult; + }; + + const testCancel = async () => { + console.log('testCancel-start'); + const testCancelAfterPayBeforeConfirmFullPrice = async () => { + console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + Amount: PRICE, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // } + }; + + console.log({ options: initOptions }); + + let initResult = await init(initOptions); + + console.log({ initResult }); + + expect(initResult.error).to.equal(undefined); + + const url = initResult.response.PaymentURL; + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + await payInBrowser({ + browser, + page, + url, + }); + + const bankPaymentId = initResult.response.PaymentId; + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; + + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + + console.log({ cancelResponse: cancelResult }); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('REVERSED'); + console.log('testCanselAfterPayBeforeConfirmFullPrice-end'); + }; + + const testCancelAfterPayBeforeConfirmCustomPriceX2 = async () => { + console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-start'); + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + Amount: PRICE, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // } + }; + + console.log({ options: initOptions }); + + let initResult = await init(initOptions); + + console.log({ initResult }); + + expect(initResult.error).to.equal(undefined); + + const url = initResult.response.PaymentURL; + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); + + const bankPaymentId = initResult.response.PaymentId; + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: Math.floor(PRICE / 3), + }; + + console.log({ cancelOptions }); + + { + const cancelResult = await cancel(cancelOptions); + + console.log({ cancelResponse: cancelResult }); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); + } + { + const cancelResult = await cancel(cancelOptions); + + console.log({ cancelResponse: cancelResult }); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); + } + console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-end'); + }; + + const testCancelAfterPayAfterConfirmFullPrice = async () => { + console.log('testCancelAfterPayAfterConfirmFullPrice-start'); + const confirmResult = await testConfirm(); + console.log({confirmResult}); + + const bankPaymentId = confirmResult.response.PaymentId; + console.log({bankPaymentId}); + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('REFUNDED'); + console.log('testCancelAfterPayAfterConfirmFullPrice-end'); + }; + + const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); + const confirmResult = await testConfirm(); + + const bankPaymentId = confirmResult.response.PaymentId;; + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: Math.floor(PRICE / 3), + }; + + console.log({ cancelOptions }); + + { + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); + } + { + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); + } + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); + }; + + const testCancelBeforePay = async () => { + console.log('testCancelBeforePay-start'); + const initResult = await testInit(); + + const bankPaymentId = initResult.response.PaymentId;; + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; + + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('CANCELED'); + console.log('testCancelBeforePay-end'); + }; + await testCancelAfterPayBeforeConfirmFullPrice(); + await testCancelAfterPayBeforeConfirmCustomPriceX2(); + await testCancelAfterPayAfterConfirmFullPrice(); + await testCancelAfterPayAfterConfirmCustomPriceX2(); + await testCancelBeforePay(); + + console.log('testCancel-end'); + }; + + const testGetState = async () => { + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + Amount: PRICE, + }); + + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.error).to.equal(undefined); + }; + + const testGetCardList = async () => { + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + OrderId: uniqid(), + Amount: PRICE, + Recurrent: 'Y', + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.error).to.equal(undefined); + }; + + const testResend = async () => { + console.log('testResend-start'); + const resendOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + }; + console.log({ resendOptions }); + + const resendResult = await resend(resendOptions); + console.log({ resendResult }); + + expect(resendResult.error).to.equal(undefined); + console.log('testResend-end'); + }; + + const testCharge = async () => { + console.log('testCharge-start'); + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + Recurrent: 'Y', + }); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.response[0].RebillId).to.have.length.above(0); + + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.response.Status).to.equal('AUTHORIZED'); + + const newInitResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + }); + + const newChargeOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: newInitResult.response.PaymentId, + RebillId: Number(getCardListResult.response[0].RebillId), + }; + + const chargeResult = await charge(newChargeOptions); + + expect(chargeResult.error).to.equal(undefined); + console.log('testCharge-end'); + }; + + const testAddCustomer = async () => { + console.log('testAddCustomer-start'); + + const addCustomerOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + console.log({addCustomerOptions}); + + const addCustomerResult = await addCustomer(addCustomerOptions); + console.log({addCustomerResult}); + + expect(addCustomerResult.error).to.equal(undefined); + console.log('testAddCustomer-end'); + }; + + const testGetCustomer = async () => { + console.log('testGetCustomer-start'); + + const customerOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + + const addCustomerDataOptions = { + ...customerOptions, + Phone: process.env.PAYMENT_TEST_PHONE, + }; + + const addResult = await addCustomer(addCustomerDataOptions); + + expect(addResult.error).to.equal(undefined); + + const getResult = await getCustomer(customerOptions); + + expect(getResult.error).to.equal(undefined); + expect(getResult.response.Phone).to.equal( + process.env.PAYMENT_TEST_PHONE + ); + + console.log('testGetCustomer-end'); + }; + + const testRemoveCustomer = async () => { + console.log('testRemoveCustomer-start'); + + const removeCustomerData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + + const newAddCustomerData = { + ...removeCustomerData, + Phone: process.env.PAYMENT_TEST_PHONE, + }; + + const addResult = await addCustomer(newAddCustomerData); + + expect(addResult.error).to.equal(undefined); + + const removeResult = await removeCustomer(removeCustomerData); + + expect(removeResult.error).to.equal(undefined); + + console.log('testRemoveCustomer-end'); + }; + + await testInit(); + await testConfirm(); + await testCancel(); + }; + + const callIntegrationTests = async () => { + const testInit = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testInit-start'); + const { + data: [{ id: paymentId }], + } = await deep.insert({ + type_id: Payment, + object: { data: { value: {orderId: uniqid()} } }, + from_id: deep.linkId, + to_id: storageBusinessLink.id, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ paymentId }); + + const { + data: [{ id: sumId }], + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderId, + to_id: paymentId, + number: { data: { value: 150 } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ sum: sumId }); + + const { + data: [{ id: objectId }], + } = await deep.insert({ + type_id: Object, + from_id: paymentId, + to_id: productId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ object: objectId }); + + const { + data: [{ id: payId }], + } = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ pay: payId }); + + await sleep(9000); + + const { + data: { length }, + } = await deep.select({ + type_id: Url, + to_id: payId, + }); + + expect(length).to.greaterThan(0); + console.log('testInit-end'); + }; + + const testFinishAuthorize = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testFinishAuthorize-start'); + await testInit({customerKey}); + const { + data: [ + { + value: { value: url }, + }, + ], + } = await deep.select({ + type_id: Url, + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); + console.log('testFinishAuthorize-end'); + }; + + const testConfirm = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testConfirm-start'); + await testFinishAuthorize({customerKey}); + await sleep(17000); + let { data } = await deep.select({ + type_id: Payed, + }); + expect(data.length).to.greaterThan(0); + console.log('testConfirm-end'); + }; + + const testCancel = async () => { + console.log('testCancel-start'); + const testCancelAfterPayAfterConfirmFullPrice = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testCancelAfterPayAfterConfirmFullPrice-start'); + await testConfirm({customerKey}); + + const { + data: [paymentLink], + } = await deep.select({ + type_id: Payment, + }); + console.log({paymentLink}); + + const cancellingPaymentLinkInsertQuery = await deep.insert({ + type_id: CancellingPayment, + from_id: paymentLink.id, + to_id: deep.linkId + }); + console.log({cancellingPaymentLinkInsertQuery}); + if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; + console.log({cancellingPaymentLink}); + + await sleep(3000); + + const { + data: [sumLinkOfCancellingPayment] + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderId, + to_id: cancellingPaymentLink.id, + number: {data: {value: PRICE}} + }); + console.log({sumLinkOfCancellingPayment}); + + await sleep(15000); + + const payLinkInsertQuery = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumLinkOfCancellingPayment.id + }); + console.log({payLinkInsertQuery}); + if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} + + await sleep(3000); + + const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ + up: { + parent_id: {_eq: cancellingPaymentLink.id}, + tree_id: {_eq: paymentTreeId} + } + }); + if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } + const Payed = await deep.id(packageName, "Payed"); + const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); + expect(payedLink).to.not.equal(undefined); + + console.log('testCancelAfterPayAfterConfirmFullPrice-end'); + }; + + const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); + await testConfirm({customerKey}); + + const { + data: [paymentLink], + } = await deep.select({ + type_id: Payment, + }); + console.log({paymentLink}); + + for (let i = 0; i < 2; i++) { + const cancellingPaymentLinkInsertQuery = await deep.insert({ + type_id: CancellingPayment, + from_id: paymentLink.id, + to_id: deep.linkId + }); + console.log({cancellingPaymentLinkInsertQuery}); + if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; + console.log({cancellingPaymentLink}); + + await sleep(3000); + + const { + data: [sumLinkOfCancellingPayment] + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderId, + to_id: cancellingPaymentLink.id, + number: {data: {value: Math.floor(PRICE / 3)}} + }); + console.log({sumLinkOfCancellingPayment}); + + const payLinkInsertQuery = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumLinkOfCancellingPayment.id + }); + console.log({payLinkInsertQuery}); + if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} + + await sleep(3000); + + const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ + up: { + parent_id: {_eq: cancellingPaymentLink.id}, + tree_id: {_eq: paymentTreeId} + } + }); + console.log({mpUpCancelledPayment}); + if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } + const Payed = await deep.id(packageName, "Payed"); + const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); + expect(payedLink).to.not.equal(undefined); + } + + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); + }; + + const testCancelBeforePay = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testCancelBeforePay-start'); + await testInit({customerKey}); + + const { + data: [paymentLink], + } = await deep.select({ + type_id: Payment, + }); + console.log({paymentLink}); + + const cancellingPaymentLinkInsertQuery = await deep.insert({ + type_id: CancellingPayment, + from_id: paymentLink.id, + to_id: deep.linkId + }); + console.log({cancellingPaymentLinkInsertQuery}); + if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; + console.log({cancellingPaymentLink}); + + await sleep(3000); + + const { + data: [sumLinkOfCancellingPayment] + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderId, + to_id: cancellingPaymentLink.id, + number: {data: {value: PRICE}} + }); + console.log({sumLinkOfCancellingPayment}); + + await sleep(15000); + + const payLinkInsertQuery = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumLinkOfCancellingPayment.id + }); + console.log({payLinkInsertQuery}); + if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} + + await sleep(3000); + + const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ + up: { + parent_id: {_eq: cancellingPaymentLink.id}, + tree_id: {_eq: paymentTreeId} + } + }); + if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } + const Payed = await deep.id(packageName, "Payed"); + const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); + expect(payedLink).to.not.equal(undefined); + + console.log('testCancelBeforePay-end'); + }; + await testCancelAfterPayAfterConfirmFullPrice(); + await deleteTestLinks(); + await testCancelAfterPayAfterConfirmCustomPriceX2(); + await deleteTestLinks(); + await testCancelBeforePay(); + await deleteTestLinks(); + + console.log('testCancel-end'); + }; + + await testCancel(); + // await deleteTestLinks(); + }; + + // await callRealizationTests(); + await callIntegrationTests(); + }; + + await callTests(); +}; + +f(); \ No newline at end of file From 7ce4938a53d0e44d0fee4cf4231ef8b5294a7623 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 12 Sep 2022 21:26:45 +0600 Subject: [PATCH 375/683] Use package names directly --- payments-tinkoff-c2b-cancelling.cjs | 110 ++++++++++++++-------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index d385a915..9fb7196a 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -20,9 +20,9 @@ const { get } = require('lodash'); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); -const corePackageName = '@deep-foundation/core'; -const basePackageName = '@deep-foundation/payments'; -const packageName = '@deep-foundation/payments-c2b'; +const '@deep-foundation/core' = '@deep-foundation/core'; +const '@deep-foundation/payments' = '@deep-foundation/payments'; +const '@deep-foundation/payments-tinkoff-c2b' = '@deep-foundation/payments-tinkoff-c2b'; const PRICE = 5500; @@ -538,80 +538,80 @@ const f = async () => { }); const deep = new DeepClient({ deep: guestDeep, ...admin }); - const User = await deep.id(corePackageName, 'User'); - const Type = await deep.id(corePackageName, 'Type'); - const Any = await deep.id(corePackageName, 'Any'); - const Join = await deep.id(corePackageName, 'Join'); - const Contain = await deep.id(corePackageName, 'Contain'); - const Value = await deep.id(corePackageName, 'Value'); - const String = await deep.id(corePackageName, 'String'); - const Package = await deep.id(corePackageName, 'Package'); + const User = await deep.id('@deep-foundation/core', 'User'); + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + const Join = await deep.id('@deep-foundation/core', 'Join'); + const Contain = await deep.id('@deep-foundation/core', 'Contain'); + const Value = await deep.id('@deep-foundation/core', 'Value'); + const String = await deep.id('@deep-foundation/core', 'String'); + const Package = await deep.id('@deep-foundation/core', 'Package'); - const SyncTextFile = await deep.id(corePackageName, 'SyncTextFile'); + const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); const dockerSupportsJs = await deep.id( - corePackageName, + '@deep-foundation/core', 'dockerSupportsJs' ); - const Handler = await deep.id(corePackageName, 'Handler'); - const HandleInsert = await deep.id(corePackageName, 'HandleInsert'); - const HandleDelete = await deep.id(corePackageName, 'HandleDelete'); + const Handler = await deep.id('@deep-foundation/core', 'Handler'); + const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); + const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); - const Tree = await deep.id(corePackageName, 'Tree'); + const Tree = await deep.id('@deep-foundation/core', 'Tree'); const TreeIncludeNode = await deep.id( - corePackageName, + '@deep-foundation/core', 'TreeIncludeNode' ); - const TreeIncludeUp = await deep.id(corePackageName, 'TreeIncludeUp'); + const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); const TreeIncludeDown = await deep.id( - corePackageName, + '@deep-foundation/core', 'TreeIncludeDown' ); - const Rule = await deep.id(corePackageName, 'Rule'); - const RuleSubject = await deep.id(corePackageName, 'RuleSubject'); - const RuleObject = await deep.id(corePackageName, 'RuleObject'); - const RuleAction = await deep.id(corePackageName, 'RuleAction'); - const Selector = await deep.id(corePackageName, 'Selector'); + const Rule = await deep.id('@deep-foundation/core', 'Rule'); + const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); + const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); + const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); + const Selector = await deep.id('@deep-foundation/core', 'Selector'); const SelectorInclude = await deep.id( - corePackageName, + '@deep-foundation/core', 'SelectorInclude' ); const SelectorExclude = await deep.id( - corePackageName, + '@deep-foundation/core', 'SelectorExclude' ); - const SelectorTree = await deep.id(corePackageName, 'SelectorTree'); - const containTree = await deep.id(corePackageName, 'containTree'); + const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); + const containTree = await deep.id('@deep-foundation/core', 'containTree'); const AllowInsertType = await deep.id( - corePackageName, + '@deep-foundation/core', 'AllowInsertType' ); const AllowDeleteType = await deep.id( - corePackageName, + '@deep-foundation/core', 'AllowDeleteType' ); const SelectorFilter = await deep.id( - corePackageName, + '@deep-foundation/core', 'SelectorFilter' ); - const Query = await deep.id(corePackageName, 'Query'); + const Query = await deep.id('@deep-foundation/core', 'Query'); const usersId = await deep.id('deep', 'users'); - const BasePayment = await deep.id(basePackageName, 'Payment'); - const BaseObject = await deep.id(basePackageName, 'Object'); - const BaseSum = await deep.id(basePackageName, 'Sum'); - const BasePay = await deep.id(basePackageName, 'Pay'); - const BaseUrl = await deep.id(basePackageName, 'Url'); - const BasePayed = await deep.id(basePackageName, 'Payed'); - const BaseCancelled = await deep.id(basePackageName, 'Cancelled'); - const BaseError = await deep.id(basePackageName, 'Error'); - const Storage = await deep.id(basePackageName, 'Storage'); + const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); + const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); + const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); + const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); + const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); + const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); + const BaseCancelled = await deep.id('@deep-foundation/payments', 'Cancelled'); + const BaseError = await deep.id('@deep-foundation/payments', 'Error'); + const Storage = await deep.id('@deep-foundation/payments', 'Storage'); const { data: [{ id: packageId }], } = await deep.insert({ type_id: Package, - string: { data: { value: packageName } }, + string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, in: { data: [ { @@ -782,7 +782,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { in: { data: [ { - type_id: await deep.id("${corePackageName}", 'Contain'), + type_id: await deep.id("${'@deep-foundation/core'}", 'Contain'), from_id: deep.linkId, }, ], @@ -931,20 +931,20 @@ async ( await deep.insert( { - type_id: await deep.id(corePackageName, 'Port'), + type_id: await deep.id('@deep-foundation/core', 'Port'), number: { data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, }, in: { data: { - type_id: await deep.id(corePackageName, 'RouterListening'), + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), from: { data: { - type_id: await deep.id(corePackageName, 'Router'), + type_id: await deep.id('@deep-foundation/core', 'Router'), in: { data: { type_id: await deep.id( - corePackageName, + '@deep-foundation/core', 'RouterStringUse' ), string: { @@ -955,21 +955,21 @@ async ( }, from: { data: { - type_id: await deep.id(corePackageName, 'Route'), + type_id: await deep.id('@deep-foundation/core', 'Route'), out: { data: { type_id: await deep.id( - corePackageName, + '@deep-foundation/core', 'HandleRoute' ), to: { data: { type_id: await deep.id( - corePackageName, + '@deep-foundation/core', 'Handler' ), from_id: await deep.id( - corePackageName, + '@deep-foundation/core', 'dockerSupportsJs' ), in: { @@ -1830,7 +1830,7 @@ async ( } }); if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const Payed = await deep.id(packageName, "Payed"); + const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); @@ -1889,7 +1889,7 @@ async ( }); console.log({mpUpCancelledPayment}); if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const Payed = await deep.id(packageName, "Payed"); + const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); } @@ -1949,7 +1949,7 @@ async ( } }); if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const Payed = await deep.id(packageName, "Payed"); + const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); From ab060ab98303cde4dc65cca9f599913b3f857609 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 13 Sep 2022 02:45:59 +0000 Subject: [PATCH 376/683] Update notification handler --- payments-tinkoff-c2b.cjs | 117 +++++++++++++++++++++------------------ 1 file changed, 64 insertions(+), 53 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 77b1053e..f69d1edc 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -997,7 +997,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { in: { data: [ { - type_id: await deep.id("@deep-foundation/payments", 'Contain'), + type_id: await deep.id("@deep-foundation/core", 'Contain'), from_id: deep.linkId, }, ], @@ -1074,7 +1074,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { in: { data: [ { - type_id: await deep.id("@deep-foundation/payments", 'Contain'), + type_id: await deep.id("@deep-foundation/core", 'Contain'), from_id: deep.linkId, }, ], @@ -1092,7 +1092,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { in: { data: [ { - type_id: await deep.id("@deep-foundation/payments", 'Contain'), + type_id: await deep.id("@deep-foundation/core", 'Contain'), from_id: deep.linkId, }, ], @@ -1170,17 +1170,21 @@ async ( const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider }); + console.log({tinkoffProviderLinkSelectQuery}); if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; + console.log({tinkoffProviderLink}); - const {data: [paymentLink], error: paymentLinkSelectQueryError} = await deep.select({ + const paymentLinkSelectQuery = await deep.select({ object: {value: {_contains: {orderId: req.body.OrderId}}} }); - console.log({paymentLink}); + console.log({paymentLinkSelectQuery}); if(paymentLinkSelectQueryError) { throw new Error(paymentLinkSelectQueryError.message); } + const paymentLink = paymentLinkSelectQuery.data[0]; + console.log({paymentLink}); if(!paymentLink) { throw new Error("The payment link associated with the order id " + req.body.OrderId + " is not found."); } - const {data: mpUpPayment, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ + const {data: mpUpPayment, error: mpUpPaymentSelectQueryError} = await deep.select({ up: { parent_id: { _eq: paymentLink.id }, tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } @@ -1196,22 +1200,26 @@ async ( if (req.body.Status === 'AUTHORIZED') { - const confirm = ${confirm.toString()}; + const confirm = ${confirm.toString()}; - const storageBusinessLinkSelectQuery = await deep.select({ - id: paymentLink.to_id - }); - if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} - const storageBusinessLink = storageBusinessLinkSelectQuery.data[0]; + const storageBusinessLinkSelectQuery = await deep.select({ + id: paymentLink.to_id + }); + console.log({storageBusinessLinkSelectQuery}); + if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} + const storageBusinessLink = storageBusinessLinkSelectQuery.data[0]; + console.log({storageBusinessLink}); - const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); - const tokenLinkSelectQuery = await deep.select({ - type_id: Token, - from_id: storageBusinessLink.id, - to_id: storageBusinessLink.id - }); - if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} - const tokenLink = tokenLinkSelectQuery.data[0]; + const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); + const tokenLinkSelectQuery = await deep.select({ + type_id: Token, + from_id: storageBusinessLink.id, + to_id: storageBusinessLink.id + }); + console.log({tokenLinkSelectQuery}); + if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} + const tokenLink = tokenLinkSelectQuery.data[0]; + console.log({tokenLink}); const confirmOptions = { TerminalKey: tokenLink.value.value, @@ -1219,7 +1227,7 @@ async ( Amount: req.body.Amount, // Receipt: req.body.Receipt, }; - console.log({confirmOptions}); + console.log({confirmOptions}); const confirmResult = await confirm(confirmOptions); console.log({confirmResult}); @@ -1234,7 +1242,7 @@ async ( in: { data: [ { - type_id: await deep.id("@deep-foundation/payments", 'Contain'), + type_id: await deep.id("@deep-foundation/core", 'Contain'), from_id: deep.linkId, }, ], @@ -1246,48 +1254,51 @@ async ( return confirmResult; } else if (req.body.Status === 'CONFIRMED') { - const {error: payedLinkInsertError, data: [payedLink]} = await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed")), - from_id: tinkoffProviderLink.id, + const payedLinkInsertQuery = await deep.insert({ + type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), + from_id: tinkoffProviderLink.id, to_id: payLink.id, in: { data: [ { - type_id: await deep.id("@deep-foundation/payments", 'Contain'), + type_id: await deep.id("@deep-foundation/core", 'Contain'), from_id: deep.linkId, }, ], }, }); - if(payedLinkInsertError) { throw new Error(payedLinkInsertError); } + console.log({payedLinkInsertQuery}) + if(payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } - const {error: paymentLinkValueUpdateQueryError} = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); - if(paymentLinkValueUpdateQueryError) { throw new Error(paymentLinkValueUpdateQueryError.message); } - - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - const storageClientLinkInsertQuery = await deep.insert({ - type_id: StorageClient, - string: {data: {value: req.body.CardId}} - }); - if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} - const storageClientLink = storageClientLinkInsertQuery.data[0]; - - const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); - const titleLinkInsertQuery = await deep.insert({ - type_id: Title, - string: {data: {value: req.body.Pan}} - }); - - const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); - const incomeLinkInsertQuery = await deep.insert({ - type_id: Income, - from_id: paymentLink.id, - to_id: storageClientLink.id - }); - if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} - const incomeLink = incomeLinkInsertQuery.data[0]; + const paymentLinkValueUpdateQuery = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: req.body.PaymentId}}, {table: "objects"}); + console.log({paymentLinkValueUpdateQuery}); + if(paymentLinkValueUpdateQuery.error) { throw new Error(paymentLinkValueUpdateQuery.error.message); } - return payedLink; + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + const storageClientLinkInsertQuery = await deep.insert({ + type_id: StorageClient, + string: {data: {value: req.body.CardId}} + }); + console.log({storageClientLinkInsertQuery}); + if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} + const storageClientLink = storageClientLinkInsertQuery.data[0]; + + const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); + const titleLinkInsertQuery = await deep.insert({ + type_id: Title, + string: {data: {value: req.body.Pan}} + }); + console.log({titleLinkInsertQuery}); + if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} + + const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); + const incomeLinkInsertQuery = await deep.insert({ + type_id: Income, + from_id: paymentLink.id, + to_id: storageClientLink.id + }); + console.log({incomeLinkInsertQuery}); + if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} } res.send('ok'); }; From 730f9df26f15594eb72f79ead79196d68849a0ff Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 13 Sep 2022 02:46:47 +0000 Subject: [PATCH 377/683] Format --- payments-tinkoff-c2b.cjs | 4538 +++++++++++++++++++------------------- 1 file changed, 2269 insertions(+), 2269 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index f69d1edc..10047a4b 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -7,8 +7,8 @@ const dotenvExpand = require('dotenv-expand'); const { generateApolloClient } = require('@deep-foundation/hasura/client'); const { DeepClient } = require('@deep-foundation/deeplinks/imports/client'); const { - minilinks, - Link, + minilinks, + Link, } = require('@deep-foundation/deeplinks/imports/minilinks'); const puppeteer = require('puppeteer'); const crypto = require('crypto'); @@ -25,1011 +25,1011 @@ const PRICE = 5500; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const payInBrowser = async ({ page, browser, url }) => { - await page.goto(url, { waitUntil: 'networkidle2' }); - await sleep(5000); - const oldForm = await page.evaluate(() => { - return !!document.querySelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - }); - if (oldForm) { - console.log('OLD FORM!!!!!!!'); - // Старая форма используется на тестовом сервере - const cvc1 = await page.evaluate(() => { - return !!document.querySelector( - 'button[automation-id="pay-card__submit"]' - ); - }); - if (cvc1) { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_TEST_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_TEST_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-card__submit"]'); // submit button - } else { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_E2C_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_E2C_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-wallet__submit"]'); // submit button - await sleep(300); - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(1000); - } - // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен - await sleep(1000); - } else { - console.log('NEW FORM!!!!!!!'); - await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number - await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date - await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code - await page.click('button[type=submit]'); // submit button - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(3000); - } - await browser.close(); + await page.goto(url, { waitUntil: 'networkidle2' }); + await sleep(5000); + const oldForm = await page.evaluate(() => { + return !!document.querySelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + }); + if (oldForm) { + console.log('OLD FORM!!!!!!!'); + // Старая форма используется на тестовом сервере + const cvc1 = await page.evaluate(() => { + return !!document.querySelector( + 'button[automation-id="pay-card__submit"]' + ); + }); + if (cvc1) { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_TEST_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_TEST_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-card__submit"]'); // submit button + } else { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_E2C_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_E2C_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-wallet__submit"]'); // submit button + await sleep(300); + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(1000); + } + // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен + await sleep(1000); + } else { + console.log('NEW FORM!!!!!!!'); + await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number + await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date + await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code + await page.click('button[type=submit]'); // submit button + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(3000); + } + await browser.close(); }; const f = async () => { - const apolloClient = generateApolloClient({ - path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE - ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') - ? false - : true, - // admin token in prealpha deep secret key - // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', - }); - - const unloginedDeep = new DeepClient({ apolloClient }); - - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - - const _generateToken = (dataWithPassword) => { - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => `${acc}${item}`, ''); - console.log({ dataString }); - const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - console.log({ hash }); - return hash; - }; - - const generateToken = (data) => { - const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { - ...restData, - Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, - }; - console.log({ dataWithPassword }); - return _generateToken(dataWithPassword); - }; - const generateTokenString = generateToken.toString() - .replace( - 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', - `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` - ); - console.log({ generateTokenString }); - - const getUrl = (method) => - `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; - getUrlString = getUrl.toString() - .replace( - '${process.env.PAYMENT_EACQ_AND_TEST_URL}', - process.env.PAYMENT_EACQ_AND_TEST_URL - ); - console.log({ getUrlString }); - - const getMarketUrl = (method) => - `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; - - const getState = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetState'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const checkOrder = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('CheckOrder'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCardList = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCardList'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode || '0'); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const init = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Init'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const cancel = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Cancel'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const resend = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Resend'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const charge = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Charge'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const addCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('AddCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const removeCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('RemoveCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getBankPaymentId = async (orderId) => { - const checkOrderOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: orderId, - }; - - const checkOrderResult = await checkOrder(checkOrderOptions); - expect(checkOrderResult.error).to.equal(undefined); - - console.log({ checkOrderResponse: checkOrderResult }); - - const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; - - console.log({ paymentId: bankPaymentId }); - return bankPaymentId; - }; - - const guest = await unloginedDeep.guest(); - const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); - const admin = await guestDeep.login({ - linkId: await guestDeep.id('deep', 'admin'), - }); - const deep = new DeepClient({ deep: guestDeep, ...admin }); - - const User = await deep.id('@deep-foundation/core', 'User'); - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); - const Join = await deep.id('@deep-foundation/core', 'Join'); - const Contain = await deep.id('@deep-foundation/core', 'Contain'); - const Value = await deep.id('@deep-foundation/core', 'Value'); - const String = await deep.id('@deep-foundation/core', 'String'); - const Package = await deep.id('@deep-foundation/core', 'Package'); - - const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); - const dockerSupportsJs = await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ); - const Handler = await deep.id('@deep-foundation/core', 'Handler'); - const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); - const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); - - const Tree = await deep.id('@deep-foundation/core', 'Tree'); - const TreeIncludeNode = await deep.id( - '@deep-foundation/core', - 'TreeIncludeNode' - ); - const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); - const TreeIncludeDown = await deep.id( - '@deep-foundation/core', - 'TreeIncludeDown' - ); - - const Rule = await deep.id('@deep-foundation/core', 'Rule'); - const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); - const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); - const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); - const Selector = await deep.id('@deep-foundation/core', 'Selector'); - const SelectorInclude = await deep.id( - '@deep-foundation/core', - 'SelectorInclude' - ); - const SelectorExclude = await deep.id( - '@deep-foundation/core', - 'SelectorExclude' - ); - const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); - const containTree = await deep.id('@deep-foundation/core', 'containTree'); - const AllowInsertType = await deep.id( - '@deep-foundation/core', - 'AllowInsertType' - ); - const AllowDeleteType = await deep.id( - '@deep-foundation/core', - 'AllowDeleteType' - ); - const SelectorFilter = await deep.id( - '@deep-foundation/core', - 'SelectorFilter' - ); - const Query = await deep.id('@deep-foundation/core', 'Query'); - const usersId = await deep.id('deep', 'users'); - - const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); - const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); - const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); - const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); - const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); - const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); - const BaseCancelled = await deep.id('@deep-foundation/payments', 'Cancelled'); - const BaseError = await deep.id('@deep-foundation/payments', 'Error'); - const Storage = await deep.id('@deep-foundation/payments', 'Storage'); - - const { - data: [{ id: packageId }], - } = await deep.insert({ - type_id: Package, - string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - out: { - data: [ - { - type_id: Join, - to_id: await deep.id('deep', 'users', 'packages'), - }, - { - type_id: Join, - to_id: await deep.id('deep', 'admin'), - }, - ], - }, - }); - - console.log({ packageId }); - - const { - data: [{ id: SumProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'SumProvider' } }, - }, - }, - }); - - console.log({ SumProvider: SumProvider }); - - const { - data: [{ id: TinkoffProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'TinkoffProvider' } }, - }, - }, - }); - - console.log({ TinkoffProvider }); - - const { - data: [{ id: Payment }], - } = await deep.insert({ - type_id: BasePayment, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Payment' } }, - }, - }, - }); - - console.log({ Payment: Payment }); - - const { - data: [{ id: Object }], - } = await deep.insert({ - type_id: BaseObject, - from_id: Payment, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Object' } }, - }, - }, - }); - - console.log({ Object: Object }); - - const { - data: [{ id: Sum }], - } = await deep.insert({ - type_id: BaseSum, - from_id: Any, - to_id: Payment, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Sum' } }, - }, - }, - }); - - console.log({ Sum: Sum }); - - const { - data: [{ id: Pay }], - } = await deep.insert({ - type_id: BasePay, - from_id: User, - to_id: Sum, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Pay' } }, - }, - }, - }); - - console.log({ Pay: Pay }); - - const { - data: [{ id: Url }], - } = await deep.insert({ - type_id: BaseUrl, - from_id: TinkoffProvider, - to_id: Pay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Url' } }, - }, - }, - }); - - console.log({ Url: Url }); - - const { - data: [{ id: Payed }], - } = await deep.insert({ - type_id: BasePayed, - from_id: TinkoffProvider, - to_id: Pay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Payed' } }, - }, - }, - }); - - console.log({ Payed: Payed }); - - const { - data: [{ id: Error }], - } = await deep.insert({ - type_id: BaseError, - from_id: TinkoffProvider, - to_id: Pay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Error' } }, - }, - }, - }); - - console.log({ Error: Error }); - - // TODO: Use BaseCancelled - const { - data: [{ id: Cancelled }], - } = await deep.insert({ - type_id: BaseCancelled, - from_id: TinkoffProvider, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Cancelled' } }, - }, - }, - }); - - console.log({ Cancelled }); - - const { - data: [{ id: paymentTreeId }], - } = await deep.insert({ - type_id: Tree, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'paymentTree' } }, - }, - }, - out: { - data: [ - { - type_id: TreeIncludeNode, - to_id: Payment, - }, - { - type_id: TreeIncludeUp, - to_id: Sum, - }, - { - type_id: TreeIncludeDown, - to_id: Object, - }, - { - type_id: TreeIncludeUp, - to_id: Error, - }, - { - type_id: TreeIncludeUp, - to_id: Payed, - }, - { - type_id: TreeIncludeUp, - to_id: Cancelled, - }, - { - type_id: TreeIncludeUp, - to_id: Pay, - }, - { - type_id: TreeIncludeUp, - to_id: Url, - }, - ], - }, - }); - - const { - data: [{ id: StorageBusiness }], - } = await deep.insert({ - type_id: Storage, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'StorageBusiness' } }, - }, - }, - }); - - const { - data: [{ id: Token }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Token' } }, - }, - }, - }); - - const { - data: [{ id: StorageClient }], - } = await deep.insert({ - type_id: Storage, - from_id: Payment, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'StorageClient' } }, - }, - }, - }); - - const { - data: [{ id: Title }], - } = await deep.insert({ - type_id: Type, - from_id: StorageClient, - to_id: SyncTextFile, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'StorageClient' } }, - }, - }, - }); - - const handlersDependencies = ` - const crypto = require('crypto'); + const apolloClient = generateApolloClient({ + path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE + ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') + ? false + : true, + // admin token in prealpha deep secret key + // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', + }); + + const unloginedDeep = new DeepClient({ apolloClient }); + + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + + const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + console.log({ dataString }); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + console.log({ hash }); + return hash; + }; + + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + ...restData, + Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, + }; + console.log({ dataWithPassword }); + return _generateToken(dataWithPassword); + }; + const generateTokenString = generateToken.toString() + .replace( + 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', + `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` + ); + console.log({ generateTokenString }); + + const getUrl = (method) => + `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; + getUrlString = getUrl.toString() + .replace( + '${process.env.PAYMENT_EACQ_AND_TEST_URL}', + process.env.PAYMENT_EACQ_AND_TEST_URL + ); + console.log({ getUrlString }); + + const getMarketUrl = (method) => + `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; + + const getState = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetState'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const checkOrder = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('CheckOrder'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getCardList = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCardList'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode || '0'); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const init = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Init'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const cancel = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Cancel'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const resend = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Resend'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const charge = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Charge'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const addCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('AddCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const removeCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('RemoveCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getBankPaymentId = async (orderId) => { + const checkOrderOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: orderId, + }; + + const checkOrderResult = await checkOrder(checkOrderOptions); + expect(checkOrderResult.error).to.equal(undefined); + + console.log({ checkOrderResponse: checkOrderResult }); + + const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; + + console.log({ paymentId: bankPaymentId }); + return bankPaymentId; + }; + + const guest = await unloginedDeep.guest(); + const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); + const admin = await guestDeep.login({ + linkId: await guestDeep.id('deep', 'admin'), + }); + const deep = new DeepClient({ deep: guestDeep, ...admin }); + + const User = await deep.id('@deep-foundation/core', 'User'); + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + const Join = await deep.id('@deep-foundation/core', 'Join'); + const Contain = await deep.id('@deep-foundation/core', 'Contain'); + const Value = await deep.id('@deep-foundation/core', 'Value'); + const String = await deep.id('@deep-foundation/core', 'String'); + const Package = await deep.id('@deep-foundation/core', 'Package'); + + const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); + const dockerSupportsJs = await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ); + const Handler = await deep.id('@deep-foundation/core', 'Handler'); + const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); + const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); + + const Tree = await deep.id('@deep-foundation/core', 'Tree'); + const TreeIncludeNode = await deep.id( + '@deep-foundation/core', + 'TreeIncludeNode' + ); + const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); + const TreeIncludeDown = await deep.id( + '@deep-foundation/core', + 'TreeIncludeDown' + ); + + const Rule = await deep.id('@deep-foundation/core', 'Rule'); + const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); + const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); + const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); + const Selector = await deep.id('@deep-foundation/core', 'Selector'); + const SelectorInclude = await deep.id( + '@deep-foundation/core', + 'SelectorInclude' + ); + const SelectorExclude = await deep.id( + '@deep-foundation/core', + 'SelectorExclude' + ); + const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); + const containTree = await deep.id('@deep-foundation/core', 'containTree'); + const AllowInsertType = await deep.id( + '@deep-foundation/core', + 'AllowInsertType' + ); + const AllowDeleteType = await deep.id( + '@deep-foundation/core', + 'AllowDeleteType' + ); + const SelectorFilter = await deep.id( + '@deep-foundation/core', + 'SelectorFilter' + ); + const Query = await deep.id('@deep-foundation/core', 'Query'); + const usersId = await deep.id('deep', 'users'); + + const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); + const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); + const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); + const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); + const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); + const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); + const BaseCancelled = await deep.id('@deep-foundation/payments', 'Cancelled'); + const BaseError = await deep.id('@deep-foundation/payments', 'Error'); + const Storage = await deep.id('@deep-foundation/payments', 'Storage'); + + const { + data: [{ id: packageId }], + } = await deep.insert({ + type_id: Package, + string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + out: { + data: [ + { + type_id: Join, + to_id: await deep.id('deep', 'users', 'packages'), + }, + { + type_id: Join, + to_id: await deep.id('deep', 'admin'), + }, + ], + }, + }); + + console.log({ packageId }); + + const { + data: [{ id: SumProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'SumProvider' } }, + }, + }, + }); + + console.log({ SumProvider: SumProvider }); + + const { + data: [{ id: TinkoffProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'TinkoffProvider' } }, + }, + }, + }); + + console.log({ TinkoffProvider }); + + const { + data: [{ id: Payment }], + } = await deep.insert({ + type_id: BasePayment, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Payment' } }, + }, + }, + }); + + console.log({ Payment: Payment }); + + const { + data: [{ id: Object }], + } = await deep.insert({ + type_id: BaseObject, + from_id: Payment, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Object' } }, + }, + }, + }); + + console.log({ Object: Object }); + + const { + data: [{ id: Sum }], + } = await deep.insert({ + type_id: BaseSum, + from_id: Any, + to_id: Payment, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Sum' } }, + }, + }, + }); + + console.log({ Sum: Sum }); + + const { + data: [{ id: Pay }], + } = await deep.insert({ + type_id: BasePay, + from_id: User, + to_id: Sum, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Pay' } }, + }, + }, + }); + + console.log({ Pay: Pay }); + + const { + data: [{ id: Url }], + } = await deep.insert({ + type_id: BaseUrl, + from_id: TinkoffProvider, + to_id: Pay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Url' } }, + }, + }, + }); + + console.log({ Url: Url }); + + const { + data: [{ id: Payed }], + } = await deep.insert({ + type_id: BasePayed, + from_id: TinkoffProvider, + to_id: Pay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Payed' } }, + }, + }, + }); + + console.log({ Payed: Payed }); + + const { + data: [{ id: Error }], + } = await deep.insert({ + type_id: BaseError, + from_id: TinkoffProvider, + to_id: Pay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Error' } }, + }, + }, + }); + + console.log({ Error: Error }); + + // TODO: Use BaseCancelled + const { + data: [{ id: Cancelled }], + } = await deep.insert({ + type_id: BaseCancelled, + from_id: TinkoffProvider, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Cancelled' } }, + }, + }, + }); + + console.log({ Cancelled }); + + const { + data: [{ id: paymentTreeId }], + } = await deep.insert({ + type_id: Tree, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'paymentTree' } }, + }, + }, + out: { + data: [ + { + type_id: TreeIncludeNode, + to_id: Payment, + }, + { + type_id: TreeIncludeUp, + to_id: Sum, + }, + { + type_id: TreeIncludeDown, + to_id: Object, + }, + { + type_id: TreeIncludeUp, + to_id: Error, + }, + { + type_id: TreeIncludeUp, + to_id: Payed, + }, + { + type_id: TreeIncludeUp, + to_id: Cancelled, + }, + { + type_id: TreeIncludeUp, + to_id: Pay, + }, + { + type_id: TreeIncludeUp, + to_id: Url, + }, + ], + }, + }); + + const { + data: [{ id: StorageBusiness }], + } = await deep.insert({ + type_id: Storage, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'StorageBusiness' } }, + }, + }, + }); + + const { + data: [{ id: Token }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Token' } }, + }, + }, + }); + + const { + data: [{ id: StorageClient }], + } = await deep.insert({ + type_id: Storage, + from_id: Payment, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'StorageClient' } }, + }, + }, + }); + + const { + data: [{ id: Title }], + } = await deep.insert({ + type_id: Type, + from_id: StorageClient, + to_id: SyncTextFile, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'StorageClient' } }, + }, + }, + }); + + const handlersDependencies = ` + const crypto = require('crypto'); const axios = require('axios'); const errorsConverter = ${JSON.stringify(errorsConverter)}; const getError = ${getError.toString()}; const getUrl = ${getUrlString}; const _generateToken = ${_generateToken.toString()}; const generateToken = ${generateTokenString}; - `; - console.log({ handlersDependencies }); - const payInsertHandler = ` + `; + console.log({ handlersDependencies }); + const payInsertHandler = ` async ({ deep, require, data: { newLink: payLink } }) => { - ${handlersDependencies} + ${handlersDependencies} - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: TinkoffProvider - }); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: TinkoffProvider + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; - const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ + const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ down: { link_id: { _eq: payLink.id }, tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") }, }, }); console.log({mpDownPay}); - if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } + if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } - const Payment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); - const paymentLink = mpDownPay.find(link => link.type_id === Payment); - console.log({paymentLink}); - if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found."); + const Payment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); + const paymentLink = mpDownPay.find(link => link.type_id === Payment); + console.log({paymentLink}); + if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found."); - const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); + const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); const sumLink = mpDownPay.find(link => link.type_id === Sum); console.log({sumLink}); - if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); - - const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); - - const fromLinkOfPaymentQuery = await deep.select({ - id: paymentLink.from_id - }); - if(fromLinkOfPaymentQuery.error) { throw new Error(fromLinkOfPaymentQuery.error.message); } - const fromLinkOfPayment = fromLinkOfPaymentQuery.data[0]; - console.log({fromLinkOfPayment}); - - const toLinkOfPaymentQuery = await deep.select({ - id: paymentLink.to_id - }); - if(toLinkOfPaymentQuery.error) { throw new Error(toLinkOfPaymentQuery.error.message); } - const toLinkOfPayment = toLinkOfPaymentQuery.data[0]; - console.log({toLinkOfPayment}); - - const isCancellingPay = fromLinkOfPaymentQuery.data.length > 0 && toLinkOfPaymentQuery.data.length > 0 && (fromLinkOfPaymentQuery.data[0].type_id === paymentLink.type_id) && (toLinkOfPaymentQuery.data[0].type_id === await deep.id("@deep-foundation/core", "User")); - console.log({isCancellingPay}); - if(isCancellingPay) { - const cancel = ${cancel.toString()}; - - const cancellingPaymentLink = fromLinkOfPayment; - - const cancelledPaymentLink = fromLinkOfPayment; - - await deep.insert({link_id: 1, value: cancelledPaymentLink.value.value}, {table: "objects"}); - - const cancelOptions = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentId: cancelledPaymentLink.value.value.bankPaymentId, - Amount: sumLink.value.value, - }; - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - console.log({cancelResult}); - if (cancelResult.error) { - const errorMessage = "Could not cancel the order. " + JSON.stringify(cancelResult.error); - - const {error: errorLinkInsertQueryError} = await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), - from_id: tinkoffProviderLink.id, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - in: { - data: [ - { - type_id: await deep.id("@deep-foundation/core", 'Contain'), - from_id: deep.linkId, - }, - ], - }, - }); - if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } - throw new Error(errorMessage); - } - - const {error: payedLinkInsertQueryError} = await deep.insert({ - type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), - from_id: tinkoffProviderLink.id, - to_id: payLink.id - }); - if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError.message); } - - return cancelResult; - } + if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); + + const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); + + const fromLinkOfPaymentQuery = await deep.select({ + id: paymentLink.from_id + }); + if(fromLinkOfPaymentQuery.error) { throw new Error(fromLinkOfPaymentQuery.error.message); } + const fromLinkOfPayment = fromLinkOfPaymentQuery.data[0]; + console.log({fromLinkOfPayment}); + + const toLinkOfPaymentQuery = await deep.select({ + id: paymentLink.to_id + }); + if(toLinkOfPaymentQuery.error) { throw new Error(toLinkOfPaymentQuery.error.message); } + const toLinkOfPayment = toLinkOfPaymentQuery.data[0]; + console.log({toLinkOfPayment}); + + const isCancellingPay = fromLinkOfPaymentQuery.data.length > 0 && toLinkOfPaymentQuery.data.length > 0 && (fromLinkOfPaymentQuery.data[0].type_id === paymentLink.type_id) && (toLinkOfPaymentQuery.data[0].type_id === await deep.id("@deep-foundation/core", "User")); + console.log({isCancellingPay}); + if(isCancellingPay) { + const cancel = ${cancel.toString()}; + + const cancellingPaymentLink = fromLinkOfPayment; + + const cancelledPaymentLink = fromLinkOfPayment; + + await deep.insert({link_id: 1, value: cancelledPaymentLink.value.value}, {table: "objects"}); + + const cancelOptions = { + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + PaymentId: cancelledPaymentLink.value.value.bankPaymentId, + Amount: sumLink.value.value, + }; + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + console.log({cancelResult}); + if (cancelResult.error) { + const errorMessage = "Could not cancel the order. " + JSON.stringify(cancelResult.error); + + const {error: errorLinkInsertQueryError} = await deep.insert({ + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), + from_id: tinkoffProviderLink.id, + to_id: payLink.id, + string: { data: { value: errorMessage } }, + in: { + data: [ + { + type_id: await deep.id("@deep-foundation/core", 'Contain'), + from_id: deep.linkId, + }, + ], + }, + }); + if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } + throw new Error(errorMessage); + } + + const {error: payedLinkInsertQueryError} = await deep.insert({ + type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), + from_id: tinkoffProviderLink.id, + to_id: payLink.id + }); + if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError.message); } + + return cancelResult; + } - const init = ${init.toString()}; - - const storageBusinessLink = toLinkOfPayment; - console.log({storageBusinessLink}); - const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); - const tokenLinkSelectQuery = await deep.select({ - type_id: Token, - from_id: storageBusinessLink.id, - to_id: storageBusinessLink.id - }); - if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} - const tokenLink = tokenLinkSelectQuery.data[0]; - console.log({tokenLink}); + const init = ${init.toString()}; + + const storageBusinessLink = toLinkOfPayment; + console.log({storageBusinessLink}); + const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); + const tokenLinkSelectQuery = await deep.select({ + type_id: Token, + from_id: storageBusinessLink.id, + to_id: storageBusinessLink.id + }); + if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} + const tokenLink = tokenLinkSelectQuery.data[0]; + console.log({tokenLink}); const options = { TerminalKey: tokenLink.value.value, @@ -1065,7 +1065,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { let initResult = await init(options); console.log({initResult}); if (initResult.error) { - const errorMessage = "Could not initialize the order. " + initResult.error; + const errorMessage = "Could not initialize the order. " + initResult.error; const {error: errorLinkInsertQueryError} = await deep.insert({ type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), from_id: tinkoffProviderLink.id, @@ -1080,82 +1080,82 @@ async ({ deep, require, data: { newLink: payLink } }) => { ], }, }); - if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } - throw new Error(errorMessage); + if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } + throw new Error(errorMessage); } - const {error: urlLinkInsertQueryError} = await deep.insert({ - type_id: Url, - from_id: tinkoffProviderLink.id, - to_id: payLink.id, - string: { data: { value: initResult.response.PaymentURL } }, - in: { - data: [ - { - type_id: await deep.id("@deep-foundation/core", 'Contain'), - from_id: deep.linkId, - }, - ], - }, - }); - if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } - - const {error: paymentLinkValueUpdateQueryError} = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); - if(paymentLinkValueUpdateQueryError) { throw new Error(paymentLinkValueUpdateQueryError.message); } + const {error: urlLinkInsertQueryError} = await deep.insert({ + type_id: Url, + from_id: tinkoffProviderLink.id, + to_id: payLink.id, + string: { data: { value: initResult.response.PaymentURL } }, + in: { + data: [ + { + type_id: await deep.id("@deep-foundation/core", 'Contain'), + from_id: deep.linkId, + }, + ], + }, + }); + if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } + + const {error: paymentLinkValueUpdateQueryError} = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); + if(paymentLinkValueUpdateQueryError) { throw new Error(paymentLinkValueUpdateQueryError.message); } - return initResult; + return initResult; }; `; - console.log({ payInsertHandler }); - - const { - data: [{ id: payInsertHandlerId }], - } = await deep.insert({ - type_id: SyncTextFile, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandlerFile' } }, - }, - { - from_id: dockerSupportsJs, - type_id: Handler, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandler' } }, - }, - { - type_id: HandleInsert, - from_id: Pay, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandle' } }, - }, - ], - }, - }, - ], - }, - }, - ], - }, - string: { - data: { - value: payInsertHandler, - }, - }, - }); - console.log({ payInsertHandlerId }); - - const tinkoffNotificationHandler = ` + console.log({ payInsertHandler }); + + const { + data: [{ id: payInsertHandlerId }], + } = await deep.insert({ + type_id: SyncTextFile, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandlerFile' } }, + }, + { + from_id: dockerSupportsJs, + type_id: Handler, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandler' } }, + }, + { + type_id: HandleInsert, + from_id: Pay, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandle' } }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + string: { + data: { + value: payInsertHandler, + }, + }, + }); + console.log({ payInsertHandlerId }); + + const tinkoffNotificationHandler = ` async ( req, res, @@ -1163,63 +1163,63 @@ async ( { deep, require, gql } ) => { ${handlersDependencies} - const reqBody = req.body; - console.log({reqBody}); - - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: TinkoffProvider - }); - console.log({tinkoffProviderLinkSelectQuery}); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; - console.log({tinkoffProviderLink}); - - const paymentLinkSelectQuery = await deep.select({ - object: {value: {_contains: {orderId: req.body.OrderId}}} - }); - console.log({paymentLinkSelectQuery}); - if(paymentLinkSelectQueryError) { throw new Error(paymentLinkSelectQueryError.message); } - const paymentLink = paymentLinkSelectQuery.data[0]; - console.log({paymentLink}); - if(!paymentLink) { throw new Error("The payment link associated with the order id " + req.body.OrderId + " is not found."); } - - const {data: mpUpPayment, error: mpUpPaymentSelectQueryError} = await deep.select({ - up: { - parent_id: { _eq: paymentLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } - } - }); - console.log({mpUpPayment}); - if(mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } - - const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); - const payLink = mpUpPayment.find(link => link.type_id === Pay); - console.log({payLink}); - if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } + const reqBody = req.body; + console.log({reqBody}); + + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: TinkoffProvider + }); + console.log({tinkoffProviderLinkSelectQuery}); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; + console.log({tinkoffProviderLink}); + + const paymentLinkSelectQuery = await deep.select({ + object: {value: {_contains: {orderId: req.body.OrderId}}} + }); + console.log({paymentLinkSelectQuery}); + if(paymentLinkSelectQueryError) { throw new Error(paymentLinkSelectQueryError.message); } + const paymentLink = paymentLinkSelectQuery.data[0]; + console.log({paymentLink}); + if(!paymentLink) { throw new Error("The payment link associated with the order id " + req.body.OrderId + " is not found."); } + + const {data: mpUpPayment, error: mpUpPaymentSelectQueryError} = await deep.select({ + up: { + parent_id: { _eq: paymentLink.id }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } + } + }); + console.log({mpUpPayment}); + if(mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } + + const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + const payLink = mpUpPayment.find(link => link.type_id === Pay); + console.log({payLink}); + if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } if (req.body.Status === 'AUTHORIZED') { - const confirm = ${confirm.toString()}; - - const storageBusinessLinkSelectQuery = await deep.select({ - id: paymentLink.to_id - }); - console.log({storageBusinessLinkSelectQuery}); - if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} - const storageBusinessLink = storageBusinessLinkSelectQuery.data[0]; - console.log({storageBusinessLink}); - - const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); - const tokenLinkSelectQuery = await deep.select({ - type_id: Token, - from_id: storageBusinessLink.id, - to_id: storageBusinessLink.id - }); - console.log({tokenLinkSelectQuery}); - if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} - const tokenLink = tokenLinkSelectQuery.data[0]; - console.log({tokenLink}); + const confirm = ${confirm.toString()}; + + const storageBusinessLinkSelectQuery = await deep.select({ + id: paymentLink.to_id + }); + console.log({storageBusinessLinkSelectQuery}); + if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} + const storageBusinessLink = storageBusinessLinkSelectQuery.data[0]; + console.log({storageBusinessLink}); + + const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); + const tokenLinkSelectQuery = await deep.select({ + type_id: Token, + from_id: storageBusinessLink.id, + to_id: storageBusinessLink.id + }); + console.log({tokenLinkSelectQuery}); + if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} + const tokenLink = tokenLinkSelectQuery.data[0]; + console.log({tokenLink}); const confirmOptions = { TerminalKey: tokenLink.value.value, @@ -1227,36 +1227,36 @@ async ( Amount: req.body.Amount, // Receipt: req.body.Receipt, }; - console.log({confirmOptions}); + console.log({confirmOptions}); const confirmResult = await confirm(confirmOptions); - console.log({confirmResult}); - - if (confirmResult.error) { - const errorMessage = "Could not confirm the pay. " + confirmResult.error; - const {errorLinkInsertError} = await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), - from_id: tinkoffProviderLink.id, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - in: { - data: [ - { - type_id: await deep.id("@deep-foundation/core", 'Contain'), - from_id: deep.linkId, - }, - ], - }, - }); - if(errorLinkInsertError) { throw new Error(errorLinkInsertError); } - throw new Error(errorMessage); - } - - return confirmResult; + console.log({confirmResult}); + + if (confirmResult.error) { + const errorMessage = "Could not confirm the pay. " + confirmResult.error; + const {errorLinkInsertError} = await deep.insert({ + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), + from_id: tinkoffProviderLink.id, + to_id: payLink.id, + string: { data: { value: errorMessage } }, + in: { + data: [ + { + type_id: await deep.id("@deep-foundation/core", 'Contain'), + from_id: deep.linkId, + }, + ], + }, + }); + if(errorLinkInsertError) { throw new Error(errorLinkInsertError); } + throw new Error(errorMessage); + } + + return confirmResult; } else if (req.body.Status === 'CONFIRMED') { const payedLinkInsertQuery = await deep.insert({ type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), - from_id: tinkoffProviderLink.id, + from_id: tinkoffProviderLink.id, to_id: payLink.id, in: { data: [ @@ -1267,1144 +1267,1144 @@ async ( ], }, }); - console.log({payedLinkInsertQuery}) - if(payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } - - const paymentLinkValueUpdateQuery = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: req.body.PaymentId}}, {table: "objects"}); - console.log({paymentLinkValueUpdateQuery}); - if(paymentLinkValueUpdateQuery.error) { throw new Error(paymentLinkValueUpdateQuery.error.message); } - - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - const storageClientLinkInsertQuery = await deep.insert({ - type_id: StorageClient, - string: {data: {value: req.body.CardId}} - }); - console.log({storageClientLinkInsertQuery}); - if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} - const storageClientLink = storageClientLinkInsertQuery.data[0]; - - const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); - const titleLinkInsertQuery = await deep.insert({ - type_id: Title, - string: {data: {value: req.body.Pan}} - }); - console.log({titleLinkInsertQuery}); - if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} - - const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); - const incomeLinkInsertQuery = await deep.insert({ - type_id: Income, - from_id: paymentLink.id, - to_id: storageClientLink.id - }); - console.log({incomeLinkInsertQuery}); - if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} + console.log({payedLinkInsertQuery}) + if(payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } + + const paymentLinkValueUpdateQuery = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: req.body.PaymentId}}, {table: "objects"}); + console.log({paymentLinkValueUpdateQuery}); + if(paymentLinkValueUpdateQuery.error) { throw new Error(paymentLinkValueUpdateQuery.error.message); } + + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + const storageClientLinkInsertQuery = await deep.insert({ + type_id: StorageClient, + string: {data: {value: req.body.CardId}} + }); + console.log({storageClientLinkInsertQuery}); + if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} + const storageClientLink = storageClientLinkInsertQuery.data[0]; + + const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); + const titleLinkInsertQuery = await deep.insert({ + type_id: Title, + string: {data: {value: req.body.Pan}} + }); + console.log({titleLinkInsertQuery}); + if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} + + const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); + const incomeLinkInsertQuery = await deep.insert({ + type_id: Income, + from_id: paymentLink.id, + to_id: storageClientLink.id + }); + console.log({incomeLinkInsertQuery}); + if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} } res.send('ok'); }; `; - console.log({ tinkoffNotificationHandler }); - - await deep.insert( - { - type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { - data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, - }, - in: { - data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), - in: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'RouterStringUse' - ), - string: { - data: { - value: - process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, - }, - }, - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), - out: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'HandleRoute' - ), - to: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'Handler' - ), - from_id: await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ), - in: { - data: { - type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - to: { - data: { - type_id: SyncTextFile, - string: { - data: { - value: tinkoffNotificationHandler, - }, - }, - in: { - data: { - type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - } - ); - - const callTests = async () => { - console.log('callTests-start'); - - console.log({ paymentTreeId }); - - const { - data: [{ id: tinkoffProviderId }], - } = await deep.insert({ - type_id: TinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ tinkoffProviderId }); - - const { - data: [{ id: sumProviderId }], - } = await deep.insert({ - type_id: SumProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ sumProviderId }); - - const { - data: [storageBusinessLink], - } = await deep.insert({ - type_id: StorageBusiness, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ storageBusinessLink }); - - const { - data: [{ id: tokenId }], - } = await deep.insert({ - type_id: Token, - from_id: storageBusinessLink.id, - to_id: storageBusinessLink.id, - string: {data: {value: process.env.PAYMENT_TEST_TERMINAL_KEY}}, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ token: tokenId }); - - const { - data: [{ id: Product }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ Product }); - - const { - data: [{ id: productId }], - } = await deep.insert({ - type_id: Product, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ product: productId }); - - const deleteTestLinks = async () => { - console.log('deleteTestLinks-start'); - const { data: testLinks } = await deep.select({ - type_id: { - _in: [ Payment, Object, Sum, Pay, Url, Payed, Error, Cancelled ], - }, - }); - for (let i = 0; i < testLinks.length; i++) { - const { id } = testLinks[i]; - await deep.delete({ id: id }); - } - console.log('deleteTestLinks-end'); - }; - - const callRealizationTests = async () => { - const testInit = async () => { - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - Amount: PRICE, - Description: 'Test shopping', - CustomerKey: deep.linkId, - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // }, - }; - - const initResult = await init(initOptions); - - expect(initResult.error).to.equal(undefined); - - return initResult; - }; - - const testConfirm = async () => { - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // }, - }; - - const initResult = await init(initOptions); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const confirmOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const confirmResult = await confirm(confirmOptions); - - expect(confirmResult.error).to.equal(undefined); - expect(confirmResult.response.Status).to.equal('CONFIRMED'); - - return confirmResult; - }; - - const testCancel = async () => { - console.log('testCancel-start'); - const testCancelAfterPayBeforeConfirmFullPrice = async () => { - console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - Amount: PRICE, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: sum, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // } - }; - - console.log({ options: initOptions }); - - let initResult = await init(initOptions); - - console.log({ initResult }); - - expect(initResult.error).to.equal(undefined); - - const url = initResult.response.PaymentURL; - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - await payInBrowser({ - browser, - page, - url, - }); - - const bankPaymentId = initResult.response.PaymentId; - - const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, - }; - - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - - console.log({ cancelResponse: cancelResult }); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('REVERSED'); - console.log('testCanselAfterPayBeforeConfirmFullPrice-end'); - }; - - const testCancelAfterPayBeforeConfirmCustomPriceX2 = async () => { - console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-start'); - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - Amount: PRICE, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: sum, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // } - }; - - console.log({ options: initOptions }); - - let initResult = await init(initOptions); - - console.log({ initResult }); - - expect(initResult.error).to.equal(undefined); - - const url = initResult.response.PaymentURL; - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, - }); - - const bankPaymentId = initResult.response.PaymentId; - - const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: Math.floor(PRICE / 3), - }; - - console.log({ cancelOptions }); - - { - const cancelResult = await cancel(cancelOptions); - - console.log({ cancelResponse: cancelResult }); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); - } - { - const cancelResult = await cancel(cancelOptions); - - console.log({ cancelResponse: cancelResult }); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); - } - console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-end'); - }; - - const testCancelAfterPayAfterConfirmFullPrice = async () => { - console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - const confirmResult = await testConfirm(); - console.log({confirmResult}); - - const bankPaymentId = confirmResult.response.PaymentId; - console.log({bankPaymentId}); - - const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, - }; - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('REFUNDED'); - console.log('testCancelAfterPayAfterConfirmFullPrice-end'); - }; - - const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); - const confirmResult = await testConfirm(); - - const bankPaymentId = confirmResult.response.PaymentId;; - - const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: Math.floor(PRICE / 3), - }; - - console.log({ cancelOptions }); - - { - const cancelResult = await cancel(cancelOptions); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); - } - { - const cancelResult = await cancel(cancelOptions); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); - } - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); - }; - - const testCancelBeforePay = async () => { - console.log('testCancelBeforePay-start'); - const initResult = await testInit(); - - const bankPaymentId = initResult.response.PaymentId;; - - const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, - }; - - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('CANCELED'); - console.log('testCancelBeforePay-end'); - }; - await testCancelAfterPayBeforeConfirmFullPrice(); - await testCancelAfterPayBeforeConfirmCustomPriceX2(); - await testCancelAfterPayAfterConfirmFullPrice(); - await testCancelAfterPayAfterConfirmCustomPriceX2(); - await testCancelBeforePay(); - - console.log('testCancel-end'); - }; - - const testGetState = async () => { - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Amount: PRICE, - }); - - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.error).to.equal(undefined); - }; - - const testGetCardList = async () => { - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - OrderId: uniqid(), - Amount: PRICE, - Recurrent: 'Y', - }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.error).to.equal(undefined); - }; - - const testResend = async () => { - console.log('testResend-start'); - const resendOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - }; - console.log({ resendOptions }); - - const resendResult = await resend(resendOptions); - console.log({ resendResult }); - - expect(resendResult.error).to.equal(undefined); - console.log('testResend-end'); - }; - - const testCharge = async () => { - console.log('testCharge-start'); - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Recurrent: 'Y', - }); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.response[0].RebillId).to.have.length.above(0); - - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.response.Status).to.equal('AUTHORIZED'); - - const newInitResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - }); - - const newChargeOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: newInitResult.response.PaymentId, - RebillId: Number(getCardListResult.response[0].RebillId), - }; - - const chargeResult = await charge(newChargeOptions); - - expect(chargeResult.error).to.equal(undefined); - console.log('testCharge-end'); - }; - - const testAddCustomer = async () => { - console.log('testAddCustomer-start'); - - const addCustomerOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - console.log({addCustomerOptions}); - - const addCustomerResult = await addCustomer(addCustomerOptions); - console.log({addCustomerResult}); - - expect(addCustomerResult.error).to.equal(undefined); - console.log('testAddCustomer-end'); - }; - - const testGetCustomer = async () => { - console.log('testGetCustomer-start'); - - const customerOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - - const addCustomerDataOptions = { - ...customerOptions, - Phone: process.env.PAYMENT_TEST_PHONE, - }; - - const addResult = await addCustomer(addCustomerDataOptions); - - expect(addResult.error).to.equal(undefined); - - const getResult = await getCustomer(customerOptions); - - expect(getResult.error).to.equal(undefined); - expect(getResult.response.Phone).to.equal( - process.env.PAYMENT_TEST_PHONE - ); - - console.log('testGetCustomer-end'); - }; - - const testRemoveCustomer = async () => { - console.log('testRemoveCustomer-start'); - - const removeCustomerData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - - const newAddCustomerData = { - ...removeCustomerData, - Phone: process.env.PAYMENT_TEST_PHONE, - }; - - const addResult = await addCustomer(newAddCustomerData); - - expect(addResult.error).to.equal(undefined); - - const removeResult = await removeCustomer(removeCustomerData); - - expect(removeResult.error).to.equal(undefined); - - console.log('testRemoveCustomer-end'); - }; - - await testInit(); - await testConfirm(); - await testCancel(); - await testGetState(); - await testGetCardList(); - await testResend(); - await testCharge(); - await testAddCustomer(); - await testGetCustomer(); - await testRemoveCustomer(); - }; - - const callIntegrationTests = async () => { - const testInit = async ({customerKey} = {customerKey: uniqid()}) => { - console.log('testInit-start'); - const { - data: [{ id: paymentId }], - } = await deep.insert({ - type_id: Payment, - object: { data: { value: {orderId: uniqid()} } }, - from_id: deep.linkId, - to_id: storageBusinessLink.id, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ paymentId }); - - const { - data: [{ id: sumId }], - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderId, - to_id: paymentId, - number: { data: { value: 150 } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ sum: sumId }); - - const { - data: [{ id: objectId }], - } = await deep.insert({ - type_id: Object, - from_id: paymentId, - to_id: productId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ object: objectId }); - - const { - data: [{ id: payId }], - } = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ pay: payId }); - - await sleep(9000); - - const { - data: { length }, - } = await deep.select({ - type_id: Url, - to_id: payId, - }); - - expect(length).to.greaterThan(0); - console.log('testInit-end'); - }; - - const testFinishAuthorize = async ({customerKey} = {customerKey: uniqid()}) => { - console.log('testFinishAuthorize-start'); - await testInit({customerKey}); - const { - data: [ - { - value: { value: url }, - }, - ], - } = await deep.select({ - type_id: Url, - }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, - }); - console.log('testFinishAuthorize-end'); - }; - - const testConfirm = async ({customerKey} = {customerKey: uniqid()}) => { - console.log('testConfirm-start'); - await testFinishAuthorize({customerKey}); - await sleep(17000); - let { data } = await deep.select({ - type_id: Payed, - }); - expect(data.length).to.greaterThan(0); - console.log('testConfirm-end'); - }; - - const testCancel = async () => { - console.log('testCancel-start'); - const testCancelAfterPayAfterConfirmFullPrice = async ({customerKey} = {customerKey: uniqid()}) => { - console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - await testConfirm({customerKey}); - - const { - data: [paymentLink], - } = await deep.select({ - type_id: Payment, - }); - console.log({paymentLink}); - - const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: Payment, - from_id: paymentLink.id, - to_id: deep.linkId - }); - console.log({cancellingPaymentLinkInsertQuery}); - if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; - console.log({cancellingPaymentLink}); - - await sleep(3000); - - const { - data: [sumLinkOfCancellingPayment] - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderId, - to_id: cancellingPaymentLink.id, - number: {data: {value: PRICE}} - }); - console.log({sumLinkOfCancellingPayment}); - - await sleep(15000); - - const payLinkInsertQuery = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLinkOfCancellingPayment.id - }); - console.log({payLinkInsertQuery}); - if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} - - await sleep(3000); - - const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ - up: { - parent_id: {_eq: cancellingPaymentLink.id}, - tree_id: {_eq: paymentTreeId} - } - }); - if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); - const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); - expect(payedLink).to.not.equal(undefined); - - console.log('testCancelAfterPayAfterConfirmFullPrice-end'); - }; - - const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({customerKey} = {customerKey: uniqid()}) => { - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); - await testConfirm({customerKey}); - - const { - data: [paymentLink], - } = await deep.select({ - type_id: Payment, - }); - console.log({paymentLink}); - - for (let i = 0; i < 2; i++) { - const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: Payment, - from_id: paymentLink.id, - to_id: deep.linkId - }); - console.log({cancellingPaymentLinkInsertQuery}); - if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; - console.log({cancellingPaymentLink}); - - await sleep(3000); - - const { - data: [sumLinkOfCancellingPayment] - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderId, - to_id: cancellingPaymentLink.id, - number: {data: {value: Math.floor(PRICE / 3)}} - }); - console.log({sumLinkOfCancellingPayment}); - - const payLinkInsertQuery = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLinkOfCancellingPayment.id - }); - console.log({payLinkInsertQuery}); - if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} - - await sleep(3000); - - const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ - up: { - parent_id: {_eq: cancellingPaymentLink.id}, - tree_id: {_eq: paymentTreeId} - } - }); - console.log({mpUpCancelledPayment}); - if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); - const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); - expect(payedLink).to.not.equal(undefined); - } - - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); - }; - - const testCancelBeforePay = async ({customerKey} = {customerKey: uniqid()}) => { - console.log('testCancelBeforePay-start'); - await testInit({customerKey}); - - const { - data: [paymentLink], - } = await deep.select({ - type_id: Payment, - }); - console.log({paymentLink}); - - const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: Payment, - from_id: paymentLink.id, - to_id: deep.linkId - }); - console.log({cancellingPaymentLinkInsertQuery}); - if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; - console.log({cancellingPaymentLink}); - - await sleep(3000); - - const { - data: [sumLinkOfCancellingPayment] - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderId, - to_id: cancellingPaymentLink.id, - number: {data: {value: PRICE}} - }); - console.log({sumLinkOfCancellingPayment}); - - await sleep(15000); - - const payLinkInsertQuery = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLinkOfCancellingPayment.id - }); - console.log({payLinkInsertQuery}); - if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} - - await sleep(3000); - - const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ - up: { - parent_id: {_eq: cancellingPaymentLink.id}, - tree_id: {_eq: paymentTreeId} - } - }); - if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); - const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); - expect(payedLink).to.not.equal(undefined); - - console.log('testCancelBeforePay-end'); - }; - await testCancelAfterPayAfterConfirmFullPrice(); - await deleteTestLinks(); - await testCancelAfterPayAfterConfirmCustomPriceX2(); - await deleteTestLinks(); - await testCancelBeforePay(); - await deleteTestLinks(); - - console.log('testCancel-end'); - }; - /* - const testGetState = async () => { - console.log('testGetState-start'); - await testFinishAuthorize(); - - const { - data: [payLink], - } = await deep.select({ type_id: Pay }); - - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); - - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.error).to.equal(undefined); - console.log('testGetState-end'); - }; - - const testGetCardList = async () => { - console.log('testGetCardList-end'); - await testFinishAuthorize(); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.error).to.equal(undefined); - console.log('testGetCardList-end'); - }; - */ - await testInit(); - await deleteTestLinks(); - await testFinishAuthorize(); - await deleteTestLinks(); - await testConfirm(); - await deleteTestLinks(); - // await testCancel(); - // await deleteTestLinks(); - /*await testGetState(); - await deleteTestLinks(); - await testGetCardList(); - await deleteTestLinks();*/ - }; - - // await callRealizationTests(); - await callIntegrationTests(); - }; - - await callTests(); + console.log({ tinkoffNotificationHandler }); + + await deep.insert( + { + type_id: await deep.id('@deep-foundation/core', 'Port'), + number: { + data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, + }, + in: { + data: { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'RouterStringUse' + ), + string: { + data: { + value: + process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, + }, + }, + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + out: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'HandleRoute' + ), + to: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'Handler' + ), + from_id: await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ), + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + to: { + data: { + type_id: SyncTextFile, + string: { + data: { + value: tinkoffNotificationHandler, + }, + }, + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + } + ); + + const callTests = async () => { + console.log('callTests-start'); + + console.log({ paymentTreeId }); + + const { + data: [{ id: tinkoffProviderId }], + } = await deep.insert({ + type_id: TinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ tinkoffProviderId }); + + const { + data: [{ id: sumProviderId }], + } = await deep.insert({ + type_id: SumProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ sumProviderId }); + + const { + data: [storageBusinessLink], + } = await deep.insert({ + type_id: StorageBusiness, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ storageBusinessLink }); + + const { + data: [{ id: tokenId }], + } = await deep.insert({ + type_id: Token, + from_id: storageBusinessLink.id, + to_id: storageBusinessLink.id, + string: {data: {value: process.env.PAYMENT_TEST_TERMINAL_KEY}}, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ token: tokenId }); + + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ Product }); + + const { + data: [{ id: productId }], + } = await deep.insert({ + type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ product: productId }); + + const deleteTestLinks = async () => { + console.log('deleteTestLinks-start'); + const { data: testLinks } = await deep.select({ + type_id: { + _in: [ Payment, Object, Sum, Pay, Url, Payed, Error, Cancelled ], + }, + }); + for (let i = 0; i < testLinks.length; i++) { + const { id } = testLinks[i]; + await deep.delete({ id: id }); + } + console.log('deleteTestLinks-end'); + }; + + const callRealizationTests = async () => { + const testInit = async () => { + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + Amount: PRICE, + Description: 'Test shopping', + CustomerKey: deep.linkId, + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: PRICE, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + expect(initResult.error).to.equal(undefined); + + return initResult; + }; + + const testConfirm = async () => { + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: PRICE, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const confirmOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const confirmResult = await confirm(confirmOptions); + + expect(confirmResult.error).to.equal(undefined); + expect(confirmResult.response.Status).to.equal('CONFIRMED'); + + return confirmResult; + }; + + const testCancel = async () => { + console.log('testCancel-start'); + const testCancelAfterPayBeforeConfirmFullPrice = async () => { + console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + Amount: PRICE, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // } + }; + + console.log({ options: initOptions }); + + let initResult = await init(initOptions); + + console.log({ initResult }); + + expect(initResult.error).to.equal(undefined); + + const url = initResult.response.PaymentURL; + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + await payInBrowser({ + browser, + page, + url, + }); + + const bankPaymentId = initResult.response.PaymentId; + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; + + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + + console.log({ cancelResponse: cancelResult }); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('REVERSED'); + console.log('testCanselAfterPayBeforeConfirmFullPrice-end'); + }; + + const testCancelAfterPayBeforeConfirmCustomPriceX2 = async () => { + console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-start'); + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + Amount: PRICE, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // } + }; + + console.log({ options: initOptions }); + + let initResult = await init(initOptions); + + console.log({ initResult }); + + expect(initResult.error).to.equal(undefined); + + const url = initResult.response.PaymentURL; + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); + + const bankPaymentId = initResult.response.PaymentId; + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: Math.floor(PRICE / 3), + }; + + console.log({ cancelOptions }); + + { + const cancelResult = await cancel(cancelOptions); + + console.log({ cancelResponse: cancelResult }); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); + } + { + const cancelResult = await cancel(cancelOptions); + + console.log({ cancelResponse: cancelResult }); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); + } + console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-end'); + }; + + const testCancelAfterPayAfterConfirmFullPrice = async () => { + console.log('testCancelAfterPayAfterConfirmFullPrice-start'); + const confirmResult = await testConfirm(); + console.log({confirmResult}); + + const bankPaymentId = confirmResult.response.PaymentId; + console.log({bankPaymentId}); + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('REFUNDED'); + console.log('testCancelAfterPayAfterConfirmFullPrice-end'); + }; + + const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); + const confirmResult = await testConfirm(); + + const bankPaymentId = confirmResult.response.PaymentId;; + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: Math.floor(PRICE / 3), + }; + + console.log({ cancelOptions }); + + { + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); + } + { + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); + } + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); + }; + + const testCancelBeforePay = async () => { + console.log('testCancelBeforePay-start'); + const initResult = await testInit(); + + const bankPaymentId = initResult.response.PaymentId;; + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; + + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('CANCELED'); + console.log('testCancelBeforePay-end'); + }; + await testCancelAfterPayBeforeConfirmFullPrice(); + await testCancelAfterPayBeforeConfirmCustomPriceX2(); + await testCancelAfterPayAfterConfirmFullPrice(); + await testCancelAfterPayAfterConfirmCustomPriceX2(); + await testCancelBeforePay(); + + console.log('testCancel-end'); + }; + + const testGetState = async () => { + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + Amount: PRICE, + }); + + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.error).to.equal(undefined); + }; + + const testGetCardList = async () => { + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + OrderId: uniqid(), + Amount: PRICE, + Recurrent: 'Y', + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.error).to.equal(undefined); + }; + + const testResend = async () => { + console.log('testResend-start'); + const resendOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + }; + console.log({ resendOptions }); + + const resendResult = await resend(resendOptions); + console.log({ resendResult }); + + expect(resendResult.error).to.equal(undefined); + console.log('testResend-end'); + }; + + const testCharge = async () => { + console.log('testCharge-start'); + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + Recurrent: 'Y', + }); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.response[0].RebillId).to.have.length.above(0); + + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.response.Status).to.equal('AUTHORIZED'); + + const newInitResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + }); + + const newChargeOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: newInitResult.response.PaymentId, + RebillId: Number(getCardListResult.response[0].RebillId), + }; + + const chargeResult = await charge(newChargeOptions); + + expect(chargeResult.error).to.equal(undefined); + console.log('testCharge-end'); + }; + + const testAddCustomer = async () => { + console.log('testAddCustomer-start'); + + const addCustomerOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + console.log({addCustomerOptions}); + + const addCustomerResult = await addCustomer(addCustomerOptions); + console.log({addCustomerResult}); + + expect(addCustomerResult.error).to.equal(undefined); + console.log('testAddCustomer-end'); + }; + + const testGetCustomer = async () => { + console.log('testGetCustomer-start'); + + const customerOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + + const addCustomerDataOptions = { + ...customerOptions, + Phone: process.env.PAYMENT_TEST_PHONE, + }; + + const addResult = await addCustomer(addCustomerDataOptions); + + expect(addResult.error).to.equal(undefined); + + const getResult = await getCustomer(customerOptions); + + expect(getResult.error).to.equal(undefined); + expect(getResult.response.Phone).to.equal( + process.env.PAYMENT_TEST_PHONE + ); + + console.log('testGetCustomer-end'); + }; + + const testRemoveCustomer = async () => { + console.log('testRemoveCustomer-start'); + + const removeCustomerData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + + const newAddCustomerData = { + ...removeCustomerData, + Phone: process.env.PAYMENT_TEST_PHONE, + }; + + const addResult = await addCustomer(newAddCustomerData); + + expect(addResult.error).to.equal(undefined); + + const removeResult = await removeCustomer(removeCustomerData); + + expect(removeResult.error).to.equal(undefined); + + console.log('testRemoveCustomer-end'); + }; + + await testInit(); + await testConfirm(); + await testCancel(); + await testGetState(); + await testGetCardList(); + await testResend(); + await testCharge(); + await testAddCustomer(); + await testGetCustomer(); + await testRemoveCustomer(); + }; + + const callIntegrationTests = async () => { + const testInit = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testInit-start'); + const { + data: [{ id: paymentId }], + } = await deep.insert({ + type_id: Payment, + object: { data: { value: {orderId: uniqid()} } }, + from_id: deep.linkId, + to_id: storageBusinessLink.id, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ paymentId }); + + const { + data: [{ id: sumId }], + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderId, + to_id: paymentId, + number: { data: { value: 150 } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ sum: sumId }); + + const { + data: [{ id: objectId }], + } = await deep.insert({ + type_id: Object, + from_id: paymentId, + to_id: productId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ object: objectId }); + + const { + data: [{ id: payId }], + } = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ pay: payId }); + + await sleep(9000); + + const { + data: { length }, + } = await deep.select({ + type_id: Url, + to_id: payId, + }); + + expect(length).to.greaterThan(0); + console.log('testInit-end'); + }; + + const testFinishAuthorize = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testFinishAuthorize-start'); + await testInit({customerKey}); + const { + data: [ + { + value: { value: url }, + }, + ], + } = await deep.select({ + type_id: Url, + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); + console.log('testFinishAuthorize-end'); + }; + + const testConfirm = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testConfirm-start'); + await testFinishAuthorize({customerKey}); + await sleep(17000); + let { data } = await deep.select({ + type_id: Payed, + }); + expect(data.length).to.greaterThan(0); + console.log('testConfirm-end'); + }; + + const testCancel = async () => { + console.log('testCancel-start'); + const testCancelAfterPayAfterConfirmFullPrice = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testCancelAfterPayAfterConfirmFullPrice-start'); + await testConfirm({customerKey}); + + const { + data: [paymentLink], + } = await deep.select({ + type_id: Payment, + }); + console.log({paymentLink}); + + const cancellingPaymentLinkInsertQuery = await deep.insert({ + type_id: Payment, + from_id: paymentLink.id, + to_id: deep.linkId + }); + console.log({cancellingPaymentLinkInsertQuery}); + if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; + console.log({cancellingPaymentLink}); + + await sleep(3000); + + const { + data: [sumLinkOfCancellingPayment] + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderId, + to_id: cancellingPaymentLink.id, + number: {data: {value: PRICE}} + }); + console.log({sumLinkOfCancellingPayment}); + + await sleep(15000); + + const payLinkInsertQuery = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumLinkOfCancellingPayment.id + }); + console.log({payLinkInsertQuery}); + if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} + + await sleep(3000); + + const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ + up: { + parent_id: {_eq: cancellingPaymentLink.id}, + tree_id: {_eq: paymentTreeId} + } + }); + if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } + const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); + const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); + expect(payedLink).to.not.equal(undefined); + + console.log('testCancelAfterPayAfterConfirmFullPrice-end'); + }; + + const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); + await testConfirm({customerKey}); + + const { + data: [paymentLink], + } = await deep.select({ + type_id: Payment, + }); + console.log({paymentLink}); + + for (let i = 0; i < 2; i++) { + const cancellingPaymentLinkInsertQuery = await deep.insert({ + type_id: Payment, + from_id: paymentLink.id, + to_id: deep.linkId + }); + console.log({cancellingPaymentLinkInsertQuery}); + if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; + console.log({cancellingPaymentLink}); + + await sleep(3000); + + const { + data: [sumLinkOfCancellingPayment] + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderId, + to_id: cancellingPaymentLink.id, + number: {data: {value: Math.floor(PRICE / 3)}} + }); + console.log({sumLinkOfCancellingPayment}); + + const payLinkInsertQuery = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumLinkOfCancellingPayment.id + }); + console.log({payLinkInsertQuery}); + if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} + + await sleep(3000); + + const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ + up: { + parent_id: {_eq: cancellingPaymentLink.id}, + tree_id: {_eq: paymentTreeId} + } + }); + console.log({mpUpCancelledPayment}); + if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } + const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); + const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); + expect(payedLink).to.not.equal(undefined); + } + + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); + }; + + const testCancelBeforePay = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testCancelBeforePay-start'); + await testInit({customerKey}); + + const { + data: [paymentLink], + } = await deep.select({ + type_id: Payment, + }); + console.log({paymentLink}); + + const cancellingPaymentLinkInsertQuery = await deep.insert({ + type_id: Payment, + from_id: paymentLink.id, + to_id: deep.linkId + }); + console.log({cancellingPaymentLinkInsertQuery}); + if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; + console.log({cancellingPaymentLink}); + + await sleep(3000); + + const { + data: [sumLinkOfCancellingPayment] + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderId, + to_id: cancellingPaymentLink.id, + number: {data: {value: PRICE}} + }); + console.log({sumLinkOfCancellingPayment}); + + await sleep(15000); + + const payLinkInsertQuery = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumLinkOfCancellingPayment.id + }); + console.log({payLinkInsertQuery}); + if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} + + await sleep(3000); + + const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ + up: { + parent_id: {_eq: cancellingPaymentLink.id}, + tree_id: {_eq: paymentTreeId} + } + }); + if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } + const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); + const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); + expect(payedLink).to.not.equal(undefined); + + console.log('testCancelBeforePay-end'); + }; + await testCancelAfterPayAfterConfirmFullPrice(); + await deleteTestLinks(); + await testCancelAfterPayAfterConfirmCustomPriceX2(); + await deleteTestLinks(); + await testCancelBeforePay(); + await deleteTestLinks(); + + console.log('testCancel-end'); + }; + /* + const testGetState = async () => { + console.log('testGetState-start'); + await testFinishAuthorize(); + + const { + data: [payLink], + } = await deep.select({ type_id: Pay }); + + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); + + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.error).to.equal(undefined); + console.log('testGetState-end'); + }; + + const testGetCardList = async () => { + console.log('testGetCardList-end'); + await testFinishAuthorize(); + + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.error).to.equal(undefined); + console.log('testGetCardList-end'); + }; + */ + await testInit(); + await deleteTestLinks(); + await testFinishAuthorize(); + await deleteTestLinks(); + await testConfirm(); + await deleteTestLinks(); + // await testCancel(); + // await deleteTestLinks(); + /*await testGetState(); + await deleteTestLinks(); + await testGetCardList(); + await deleteTestLinks();*/ + }; + + // await callRealizationTests(); + await callIntegrationTests(); + }; + + await callTests(); }; f(); \ No newline at end of file From 74029e8b2abd641025b69e2863cbde795c096c71 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 13 Sep 2022 03:12:02 +0000 Subject: [PATCH 378/683] Add console logs, fix typos --- payments-tinkoff-c2b.cjs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 10047a4b..5d729039 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1100,7 +1100,9 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } - const {error: paymentLinkValueUpdateQueryError} = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); + const paymentLinkValueUpdateExp = {link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}; + console.log({paymentLinkValueUpdateExp}); + const {error: paymentLinkValueUpdateQueryError} = await deep.update(paymentLinkValueUpdateExp); if(paymentLinkValueUpdateQueryError) { throw new Error(paymentLinkValueUpdateQueryError.message); } return initResult; @@ -1179,7 +1181,7 @@ async ( object: {value: {_contains: {orderId: req.body.OrderId}}} }); console.log({paymentLinkSelectQuery}); - if(paymentLinkSelectQueryError) { throw new Error(paymentLinkSelectQueryError.message); } + if(paymentLinkSelectQuery.error) { throw new Error(paymentLinkSelectQuery.error.message); } const paymentLink = paymentLinkSelectQuery.data[0]; console.log({paymentLink}); if(!paymentLink) { throw new Error("The payment link associated with the order id " + req.body.OrderId + " is not found."); } From bfecce02aecd3e416f67c24d7c1601f09d29462f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 13 Sep 2022 06:29:59 +0000 Subject: [PATCH 379/683] Fix typos --- payments-tinkoff-c2b.cjs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 5d729039..ddb555af 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1100,10 +1100,11 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } - const paymentLinkValueUpdateExp = {link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}; - console.log({paymentLinkValueUpdateExp}); - const {error: paymentLinkValueUpdateQueryError} = await deep.update(paymentLinkValueUpdateExp); - if(paymentLinkValueUpdateQueryError) { throw new Error(paymentLinkValueUpdateQueryError.message); } + console.log("paymentLink.value.value", paymentLink.value.value); + console.log("paymentLink.value.value", paymentLink.value.value); + const paymentLinkValueUpdateQuery = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); + console.log({paymentLinkValueUpdateQuery}); + if(paymentLinkValueUpdateQuery.error) { throw new Error(paymentLinkValueUpdateQuery.error.message); } return initResult; }; From e1aaef95d7b36ff5ca1bba856a6ec3f3044f7a68 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 13 Sep 2022 06:36:09 +0000 Subject: [PATCH 380/683] Remove unused code --- payments-tinkoff-c2b-cancelling.cjs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 9fb7196a..4deca03d 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -20,10 +20,6 @@ const { get } = require('lodash'); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); -const '@deep-foundation/core' = '@deep-foundation/core'; -const '@deep-foundation/payments' = '@deep-foundation/payments'; -const '@deep-foundation/payments-tinkoff-c2b' = '@deep-foundation/payments-tinkoff-c2b'; - const PRICE = 5500; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); From 54e49b0c0bd405d814f500667eeb3151c85594ab Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 13 Sep 2022 06:37:43 +0000 Subject: [PATCH 381/683] Remove unused code --- payments-tinkoff-c2b-cancelling.cjs | 191 ---------------------------- 1 file changed, 191 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 4deca03d..e73acb5c 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1453,197 +1453,6 @@ async ( console.log('testCancel-end'); }; - const testGetState = async () => { - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Amount: PRICE, - }); - - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.error).to.equal(undefined); - }; - - const testGetCardList = async () => { - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - OrderId: uniqid(), - Amount: PRICE, - Recurrent: 'Y', - }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.error).to.equal(undefined); - }; - - const testResend = async () => { - console.log('testResend-start'); - const resendOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - }; - console.log({ resendOptions }); - - const resendResult = await resend(resendOptions); - console.log({ resendResult }); - - expect(resendResult.error).to.equal(undefined); - console.log('testResend-end'); - }; - - const testCharge = async () => { - console.log('testCharge-start'); - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Recurrent: 'Y', - }); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.response[0].RebillId).to.have.length.above(0); - - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.response.Status).to.equal('AUTHORIZED'); - - const newInitResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - }); - - const newChargeOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: newInitResult.response.PaymentId, - RebillId: Number(getCardListResult.response[0].RebillId), - }; - - const chargeResult = await charge(newChargeOptions); - - expect(chargeResult.error).to.equal(undefined); - console.log('testCharge-end'); - }; - - const testAddCustomer = async () => { - console.log('testAddCustomer-start'); - - const addCustomerOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - console.log({addCustomerOptions}); - - const addCustomerResult = await addCustomer(addCustomerOptions); - console.log({addCustomerResult}); - - expect(addCustomerResult.error).to.equal(undefined); - console.log('testAddCustomer-end'); - }; - - const testGetCustomer = async () => { - console.log('testGetCustomer-start'); - - const customerOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - - const addCustomerDataOptions = { - ...customerOptions, - Phone: process.env.PAYMENT_TEST_PHONE, - }; - - const addResult = await addCustomer(addCustomerDataOptions); - - expect(addResult.error).to.equal(undefined); - - const getResult = await getCustomer(customerOptions); - - expect(getResult.error).to.equal(undefined); - expect(getResult.response.Phone).to.equal( - process.env.PAYMENT_TEST_PHONE - ); - - console.log('testGetCustomer-end'); - }; - - const testRemoveCustomer = async () => { - console.log('testRemoveCustomer-start'); - - const removeCustomerData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - - const newAddCustomerData = { - ...removeCustomerData, - Phone: process.env.PAYMENT_TEST_PHONE, - }; - - const addResult = await addCustomer(newAddCustomerData); - - expect(addResult.error).to.equal(undefined); - - const removeResult = await removeCustomer(removeCustomerData); - - expect(removeResult.error).to.equal(undefined); - - console.log('testRemoveCustomer-end'); - }; - await testInit(); await testConfirm(); await testCancel(); From 87fd5777862a72813488386dc0faba5636424659 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 13 Sep 2022 06:38:29 +0000 Subject: [PATCH 382/683] Format --- payments-tinkoff-c2b-cancelling.cjs | 3434 +++++++++++++-------------- 1 file changed, 1717 insertions(+), 1717 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index e73acb5c..50822246 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -7,8 +7,8 @@ const dotenvExpand = require('dotenv-expand'); const { generateApolloClient } = require('@deep-foundation/hasura/client'); const { DeepClient } = require('@deep-foundation/deeplinks/imports/client'); const { - minilinks, - Link, + minilinks, + Link, } = require('@deep-foundation/deeplinks/imports/minilinks'); const puppeteer = require('puppeteer'); const crypto = require('crypto'); @@ -25,830 +25,830 @@ const PRICE = 5500; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const payInBrowser = async ({ page, browser, url }) => { - await page.goto(url, { waitUntil: 'networkidle2' }); - await sleep(5000); - const oldForm = await page.evaluate(() => { - return !!document.querySelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - }); - if (oldForm) { - console.log('OLD FORM!!!!!!!'); - // Старая форма используется на тестовом сервере - const cvc1 = await page.evaluate(() => { - return !!document.querySelector( - 'button[automation-id="pay-card__submit"]' - ); - }); - if (cvc1) { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_TEST_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_TEST_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-card__submit"]'); // submit button - } else { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_E2C_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_E2C_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-wallet__submit"]'); // submit button - await sleep(300); - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(1000); - } - // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен - await sleep(1000); - } else { - console.log('NEW FORM!!!!!!!'); - await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number - await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date - await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code - await page.click('button[type=submit]'); // submit button - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(3000); - } - await browser.close(); + await page.goto(url, { waitUntil: 'networkidle2' }); + await sleep(5000); + const oldForm = await page.evaluate(() => { + return !!document.querySelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + }); + if (oldForm) { + console.log('OLD FORM!!!!!!!'); + // Старая форма используется на тестовом сервере + const cvc1 = await page.evaluate(() => { + return !!document.querySelector( + 'button[automation-id="pay-card__submit"]' + ); + }); + if (cvc1) { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_TEST_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_TEST_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-card__submit"]'); // submit button + } else { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_E2C_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_E2C_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-wallet__submit"]'); // submit button + await sleep(300); + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(1000); + } + // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен + await sleep(1000); + } else { + console.log('NEW FORM!!!!!!!'); + await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number + await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date + await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code + await page.click('button[type=submit]'); // submit button + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(3000); + } + await browser.close(); }; const f = async () => { - const apolloClient = generateApolloClient({ - path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE - ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') - ? false - : true, - // admin token in prealpha deep secret key - // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', - }); - - const unloginedDeep = new DeepClient({ apolloClient }); - - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - - const _generateToken = (dataWithPassword) => { - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => `${acc}${item}`, ''); - console.log({ dataString }); - const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - console.log({ hash }); - return hash; - }; - - const generateToken = (data) => { - const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { - ...restData, - Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, - }; - console.log({ dataWithPassword }); - return _generateToken(dataWithPassword); - }; - const generateTokenString = generateToken.toString() - .replace( - 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', - `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` - ); - console.log({ generateTokenString }); - - const getUrl = (method) => - `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; - getUrlString = getUrl.toString() - .replace( - '${process.env.PAYMENT_EACQ_AND_TEST_URL}', - process.env.PAYMENT_EACQ_AND_TEST_URL - ); - console.log({ getUrlString }); - - const getMarketUrl = (method) => - `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; - - const getState = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetState'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const checkOrder = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('CheckOrder'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCardList = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCardList'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode || '0'); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const init = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Init'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const cancel = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Cancel'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const resend = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Resend'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const charge = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Charge'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const addCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('AddCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const removeCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('RemoveCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getBankPaymentId = async (orderId) => { - const checkOrderOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: orderId, - }; - - const checkOrderResult = await checkOrder(checkOrderOptions); - expect(checkOrderResult.error).to.equal(undefined); - - console.log({ checkOrderResponse: checkOrderResult }); - - const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; - - console.log({ paymentId: bankPaymentId }); - return bankPaymentId; - }; - - const guest = await unloginedDeep.guest(); - const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); - const admin = await guestDeep.login({ - linkId: await guestDeep.id('deep', 'admin'), - }); - const deep = new DeepClient({ deep: guestDeep, ...admin }); - - const User = await deep.id('@deep-foundation/core', 'User'); - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); - const Join = await deep.id('@deep-foundation/core', 'Join'); - const Contain = await deep.id('@deep-foundation/core', 'Contain'); - const Value = await deep.id('@deep-foundation/core', 'Value'); - const String = await deep.id('@deep-foundation/core', 'String'); - const Package = await deep.id('@deep-foundation/core', 'Package'); - - const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); - const dockerSupportsJs = await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ); - const Handler = await deep.id('@deep-foundation/core', 'Handler'); - const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); - const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); - - const Tree = await deep.id('@deep-foundation/core', 'Tree'); - const TreeIncludeNode = await deep.id( - '@deep-foundation/core', - 'TreeIncludeNode' - ); - const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); - const TreeIncludeDown = await deep.id( - '@deep-foundation/core', - 'TreeIncludeDown' - ); - - const Rule = await deep.id('@deep-foundation/core', 'Rule'); - const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); - const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); - const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); - const Selector = await deep.id('@deep-foundation/core', 'Selector'); - const SelectorInclude = await deep.id( - '@deep-foundation/core', - 'SelectorInclude' - ); - const SelectorExclude = await deep.id( - '@deep-foundation/core', - 'SelectorExclude' - ); - const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); - const containTree = await deep.id('@deep-foundation/core', 'containTree'); - const AllowInsertType = await deep.id( - '@deep-foundation/core', - 'AllowInsertType' - ); - const AllowDeleteType = await deep.id( - '@deep-foundation/core', - 'AllowDeleteType' - ); - const SelectorFilter = await deep.id( - '@deep-foundation/core', - 'SelectorFilter' - ); - const Query = await deep.id('@deep-foundation/core', 'Query'); - const usersId = await deep.id('deep', 'users'); - - const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); - const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); - const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); - const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); - const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); - const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); - const BaseCancelled = await deep.id('@deep-foundation/payments', 'Cancelled'); - const BaseError = await deep.id('@deep-foundation/payments', 'Error'); - const Storage = await deep.id('@deep-foundation/payments', 'Storage'); - - const { - data: [{ id: packageId }], - } = await deep.insert({ - type_id: Package, - string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - out: { - data: [ - { - type_id: Join, - to_id: await deep.id('deep', 'users', 'packages'), - }, - { - type_id: Join, - to_id: await deep.id('deep', 'admin'), - }, - ], - }, - }); - - console.log({ packageId }); - - const SumProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "SumProvider"); - console.log({ SumProvider: SumProvider }); - - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - console.log({ TinkoffProvider }); - - const Payment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); - console.log({ Payment: Payment }); - - const { - data: [{ id: CancellingPayment }], - } = await deep.insert({ - type_id: Type, - from_id: StorageBusiness, - to_id: User, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'CancellingPayment' } }, - }, - }, - }); - console.log({CancellingPayment}); - - const Object = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Object"); - console.log({ Object: Object }); - - const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); - console.log({ Sum: Sum }); - - const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); - console.log({ Pay: Pay }); - - const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); - console.log({ Url: Url }); - - const Payed = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"); - console.log({ Payed: Payed }); - - const Error = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error"); - console.log({ Error: Error }); - - const paymentTreeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree"); - console.log({ paymentTreeId }); - - const StorageBusiness = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageBusiness"); - console.log({ StorageBusiness }); - - - const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); - console.log({ Token }); - - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - console.log({ StorageClient }); - - const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); - console.log({ Title }); - - const handlersDependencies = ` - const crypto = require('crypto'); + const apolloClient = generateApolloClient({ + path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE + ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') + ? false + : true, + // admin token in prealpha deep secret key + // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', + }); + + const unloginedDeep = new DeepClient({ apolloClient }); + + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + + const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + console.log({ dataString }); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + console.log({ hash }); + return hash; + }; + + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + ...restData, + Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, + }; + console.log({ dataWithPassword }); + return _generateToken(dataWithPassword); + }; + const generateTokenString = generateToken.toString() + .replace( + 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', + `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` + ); + console.log({ generateTokenString }); + + const getUrl = (method) => + `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; + getUrlString = getUrl.toString() + .replace( + '${process.env.PAYMENT_EACQ_AND_TEST_URL}', + process.env.PAYMENT_EACQ_AND_TEST_URL + ); + console.log({ getUrlString }); + + const getMarketUrl = (method) => + `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; + + const getState = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetState'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const checkOrder = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('CheckOrder'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getCardList = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCardList'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode || '0'); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const init = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Init'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const cancel = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Cancel'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const resend = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Resend'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const charge = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Charge'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const addCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('AddCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const removeCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('RemoveCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getBankPaymentId = async (orderId) => { + const checkOrderOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: orderId, + }; + + const checkOrderResult = await checkOrder(checkOrderOptions); + expect(checkOrderResult.error).to.equal(undefined); + + console.log({ checkOrderResponse: checkOrderResult }); + + const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; + + console.log({ paymentId: bankPaymentId }); + return bankPaymentId; + }; + + const guest = await unloginedDeep.guest(); + const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); + const admin = await guestDeep.login({ + linkId: await guestDeep.id('deep', 'admin'), + }); + const deep = new DeepClient({ deep: guestDeep, ...admin }); + + const User = await deep.id('@deep-foundation/core', 'User'); + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + const Join = await deep.id('@deep-foundation/core', 'Join'); + const Contain = await deep.id('@deep-foundation/core', 'Contain'); + const Value = await deep.id('@deep-foundation/core', 'Value'); + const String = await deep.id('@deep-foundation/core', 'String'); + const Package = await deep.id('@deep-foundation/core', 'Package'); + + const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); + const dockerSupportsJs = await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ); + const Handler = await deep.id('@deep-foundation/core', 'Handler'); + const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); + const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); + + const Tree = await deep.id('@deep-foundation/core', 'Tree'); + const TreeIncludeNode = await deep.id( + '@deep-foundation/core', + 'TreeIncludeNode' + ); + const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); + const TreeIncludeDown = await deep.id( + '@deep-foundation/core', + 'TreeIncludeDown' + ); + + const Rule = await deep.id('@deep-foundation/core', 'Rule'); + const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); + const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); + const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); + const Selector = await deep.id('@deep-foundation/core', 'Selector'); + const SelectorInclude = await deep.id( + '@deep-foundation/core', + 'SelectorInclude' + ); + const SelectorExclude = await deep.id( + '@deep-foundation/core', + 'SelectorExclude' + ); + const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); + const containTree = await deep.id('@deep-foundation/core', 'containTree'); + const AllowInsertType = await deep.id( + '@deep-foundation/core', + 'AllowInsertType' + ); + const AllowDeleteType = await deep.id( + '@deep-foundation/core', + 'AllowDeleteType' + ); + const SelectorFilter = await deep.id( + '@deep-foundation/core', + 'SelectorFilter' + ); + const Query = await deep.id('@deep-foundation/core', 'Query'); + const usersId = await deep.id('deep', 'users'); + + const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); + const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); + const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); + const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); + const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); + const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); + const BaseCancelled = await deep.id('@deep-foundation/payments', 'Cancelled'); + const BaseError = await deep.id('@deep-foundation/payments', 'Error'); + const Storage = await deep.id('@deep-foundation/payments', 'Storage'); + + const { + data: [{ id: packageId }], + } = await deep.insert({ + type_id: Package, + string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + out: { + data: [ + { + type_id: Join, + to_id: await deep.id('deep', 'users', 'packages'), + }, + { + type_id: Join, + to_id: await deep.id('deep', 'admin'), + }, + ], + }, + }); + + console.log({ packageId }); + + const SumProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "SumProvider"); + console.log({ SumProvider: SumProvider }); + + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + console.log({ TinkoffProvider }); + + const Payment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); + console.log({ Payment: Payment }); + + const { + data: [{ id: CancellingPayment }], + } = await deep.insert({ + type_id: Type, + from_id: StorageBusiness, + to_id: User, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'CancellingPayment' } }, + }, + }, + }); + console.log({CancellingPayment}); + + const Object = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Object"); + console.log({ Object: Object }); + + const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); + console.log({ Sum: Sum }); + + const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + console.log({ Pay: Pay }); + + const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); + console.log({ Url: Url }); + + const Payed = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"); + console.log({ Payed: Payed }); + + const Error = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error"); + console.log({ Error: Error }); + + const paymentTreeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree"); + console.log({ paymentTreeId }); + + const StorageBusiness = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageBusiness"); + console.log({ StorageBusiness }); + + + const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); + console.log({ Token }); + + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + console.log({ StorageClient }); + + const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); + console.log({ Title }); + + const handlersDependencies = ` + const crypto = require('crypto'); const axios = require('axios'); const errorsConverter = ${JSON.stringify(errorsConverter)}; const getError = ${getError.toString()}; const getUrl = ${getUrlString}; const _generateToken = ${_generateToken.toString()}; const generateToken = ${generateTokenString}; - `; - console.log({ handlersDependencies }); - const payInsertHandler = ` + `; + console.log({ handlersDependencies }); + const payInsertHandler = ` async ({ deep, require, data: { newLink: payLink } }) => { - ${handlersDependencies} + ${handlersDependencies} - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: TinkoffProvider - }); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: TinkoffProvider + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; - const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ + const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ down: { link_id: { _eq: payLink.id }, tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") }, }, }); console.log({mpDownPay}); - if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } + if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } - const Payment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); - const paymentLink = mpDownPay.find(link => link.type_id === Payment); - console.log({paymentLink}); - if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found."); + const Payment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); + const paymentLink = mpDownPay.find(link => link.type_id === Payment); + console.log({paymentLink}); + if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found."); - const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); + const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); const sumLink = mpDownPay.find(link => link.type_id === Sum); console.log({sumLink}); - if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); - - const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); - - const fromLinkOfPaymentQuery = await deep.select({ - id: paymentLink.from_id - }); - if(fromLinkOfPaymentQuery.error) { throw new Error(fromLinkOfPaymentQuery.error.message); } - const fromLinkOfPayment = fromLinkOfPaymentQuery.data[0]; - console.log({fromLinkOfPayment}); - - const toLinkOfPaymentQuery = await deep.select({ - id: paymentLink.to_id - }); - if(toLinkOfPaymentQuery.error) { throw new Error(toLinkOfPaymentQuery.error.message); } - const toLinkOfPayment = fromLinkOfPaymentQuery.data[0]; - console.log({toLinkOfPayment}); - - const isCancellingPay = fromLinkOfPaymentQuery.data.length > 0 && toLinkOfPaymentQuery.data.length > 0 && (fromLinkOfPaymentQuery.data[0].type_id === paymentLink.type_id) && (toLinkOfPaymentQuery.data[0].type_id === await deep.id("@deep-foundation/core", "User")); - console.log({isCancellingPay}); - if(isCancellingPay) { - const cancel = ${cancel.toString()}; - - const cancellingPaymentLink = fromLinkOfPayment; - - const cancelledPaymentLink = fromLinkOfPayment; - - await deep.insert({link_id: 1, value: cancelledPaymentLink.value.value}, {table: "objects"}); - - const cancelOptions = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentId: cancelledPaymentLink.value.value.bankPaymentId, - Amount: sumLink.value.value, - }; - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - console.log({cancelResult}); - if (cancelResult.error) { - const errorMessage = "Could not cancel the order. " + JSON.stringify(cancelResult.error); - - const {error: errorLinkInsertQueryError} = await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), - from_id: tinkoffProviderLink.id, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - in: { - data: [ - { - type_id: await deep.id("${'@deep-foundation/core'}", 'Contain'), - from_id: deep.linkId, - }, - ], - }, - }); - if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } - throw new Error(errorMessage); - } - - const {error: payedLinkInsertQueryError} = await deep.insert({ - type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), - from_id: tinkoffProviderLink.id, - to_id: payLink.id - }); - if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError.message); } - - return cancelResult; - } + if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); + + const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); + + const fromLinkOfPaymentQuery = await deep.select({ + id: paymentLink.from_id + }); + if(fromLinkOfPaymentQuery.error) { throw new Error(fromLinkOfPaymentQuery.error.message); } + const fromLinkOfPayment = fromLinkOfPaymentQuery.data[0]; + console.log({fromLinkOfPayment}); + + const toLinkOfPaymentQuery = await deep.select({ + id: paymentLink.to_id + }); + if(toLinkOfPaymentQuery.error) { throw new Error(toLinkOfPaymentQuery.error.message); } + const toLinkOfPayment = fromLinkOfPaymentQuery.data[0]; + console.log({toLinkOfPayment}); + + const isCancellingPay = fromLinkOfPaymentQuery.data.length > 0 && toLinkOfPaymentQuery.data.length > 0 && (fromLinkOfPaymentQuery.data[0].type_id === paymentLink.type_id) && (toLinkOfPaymentQuery.data[0].type_id === await deep.id("@deep-foundation/core", "User")); + console.log({isCancellingPay}); + if(isCancellingPay) { + const cancel = ${cancel.toString()}; + + const cancellingPaymentLink = fromLinkOfPayment; + + const cancelledPaymentLink = fromLinkOfPayment; + + await deep.insert({link_id: 1, value: cancelledPaymentLink.value.value}, {table: "objects"}); + + const cancelOptions = { + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + PaymentId: cancelledPaymentLink.value.value.bankPaymentId, + Amount: sumLink.value.value, + }; + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + console.log({cancelResult}); + if (cancelResult.error) { + const errorMessage = "Could not cancel the order. " + JSON.stringify(cancelResult.error); + + const {error: errorLinkInsertQueryError} = await deep.insert({ + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), + from_id: tinkoffProviderLink.id, + to_id: payLink.id, + string: { data: { value: errorMessage } }, + in: { + data: [ + { + type_id: await deep.id("${'@deep-foundation/core'}", 'Contain'), + from_id: deep.linkId, + }, + ], + }, + }); + if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } + throw new Error(errorMessage); + } + + const {error: payedLinkInsertQueryError} = await deep.insert({ + type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), + from_id: tinkoffProviderLink.id, + to_id: payLink.id + }); + if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError.message); } + + return cancelResult; + } }; `; - console.log({ payInsertHandler }); - - const { - data: [{ id: payInsertHandlerId }], - } = await deep.insert({ - type_id: SyncTextFile, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandlerFile' } }, - }, - { - from_id: dockerSupportsJs, - type_id: Handler, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandler' } }, - }, - { - type_id: HandleInsert, - from_id: Pay, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandle' } }, - }, - ], - }, - }, - ], - }, - }, - ], - }, - string: { - data: { - value: payInsertHandler, - }, - }, - }); - console.log({ payInsertHandlerId }); - - const tinkoffNotificationHandler = ` + console.log({ payInsertHandler }); + + const { + data: [{ id: payInsertHandlerId }], + } = await deep.insert({ + type_id: SyncTextFile, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandlerFile' } }, + }, + { + from_id: dockerSupportsJs, + type_id: Handler, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandler' } }, + }, + { + type_id: HandleInsert, + from_id: Pay, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandle' } }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + string: { + data: { + value: payInsertHandler, + }, + }, + }); + console.log({ payInsertHandlerId }); + + const tinkoffNotificationHandler = ` async ( req, res, @@ -856,929 +856,929 @@ async ( { deep, require, gql } ) => { ${handlersDependencies} - const reqBody = req.body; - console.log({reqBody}); - - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: TinkoffProvider - }); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; - - const {data: [paymentLink], error: paymentLinkSelectQueryError} = await deep.select({ - object: {value: {_contains: {orderId: req.body.OrderId}}} - }); - console.log({paymentLink}); - if(paymentLinkSelectQueryError) { throw new Error(paymentLinkSelectQueryError.message); } - if(!paymentLink) { throw new Error("The payment link associated with the order id " + req.body.OrderId + " is not found."); } - - const {data: mpUpPaymentLink, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ - up: { - parent_id: { _eq: paymentLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree) } - } - }); - console.log({mpUpPaymentLink}); - if(mpUpPaymentLinkSelectQueryError) { throw new Error(mpUpPaymentLinkSelectQueryError.message); } - - const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); - const payLink = mpUpPaymentLink.find(link => link.type_id === Pay); - console.log({payLink}); - if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } + const reqBody = req.body; + console.log({reqBody}); + + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: TinkoffProvider + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; + + const {data: [paymentLink], error: paymentLinkSelectQueryError} = await deep.select({ + object: {value: {_contains: {orderId: req.body.OrderId}}} + }); + console.log({paymentLink}); + if(paymentLinkSelectQueryError) { throw new Error(paymentLinkSelectQueryError.message); } + if(!paymentLink) { throw new Error("The payment link associated with the order id " + req.body.OrderId + " is not found."); } + + const {data: mpUpPaymentLink, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ + up: { + parent_id: { _eq: paymentLink.id }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree) } + } + }); + console.log({mpUpPaymentLink}); + if(mpUpPaymentLinkSelectQueryError) { throw new Error(mpUpPaymentLinkSelectQueryError.message); } + + const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + const payLink = mpUpPaymentLink.find(link => link.type_id === Pay); + console.log({payLink}); + if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } if (req.body.Status === 'CANCELLED') { - const bankPaymentId = req.body.PaymentId; - - const CancellingPayment = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "CancellingPayment"); - const cancellingPaymentLinkSelectQuery = await deep.select({ - type_id: CancellingPayment, - object: {value: {_contains: {bankPaymentId} }} - }); - if(cancellingPaymentLinkSelectQuery.error) {throw new Error(cancellingPaymentLinkSelectQuery.error.message);} - if(!cancellingPaymentLinkSelectQuery.data || !cancellingPaymentLinkSelectQuery.data[0]) {throw new Error("Could not find cancelling payment link with bank payment id " + bankPaymentId);} - const cancellingPaymentLink = cancellingPaymentLinkSelectQuery.data[0]; - - const {data: mpUpPayment, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ - up: { - parent_id: { _eq: cancellingPaymentLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } - } - }); - - const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum") - const sumLink = mpUpPayment.find(link => link.type_id === Sum); - if(!sumLink) {throw new Error("Could not find sum link associated with the cancelling payment " + cancellingPaymentLink);} - - const Payed = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed") - const payedInsertLinkInsertQuery = await deep.insert({ - type_id: Payed, - from_id: tinkoffProviderLink.id, - to_id: sumLink.id - }); - if(payedInsertLinkInsertQuery.error) {throw new Error(payedInsertLinkInsertQuery.error.message);} + const bankPaymentId = req.body.PaymentId; + + const CancellingPayment = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "CancellingPayment"); + const cancellingPaymentLinkSelectQuery = await deep.select({ + type_id: CancellingPayment, + object: {value: {_contains: {bankPaymentId} }} + }); + if(cancellingPaymentLinkSelectQuery.error) {throw new Error(cancellingPaymentLinkSelectQuery.error.message);} + if(!cancellingPaymentLinkSelectQuery.data || !cancellingPaymentLinkSelectQuery.data[0]) {throw new Error("Could not find cancelling payment link with bank payment id " + bankPaymentId);} + const cancellingPaymentLink = cancellingPaymentLinkSelectQuery.data[0]; + + const {data: mpUpPayment, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ + up: { + parent_id: { _eq: cancellingPaymentLink.id }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } + } + }); + + const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum") + const sumLink = mpUpPayment.find(link => link.type_id === Sum); + if(!sumLink) {throw new Error("Could not find sum link associated with the cancelling payment " + cancellingPaymentLink);} + + const Payed = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed") + const payedInsertLinkInsertQuery = await deep.insert({ + type_id: Payed, + from_id: tinkoffProviderLink.id, + to_id: sumLink.id + }); + if(payedInsertLinkInsertQuery.error) {throw new Error(payedInsertLinkInsertQuery.error.message);} } res.send('ok'); }; `; - console.log({ tinkoffNotificationHandler }); - - await deep.insert( - { - type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { - data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, - }, - in: { - data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), - in: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'RouterStringUse' - ), - string: { - data: { - value: - process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, - }, - }, - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), - out: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'HandleRoute' - ), - to: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'Handler' - ), - from_id: await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ), - in: { - data: { - type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - to: { - data: { - type_id: SyncTextFile, - string: { - data: { - value: tinkoffNotificationHandler, - }, - }, - in: { - data: { - type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - } - ); - - const callTests = async () => { - console.log('callTests-start'); - - console.log({ paymentTreeId }); - - const { - data: [{ id: tinkoffProviderId }], - } = await deep.insert({ - type_id: TinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ tinkoffProviderId }); - - const { - data: [{ id: sumProviderId }], - } = await deep.insert({ - type_id: SumProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ sumProviderId }); - - const { - data: [{ id: storageBusinessLink }], - } = await deep.insert({ - type_id: StorageBusiness, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ storageBusinessLink }); - - const { - data: [{ id: token }], - } = await deep.insert({ - type_id: Token, - from_id: storageBusinessLink.id, - to_id: storageBusinessLink.id, - string: {data: {value: process.env.PAYMENT_TEST_TERMINAL_KEY}}, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ token }); - - const { - data: [{ id: Product }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ Product }); - - const { - data: [{ id: productId }], - } = await deep.insert({ - type_id: Product, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ product: productId }); - - const deleteTestLinks = async () => { - console.log('deleteTestLinks-start'); - const { data: testLinks } = await deep.select({ - type_id: { - _in: [ Payment, Object, Sum, Pay, Url, Payed, Error, Cancelled ], - }, - }); - for (let i = 0; i < testLinks.length; i++) { - const { id } = testLinks[i]; - await deep.delete({ id: id }); - } - console.log('deleteTestLinks-end'); - }; - - const callRealizationTests = async () => { - const testInit = async () => { - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - Amount: PRICE, - Description: 'Test shopping', - CustomerKey: deep.linkId, - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // }, - }; - - const initResult = await init(initOptions); - - expect(initResult.error).to.equal(undefined); - - return initResult; - }; - - const testConfirm = async () => { - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // }, - }; - - const initResult = await init(initOptions); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const confirmOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const confirmResult = await confirm(confirmOptions); - - expect(confirmResult.error).to.equal(undefined); - expect(confirmResult.response.Status).to.equal('CONFIRMED'); - - return confirmResult; - }; - - const testCancel = async () => { - console.log('testCancel-start'); - const testCancelAfterPayBeforeConfirmFullPrice = async () => { - console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - Amount: PRICE, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: sum, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // } - }; - - console.log({ options: initOptions }); - - let initResult = await init(initOptions); - - console.log({ initResult }); - - expect(initResult.error).to.equal(undefined); - - const url = initResult.response.PaymentURL; - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - await payInBrowser({ - browser, - page, - url, - }); - - const bankPaymentId = initResult.response.PaymentId; - - const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, - }; - - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - - console.log({ cancelResponse: cancelResult }); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('REVERSED'); - console.log('testCanselAfterPayBeforeConfirmFullPrice-end'); - }; - - const testCancelAfterPayBeforeConfirmCustomPriceX2 = async () => { - console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-start'); - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - Amount: PRICE, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: sum, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // } - }; - - console.log({ options: initOptions }); - - let initResult = await init(initOptions); - - console.log({ initResult }); - - expect(initResult.error).to.equal(undefined); - - const url = initResult.response.PaymentURL; - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, - }); - - const bankPaymentId = initResult.response.PaymentId; - - const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: Math.floor(PRICE / 3), - }; - - console.log({ cancelOptions }); - - { - const cancelResult = await cancel(cancelOptions); - - console.log({ cancelResponse: cancelResult }); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); - } - { - const cancelResult = await cancel(cancelOptions); - - console.log({ cancelResponse: cancelResult }); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); - } - console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-end'); - }; - - const testCancelAfterPayAfterConfirmFullPrice = async () => { - console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - const confirmResult = await testConfirm(); - console.log({confirmResult}); - - const bankPaymentId = confirmResult.response.PaymentId; - console.log({bankPaymentId}); - - const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, - }; - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('REFUNDED'); - console.log('testCancelAfterPayAfterConfirmFullPrice-end'); - }; - - const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); - const confirmResult = await testConfirm(); - - const bankPaymentId = confirmResult.response.PaymentId;; - - const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: Math.floor(PRICE / 3), - }; - - console.log({ cancelOptions }); - - { - const cancelResult = await cancel(cancelOptions); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); - } - { - const cancelResult = await cancel(cancelOptions); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); - } - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); - }; - - const testCancelBeforePay = async () => { - console.log('testCancelBeforePay-start'); - const initResult = await testInit(); - - const bankPaymentId = initResult.response.PaymentId;; - - const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, - }; - - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('CANCELED'); - console.log('testCancelBeforePay-end'); - }; - await testCancelAfterPayBeforeConfirmFullPrice(); - await testCancelAfterPayBeforeConfirmCustomPriceX2(); - await testCancelAfterPayAfterConfirmFullPrice(); - await testCancelAfterPayAfterConfirmCustomPriceX2(); - await testCancelBeforePay(); - - console.log('testCancel-end'); - }; - - await testInit(); - await testConfirm(); - await testCancel(); - }; - - const callIntegrationTests = async () => { - const testInit = async ({customerKey} = {customerKey: uniqid()}) => { - console.log('testInit-start'); - const { - data: [{ id: paymentId }], - } = await deep.insert({ - type_id: Payment, - object: { data: { value: {orderId: uniqid()} } }, - from_id: deep.linkId, - to_id: storageBusinessLink.id, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ paymentId }); - - const { - data: [{ id: sumId }], - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderId, - to_id: paymentId, - number: { data: { value: 150 } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ sum: sumId }); - - const { - data: [{ id: objectId }], - } = await deep.insert({ - type_id: Object, - from_id: paymentId, - to_id: productId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ object: objectId }); - - const { - data: [{ id: payId }], - } = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ pay: payId }); - - await sleep(9000); - - const { - data: { length }, - } = await deep.select({ - type_id: Url, - to_id: payId, - }); - - expect(length).to.greaterThan(0); - console.log('testInit-end'); - }; - - const testFinishAuthorize = async ({customerKey} = {customerKey: uniqid()}) => { - console.log('testFinishAuthorize-start'); - await testInit({customerKey}); - const { - data: [ - { - value: { value: url }, - }, - ], - } = await deep.select({ - type_id: Url, - }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, - }); - console.log('testFinishAuthorize-end'); - }; - - const testConfirm = async ({customerKey} = {customerKey: uniqid()}) => { - console.log('testConfirm-start'); - await testFinishAuthorize({customerKey}); - await sleep(17000); - let { data } = await deep.select({ - type_id: Payed, - }); - expect(data.length).to.greaterThan(0); - console.log('testConfirm-end'); - }; - - const testCancel = async () => { - console.log('testCancel-start'); - const testCancelAfterPayAfterConfirmFullPrice = async ({customerKey} = {customerKey: uniqid()}) => { - console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - await testConfirm({customerKey}); - - const { - data: [paymentLink], - } = await deep.select({ - type_id: Payment, - }); - console.log({paymentLink}); - - const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: CancellingPayment, - from_id: paymentLink.id, - to_id: deep.linkId - }); - console.log({cancellingPaymentLinkInsertQuery}); - if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; - console.log({cancellingPaymentLink}); - - await sleep(3000); - - const { - data: [sumLinkOfCancellingPayment] - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderId, - to_id: cancellingPaymentLink.id, - number: {data: {value: PRICE}} - }); - console.log({sumLinkOfCancellingPayment}); - - await sleep(15000); - - const payLinkInsertQuery = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLinkOfCancellingPayment.id - }); - console.log({payLinkInsertQuery}); - if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} - - await sleep(3000); - - const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ - up: { - parent_id: {_eq: cancellingPaymentLink.id}, - tree_id: {_eq: paymentTreeId} - } - }); - if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); - const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); - expect(payedLink).to.not.equal(undefined); - - console.log('testCancelAfterPayAfterConfirmFullPrice-end'); - }; - - const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({customerKey} = {customerKey: uniqid()}) => { - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); - await testConfirm({customerKey}); - - const { - data: [paymentLink], - } = await deep.select({ - type_id: Payment, - }); - console.log({paymentLink}); - - for (let i = 0; i < 2; i++) { - const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: CancellingPayment, - from_id: paymentLink.id, - to_id: deep.linkId - }); - console.log({cancellingPaymentLinkInsertQuery}); - if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; - console.log({cancellingPaymentLink}); - - await sleep(3000); - - const { - data: [sumLinkOfCancellingPayment] - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderId, - to_id: cancellingPaymentLink.id, - number: {data: {value: Math.floor(PRICE / 3)}} - }); - console.log({sumLinkOfCancellingPayment}); - - const payLinkInsertQuery = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLinkOfCancellingPayment.id - }); - console.log({payLinkInsertQuery}); - if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} - - await sleep(3000); - - const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ - up: { - parent_id: {_eq: cancellingPaymentLink.id}, - tree_id: {_eq: paymentTreeId} - } - }); - console.log({mpUpCancelledPayment}); - if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); - const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); - expect(payedLink).to.not.equal(undefined); - } - - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); - }; - - const testCancelBeforePay = async ({customerKey} = {customerKey: uniqid()}) => { - console.log('testCancelBeforePay-start'); - await testInit({customerKey}); - - const { - data: [paymentLink], - } = await deep.select({ - type_id: Payment, - }); - console.log({paymentLink}); - - const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: CancellingPayment, - from_id: paymentLink.id, - to_id: deep.linkId - }); - console.log({cancellingPaymentLinkInsertQuery}); - if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; - console.log({cancellingPaymentLink}); - - await sleep(3000); - - const { - data: [sumLinkOfCancellingPayment] - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderId, - to_id: cancellingPaymentLink.id, - number: {data: {value: PRICE}} - }); - console.log({sumLinkOfCancellingPayment}); - - await sleep(15000); - - const payLinkInsertQuery = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLinkOfCancellingPayment.id - }); - console.log({payLinkInsertQuery}); - if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} - - await sleep(3000); - - const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ - up: { - parent_id: {_eq: cancellingPaymentLink.id}, - tree_id: {_eq: paymentTreeId} - } - }); - if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); - const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); - expect(payedLink).to.not.equal(undefined); - - console.log('testCancelBeforePay-end'); - }; - await testCancelAfterPayAfterConfirmFullPrice(); - await deleteTestLinks(); - await testCancelAfterPayAfterConfirmCustomPriceX2(); - await deleteTestLinks(); - await testCancelBeforePay(); - await deleteTestLinks(); - - console.log('testCancel-end'); - }; - - await testCancel(); - // await deleteTestLinks(); - }; - - // await callRealizationTests(); - await callIntegrationTests(); - }; - - await callTests(); + console.log({ tinkoffNotificationHandler }); + + await deep.insert( + { + type_id: await deep.id('@deep-foundation/core', 'Port'), + number: { + data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, + }, + in: { + data: { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'RouterStringUse' + ), + string: { + data: { + value: + process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, + }, + }, + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + out: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'HandleRoute' + ), + to: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'Handler' + ), + from_id: await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ), + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + to: { + data: { + type_id: SyncTextFile, + string: { + data: { + value: tinkoffNotificationHandler, + }, + }, + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + } + ); + + const callTests = async () => { + console.log('callTests-start'); + + console.log({ paymentTreeId }); + + const { + data: [{ id: tinkoffProviderId }], + } = await deep.insert({ + type_id: TinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ tinkoffProviderId }); + + const { + data: [{ id: sumProviderId }], + } = await deep.insert({ + type_id: SumProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ sumProviderId }); + + const { + data: [{ id: storageBusinessLink }], + } = await deep.insert({ + type_id: StorageBusiness, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ storageBusinessLink }); + + const { + data: [{ id: token }], + } = await deep.insert({ + type_id: Token, + from_id: storageBusinessLink.id, + to_id: storageBusinessLink.id, + string: {data: {value: process.env.PAYMENT_TEST_TERMINAL_KEY}}, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ token }); + + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ Product }); + + const { + data: [{ id: productId }], + } = await deep.insert({ + type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ product: productId }); + + const deleteTestLinks = async () => { + console.log('deleteTestLinks-start'); + const { data: testLinks } = await deep.select({ + type_id: { + _in: [ Payment, Object, Sum, Pay, Url, Payed, Error, Cancelled ], + }, + }); + for (let i = 0; i < testLinks.length; i++) { + const { id } = testLinks[i]; + await deep.delete({ id: id }); + } + console.log('deleteTestLinks-end'); + }; + + const callRealizationTests = async () => { + const testInit = async () => { + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + Amount: PRICE, + Description: 'Test shopping', + CustomerKey: deep.linkId, + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: PRICE, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + expect(initResult.error).to.equal(undefined); + + return initResult; + }; + + const testConfirm = async () => { + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: PRICE, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const confirmOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const confirmResult = await confirm(confirmOptions); + + expect(confirmResult.error).to.equal(undefined); + expect(confirmResult.response.Status).to.equal('CONFIRMED'); + + return confirmResult; + }; + + const testCancel = async () => { + console.log('testCancel-start'); + const testCancelAfterPayBeforeConfirmFullPrice = async () => { + console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + Amount: PRICE, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // } + }; + + console.log({ options: initOptions }); + + let initResult = await init(initOptions); + + console.log({ initResult }); + + expect(initResult.error).to.equal(undefined); + + const url = initResult.response.PaymentURL; + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + await payInBrowser({ + browser, + page, + url, + }); + + const bankPaymentId = initResult.response.PaymentId; + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; + + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + + console.log({ cancelResponse: cancelResult }); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('REVERSED'); + console.log('testCanselAfterPayBeforeConfirmFullPrice-end'); + }; + + const testCancelAfterPayBeforeConfirmCustomPriceX2 = async () => { + console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-start'); + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + Amount: PRICE, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // } + }; + + console.log({ options: initOptions }); + + let initResult = await init(initOptions); + + console.log({ initResult }); + + expect(initResult.error).to.equal(undefined); + + const url = initResult.response.PaymentURL; + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); + + const bankPaymentId = initResult.response.PaymentId; + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: Math.floor(PRICE / 3), + }; + + console.log({ cancelOptions }); + + { + const cancelResult = await cancel(cancelOptions); + + console.log({ cancelResponse: cancelResult }); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); + } + { + const cancelResult = await cancel(cancelOptions); + + console.log({ cancelResponse: cancelResult }); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); + } + console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-end'); + }; + + const testCancelAfterPayAfterConfirmFullPrice = async () => { + console.log('testCancelAfterPayAfterConfirmFullPrice-start'); + const confirmResult = await testConfirm(); + console.log({confirmResult}); + + const bankPaymentId = confirmResult.response.PaymentId; + console.log({bankPaymentId}); + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('REFUNDED'); + console.log('testCancelAfterPayAfterConfirmFullPrice-end'); + }; + + const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); + const confirmResult = await testConfirm(); + + const bankPaymentId = confirmResult.response.PaymentId;; + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: Math.floor(PRICE / 3), + }; + + console.log({ cancelOptions }); + + { + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); + } + { + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); + } + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); + }; + + const testCancelBeforePay = async () => { + console.log('testCancelBeforePay-start'); + const initResult = await testInit(); + + const bankPaymentId = initResult.response.PaymentId;; + + const cancelOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; + + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('CANCELED'); + console.log('testCancelBeforePay-end'); + }; + await testCancelAfterPayBeforeConfirmFullPrice(); + await testCancelAfterPayBeforeConfirmCustomPriceX2(); + await testCancelAfterPayAfterConfirmFullPrice(); + await testCancelAfterPayAfterConfirmCustomPriceX2(); + await testCancelBeforePay(); + + console.log('testCancel-end'); + }; + + await testInit(); + await testConfirm(); + await testCancel(); + }; + + const callIntegrationTests = async () => { + const testInit = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testInit-start'); + const { + data: [{ id: paymentId }], + } = await deep.insert({ + type_id: Payment, + object: { data: { value: {orderId: uniqid()} } }, + from_id: deep.linkId, + to_id: storageBusinessLink.id, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ paymentId }); + + const { + data: [{ id: sumId }], + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderId, + to_id: paymentId, + number: { data: { value: 150 } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ sum: sumId }); + + const { + data: [{ id: objectId }], + } = await deep.insert({ + type_id: Object, + from_id: paymentId, + to_id: productId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ object: objectId }); + + const { + data: [{ id: payId }], + } = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + console.log({ pay: payId }); + + await sleep(9000); + + const { + data: { length }, + } = await deep.select({ + type_id: Url, + to_id: payId, + }); + + expect(length).to.greaterThan(0); + console.log('testInit-end'); + }; + + const testFinishAuthorize = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testFinishAuthorize-start'); + await testInit({customerKey}); + const { + data: [ + { + value: { value: url }, + }, + ], + } = await deep.select({ + type_id: Url, + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); + console.log('testFinishAuthorize-end'); + }; + + const testConfirm = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testConfirm-start'); + await testFinishAuthorize({customerKey}); + await sleep(17000); + let { data } = await deep.select({ + type_id: Payed, + }); + expect(data.length).to.greaterThan(0); + console.log('testConfirm-end'); + }; + + const testCancel = async () => { + console.log('testCancel-start'); + const testCancelAfterPayAfterConfirmFullPrice = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testCancelAfterPayAfterConfirmFullPrice-start'); + await testConfirm({customerKey}); + + const { + data: [paymentLink], + } = await deep.select({ + type_id: Payment, + }); + console.log({paymentLink}); + + const cancellingPaymentLinkInsertQuery = await deep.insert({ + type_id: CancellingPayment, + from_id: paymentLink.id, + to_id: deep.linkId + }); + console.log({cancellingPaymentLinkInsertQuery}); + if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; + console.log({cancellingPaymentLink}); + + await sleep(3000); + + const { + data: [sumLinkOfCancellingPayment] + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderId, + to_id: cancellingPaymentLink.id, + number: {data: {value: PRICE}} + }); + console.log({sumLinkOfCancellingPayment}); + + await sleep(15000); + + const payLinkInsertQuery = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumLinkOfCancellingPayment.id + }); + console.log({payLinkInsertQuery}); + if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} + + await sleep(3000); + + const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ + up: { + parent_id: {_eq: cancellingPaymentLink.id}, + tree_id: {_eq: paymentTreeId} + } + }); + if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } + const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); + const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); + expect(payedLink).to.not.equal(undefined); + + console.log('testCancelAfterPayAfterConfirmFullPrice-end'); + }; + + const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); + await testConfirm({customerKey}); + + const { + data: [paymentLink], + } = await deep.select({ + type_id: Payment, + }); + console.log({paymentLink}); + + for (let i = 0; i < 2; i++) { + const cancellingPaymentLinkInsertQuery = await deep.insert({ + type_id: CancellingPayment, + from_id: paymentLink.id, + to_id: deep.linkId + }); + console.log({cancellingPaymentLinkInsertQuery}); + if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; + console.log({cancellingPaymentLink}); + + await sleep(3000); + + const { + data: [sumLinkOfCancellingPayment] + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderId, + to_id: cancellingPaymentLink.id, + number: {data: {value: Math.floor(PRICE / 3)}} + }); + console.log({sumLinkOfCancellingPayment}); + + const payLinkInsertQuery = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumLinkOfCancellingPayment.id + }); + console.log({payLinkInsertQuery}); + if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} + + await sleep(3000); + + const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ + up: { + parent_id: {_eq: cancellingPaymentLink.id}, + tree_id: {_eq: paymentTreeId} + } + }); + console.log({mpUpCancelledPayment}); + if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } + const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); + const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); + expect(payedLink).to.not.equal(undefined); + } + + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); + }; + + const testCancelBeforePay = async ({customerKey} = {customerKey: uniqid()}) => { + console.log('testCancelBeforePay-start'); + await testInit({customerKey}); + + const { + data: [paymentLink], + } = await deep.select({ + type_id: Payment, + }); + console.log({paymentLink}); + + const cancellingPaymentLinkInsertQuery = await deep.insert({ + type_id: CancellingPayment, + from_id: paymentLink.id, + to_id: deep.linkId + }); + console.log({cancellingPaymentLinkInsertQuery}); + if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; + console.log({cancellingPaymentLink}); + + await sleep(3000); + + const { + data: [sumLinkOfCancellingPayment] + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderId, + to_id: cancellingPaymentLink.id, + number: {data: {value: PRICE}} + }); + console.log({sumLinkOfCancellingPayment}); + + await sleep(15000); + + const payLinkInsertQuery = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumLinkOfCancellingPayment.id + }); + console.log({payLinkInsertQuery}); + if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} + + await sleep(3000); + + const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ + up: { + parent_id: {_eq: cancellingPaymentLink.id}, + tree_id: {_eq: paymentTreeId} + } + }); + if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } + const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); + const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); + expect(payedLink).to.not.equal(undefined); + + console.log('testCancelBeforePay-end'); + }; + await testCancelAfterPayAfterConfirmFullPrice(); + await deleteTestLinks(); + await testCancelAfterPayAfterConfirmCustomPriceX2(); + await deleteTestLinks(); + await testCancelBeforePay(); + await deleteTestLinks(); + + console.log('testCancel-end'); + }; + + await testCancel(); + // await deleteTestLinks(); + }; + + // await callRealizationTests(); + await callIntegrationTests(); + }; + + await callTests(); }; f(); \ No newline at end of file From a45a048c66e4f449a396bfd68973f6907b2c3725 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 13 Sep 2022 06:39:30 +0000 Subject: [PATCH 383/683] Remove handler return --- payments-tinkoff-c2b-cancelling.cjs | 134 ++++++++++++++-------------- 1 file changed, 66 insertions(+), 68 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 50822246..f563b0b2 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -655,7 +655,7 @@ const f = async () => { }, }, }); - console.log({CancellingPayment}); + console.log({ CancellingPayment }); const Object = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Object"); console.log({ Object: Object }); @@ -794,8 +794,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { to_id: payLink.id }); if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError.message); } - - return cancelResult; } }; `; @@ -1038,9 +1036,9 @@ async ( ], }, }); - + console.log({ tinkoffProviderId }); - + const { data: [{ id: sumProviderId }], } = await deep.insert({ @@ -1054,7 +1052,7 @@ async ( ], }, }); - + console.log({ sumProviderId }); const { @@ -1070,7 +1068,7 @@ async ( ], }, }); - + console.log({ storageBusinessLink }); const { @@ -1079,7 +1077,7 @@ async ( type_id: Token, from_id: storageBusinessLink.id, to_id: storageBusinessLink.id, - string: {data: {value: process.env.PAYMENT_TEST_TERMINAL_KEY}}, + string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, in: { data: [ { @@ -1089,7 +1087,7 @@ async ( ], }, }); - + console.log({ token }); const { @@ -1130,7 +1128,7 @@ async ( console.log('deleteTestLinks-start'); const { data: testLinks } = await deep.select({ type_id: { - _in: [ Payment, Object, Sum, Pay, Url, Payed, Error, Cancelled ], + _in: [Payment, Object, Sum, Pay, Url, Payed, Error, Cancelled], }, }); for (let i = 0; i < testLinks.length; i++) { @@ -1376,10 +1374,10 @@ async ( const testCancelAfterPayAfterConfirmFullPrice = async () => { console.log('testCancelAfterPayAfterConfirmFullPrice-start'); const confirmResult = await testConfirm(); - console.log({confirmResult}); + console.log({ confirmResult }); const bankPaymentId = confirmResult.response.PaymentId; - console.log({bankPaymentId}); + console.log({ bankPaymentId }); const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1459,13 +1457,13 @@ async ( }; const callIntegrationTests = async () => { - const testInit = async ({customerKey} = {customerKey: uniqid()}) => { + const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); const { data: [{ id: paymentId }], } = await deep.insert({ type_id: Payment, - object: { data: { value: {orderId: uniqid()} } }, + object: { data: { value: { orderId: uniqid() } } }, from_id: deep.linkId, to_id: storageBusinessLink.id, in: { @@ -1547,9 +1545,9 @@ async ( console.log('testInit-end'); }; - const testFinishAuthorize = async ({customerKey} = {customerKey: uniqid()}) => { + const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testFinishAuthorize-start'); - await testInit({customerKey}); + await testInit({ customerKey }); const { data: [ { @@ -1570,9 +1568,9 @@ async ( console.log('testFinishAuthorize-end'); }; - const testConfirm = async ({customerKey} = {customerKey: uniqid()}) => { + const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testConfirm-start'); - await testFinishAuthorize({customerKey}); + await testFinishAuthorize({ customerKey }); await sleep(17000); let { data } = await deep.select({ type_id: Payed, @@ -1583,26 +1581,26 @@ async ( const testCancel = async () => { console.log('testCancel-start'); - const testCancelAfterPayAfterConfirmFullPrice = async ({customerKey} = {customerKey: uniqid()}) => { + const testCancelAfterPayAfterConfirmFullPrice = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - await testConfirm({customerKey}); + await testConfirm({ customerKey }); const { data: [paymentLink], } = await deep.select({ type_id: Payment, }); - console.log({paymentLink}); + console.log({ paymentLink }); const cancellingPaymentLinkInsertQuery = await deep.insert({ type_id: CancellingPayment, from_id: paymentLink.id, to_id: deep.linkId }); - console.log({cancellingPaymentLinkInsertQuery}); - if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + console.log({ cancellingPaymentLinkInsertQuery }); + if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; - console.log({cancellingPaymentLink}); + console.log({ cancellingPaymentLink }); await sleep(3000); @@ -1612,29 +1610,29 @@ async ( type_id: Sum, from_id: sumProviderId, to_id: cancellingPaymentLink.id, - number: {data: {value: PRICE}} + number: { data: { value: PRICE } } }); - console.log({sumLinkOfCancellingPayment}); + console.log({ sumLinkOfCancellingPayment }); await sleep(15000); - + const payLinkInsertQuery = await deep.insert({ type_id: Pay, from_id: deep.linkId, to_id: sumLinkOfCancellingPayment.id }); - console.log({payLinkInsertQuery}); - if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} + console.log({ payLinkInsertQuery }); + if (payLinkInsertQuery.error) { throw new Error(payLinkInsertQuery.error.message); } await sleep(3000); - const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ + const { data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError } = await deep.select({ up: { - parent_id: {_eq: cancellingPaymentLink.id}, - tree_id: {_eq: paymentTreeId} + parent_id: { _eq: cancellingPaymentLink.id }, + tree_id: { _eq: paymentTreeId } } }); - if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } + if (mpUpCancelledPaymentSelectQueryError) { throw new Error(mpUpCancelledPaymentSelectQueryError); } const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); @@ -1642,16 +1640,16 @@ async ( console.log('testCancelAfterPayAfterConfirmFullPrice-end'); }; - const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({customerKey} = {customerKey: uniqid()}) => { + const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); - await testConfirm({customerKey}); + await testConfirm({ customerKey }); const { data: [paymentLink], } = await deep.select({ type_id: Payment, }); - console.log({paymentLink}); + console.log({ paymentLink }); for (let i = 0; i < 2; i++) { const cancellingPaymentLinkInsertQuery = await deep.insert({ @@ -1659,41 +1657,41 @@ async ( from_id: paymentLink.id, to_id: deep.linkId }); - console.log({cancellingPaymentLinkInsertQuery}); - if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + console.log({ cancellingPaymentLinkInsertQuery }); + if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; - console.log({cancellingPaymentLink}); - + console.log({ cancellingPaymentLink }); + await sleep(3000); - + const { data: [sumLinkOfCancellingPayment] } = await deep.insert({ type_id: Sum, from_id: sumProviderId, to_id: cancellingPaymentLink.id, - number: {data: {value: Math.floor(PRICE / 3)}} + number: { data: { value: Math.floor(PRICE / 3) } } }); - console.log({sumLinkOfCancellingPayment}); - + console.log({ sumLinkOfCancellingPayment }); + const payLinkInsertQuery = await deep.insert({ type_id: Pay, from_id: deep.linkId, to_id: sumLinkOfCancellingPayment.id }); - console.log({payLinkInsertQuery}); - if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} - + console.log({ payLinkInsertQuery }); + if (payLinkInsertQuery.error) { throw new Error(payLinkInsertQuery.error.message); } + await sleep(3000); - - const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ + + const { data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError } = await deep.select({ up: { - parent_id: {_eq: cancellingPaymentLink.id}, - tree_id: {_eq: paymentTreeId} + parent_id: { _eq: cancellingPaymentLink.id }, + tree_id: { _eq: paymentTreeId } } }); - console.log({mpUpCancelledPayment}); - if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } + console.log({ mpUpCancelledPayment }); + if (mpUpCancelledPaymentSelectQueryError) { throw new Error(mpUpCancelledPaymentSelectQueryError); } const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); @@ -1702,26 +1700,26 @@ async ( console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); }; - const testCancelBeforePay = async ({customerKey} = {customerKey: uniqid()}) => { + const testCancelBeforePay = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testCancelBeforePay-start'); - await testInit({customerKey}); + await testInit({ customerKey }); const { data: [paymentLink], } = await deep.select({ type_id: Payment, }); - console.log({paymentLink}); + console.log({ paymentLink }); const cancellingPaymentLinkInsertQuery = await deep.insert({ type_id: CancellingPayment, from_id: paymentLink.id, to_id: deep.linkId }); - console.log({cancellingPaymentLinkInsertQuery}); - if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + console.log({ cancellingPaymentLinkInsertQuery }); + if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; - console.log({cancellingPaymentLink}); + console.log({ cancellingPaymentLink }); await sleep(3000); @@ -1731,29 +1729,29 @@ async ( type_id: Sum, from_id: sumProviderId, to_id: cancellingPaymentLink.id, - number: {data: {value: PRICE}} + number: { data: { value: PRICE } } }); - console.log({sumLinkOfCancellingPayment}); + console.log({ sumLinkOfCancellingPayment }); await sleep(15000); - + const payLinkInsertQuery = await deep.insert({ type_id: Pay, from_id: deep.linkId, to_id: sumLinkOfCancellingPayment.id }); - console.log({payLinkInsertQuery}); - if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} + console.log({ payLinkInsertQuery }); + if (payLinkInsertQuery.error) { throw new Error(payLinkInsertQuery.error.message); } await sleep(3000); - const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ + const { data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError } = await deep.select({ up: { - parent_id: {_eq: cancellingPaymentLink.id}, - tree_id: {_eq: paymentTreeId} + parent_id: { _eq: cancellingPaymentLink.id }, + tree_id: { _eq: paymentTreeId } } }); - if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } + if (mpUpCancelledPaymentSelectQueryError) { throw new Error(mpUpCancelledPaymentSelectQueryError); } const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); From 86b93893dcb05bfef290618f51db7180cf9e6052 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 13 Sep 2022 06:40:13 +0000 Subject: [PATCH 384/683] Remove unused code --- payments-tinkoff-c2b-cancelling.cjs | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index f563b0b2..4b77f6a4 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -593,16 +593,6 @@ const f = async () => { const Query = await deep.id('@deep-foundation/core', 'Query'); const usersId = await deep.id('deep', 'users'); - const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); - const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); - const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); - const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); - const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); - const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); - const BaseCancelled = await deep.id('@deep-foundation/payments', 'Cancelled'); - const BaseError = await deep.id('@deep-foundation/payments', 'Error'); - const Storage = await deep.id('@deep-foundation/payments', 'Storage'); - const { data: [{ id: packageId }], } = await deep.insert({ From 859bbea271b3eb9a9818123383c4edac20cc0243 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 13 Sep 2022 06:42:43 +0000 Subject: [PATCH 385/683] Reorder vars --- payments-tinkoff-c2b-cancelling.cjs | 32 ++++++++++++++--------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 4b77f6a4..6a4528fd 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -631,22 +631,6 @@ const f = async () => { const Payment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); console.log({ Payment: Payment }); - const { - data: [{ id: CancellingPayment }], - } = await deep.insert({ - type_id: Type, - from_id: StorageBusiness, - to_id: User, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'CancellingPayment' } }, - }, - }, - }); - console.log({ CancellingPayment }); - const Object = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Object"); console.log({ Object: Object }); @@ -681,6 +665,22 @@ const f = async () => { const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); console.log({ Title }); + const { + data: [{ id: CancellingPayment }], + } = await deep.insert({ + type_id: Type, + from_id: StorageBusiness, + to_id: User, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'CancellingPayment' } }, + }, + }, + }); + console.log({ CancellingPayment }); + const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); From c331cf5d472c6f15748a48b242ded27bb2f88543 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 13 Sep 2022 06:46:17 +0000 Subject: [PATCH 386/683] Fix typ; --- payments-tinkoff-c2b.cjs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index ddb555af..4d2fb4a5 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -905,10 +905,11 @@ const f = async () => { data: { type_id: Contain, from_id: packageId, // before created package - string: { data: { value: 'StorageClient' } }, + string: { data: { value: 'Title' } }, }, }, }); + console.log({Title}); const handlersDependencies = ` const crypto = require('crypto'); From 85581f6a6d10976fae9a553762cff6e8d85ac56b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 13 Sep 2022 07:06:38 +0000 Subject: [PATCH 387/683] Remove unused code --- payments-tinkoff-c2b.cjs | 252 +++------------------------------------ 1 file changed, 15 insertions(+), 237 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 4d2fb4a5..f984d083 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -970,52 +970,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const isCancellingPay = fromLinkOfPaymentQuery.data.length > 0 && toLinkOfPaymentQuery.data.length > 0 && (fromLinkOfPaymentQuery.data[0].type_id === paymentLink.type_id) && (toLinkOfPaymentQuery.data[0].type_id === await deep.id("@deep-foundation/core", "User")); console.log({isCancellingPay}); if(isCancellingPay) { - const cancel = ${cancel.toString()}; - - const cancellingPaymentLink = fromLinkOfPayment; - - const cancelledPaymentLink = fromLinkOfPayment; - - await deep.insert({link_id: 1, value: cancelledPaymentLink.value.value}, {table: "objects"}); - - const cancelOptions = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentId: cancelledPaymentLink.value.value.bankPaymentId, - Amount: sumLink.value.value, - }; - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - console.log({cancelResult}); - if (cancelResult.error) { - const errorMessage = "Could not cancel the order. " + JSON.stringify(cancelResult.error); - - const {error: errorLinkInsertQueryError} = await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), - from_id: tinkoffProviderLink.id, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - in: { - data: [ - { - type_id: await deep.id("@deep-foundation/core", 'Contain'), - from_id: deep.linkId, - }, - ], - }, - }); - if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } - throw new Error(errorMessage); - } - - const {error: payedLinkInsertQueryError} = await deep.insert({ - type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), - from_id: tinkoffProviderLink.id, - to_id: payLink.id - }); - if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError.message); } - - return cancelResult; + return; } const init = ${init.toString()}; @@ -1454,7 +1409,6 @@ async ( ], }, }); - console.log({ storageBusinessLink }); const { @@ -2043,6 +1997,20 @@ async ( const callIntegrationTests = async () => { const testInit = async ({customerKey} = {customerKey: uniqid()}) => { console.log('testInit-start'); + console.log("REMOVE THIS", { + type_id: Payment, + object: { data: { value: {orderId: uniqid()} } }, + from_id: deep.linkId, + to_id: storageBusinessLink.id, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); const { data: [{ id: paymentId }], } = await deep.insert({ @@ -2163,194 +2131,6 @@ async ( console.log('testConfirm-end'); }; - const testCancel = async () => { - console.log('testCancel-start'); - const testCancelAfterPayAfterConfirmFullPrice = async ({customerKey} = {customerKey: uniqid()}) => { - console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - await testConfirm({customerKey}); - - const { - data: [paymentLink], - } = await deep.select({ - type_id: Payment, - }); - console.log({paymentLink}); - - const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: Payment, - from_id: paymentLink.id, - to_id: deep.linkId - }); - console.log({cancellingPaymentLinkInsertQuery}); - if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; - console.log({cancellingPaymentLink}); - - await sleep(3000); - - const { - data: [sumLinkOfCancellingPayment] - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderId, - to_id: cancellingPaymentLink.id, - number: {data: {value: PRICE}} - }); - console.log({sumLinkOfCancellingPayment}); - - await sleep(15000); - - const payLinkInsertQuery = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLinkOfCancellingPayment.id - }); - console.log({payLinkInsertQuery}); - if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} - - await sleep(3000); - - const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ - up: { - parent_id: {_eq: cancellingPaymentLink.id}, - tree_id: {_eq: paymentTreeId} - } - }); - if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); - const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); - expect(payedLink).to.not.equal(undefined); - - console.log('testCancelAfterPayAfterConfirmFullPrice-end'); - }; - - const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({customerKey} = {customerKey: uniqid()}) => { - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); - await testConfirm({customerKey}); - - const { - data: [paymentLink], - } = await deep.select({ - type_id: Payment, - }); - console.log({paymentLink}); - - for (let i = 0; i < 2; i++) { - const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: Payment, - from_id: paymentLink.id, - to_id: deep.linkId - }); - console.log({cancellingPaymentLinkInsertQuery}); - if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; - console.log({cancellingPaymentLink}); - - await sleep(3000); - - const { - data: [sumLinkOfCancellingPayment] - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderId, - to_id: cancellingPaymentLink.id, - number: {data: {value: Math.floor(PRICE / 3)}} - }); - console.log({sumLinkOfCancellingPayment}); - - const payLinkInsertQuery = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLinkOfCancellingPayment.id - }); - console.log({payLinkInsertQuery}); - if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} - - await sleep(3000); - - const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ - up: { - parent_id: {_eq: cancellingPaymentLink.id}, - tree_id: {_eq: paymentTreeId} - } - }); - console.log({mpUpCancelledPayment}); - if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); - const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); - expect(payedLink).to.not.equal(undefined); - } - - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); - }; - - const testCancelBeforePay = async ({customerKey} = {customerKey: uniqid()}) => { - console.log('testCancelBeforePay-start'); - await testInit({customerKey}); - - const { - data: [paymentLink], - } = await deep.select({ - type_id: Payment, - }); - console.log({paymentLink}); - - const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: Payment, - from_id: paymentLink.id, - to_id: deep.linkId - }); - console.log({cancellingPaymentLinkInsertQuery}); - if(cancellingPaymentLinkInsertQuery.error) {throw new Error(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; - console.log({cancellingPaymentLink}); - - await sleep(3000); - - const { - data: [sumLinkOfCancellingPayment] - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderId, - to_id: cancellingPaymentLink.id, - number: {data: {value: PRICE}} - }); - console.log({sumLinkOfCancellingPayment}); - - await sleep(15000); - - const payLinkInsertQuery = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLinkOfCancellingPayment.id - }); - console.log({payLinkInsertQuery}); - if(payLinkInsertQuery.error) {throw new Error(payLinkInsertQuery.error.message);} - - await sleep(3000); - - const {data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError} = await deep.select({ - up: { - parent_id: {_eq: cancellingPaymentLink.id}, - tree_id: {_eq: paymentTreeId} - } - }); - if(mpUpCancelledPaymentSelectQueryError) {throw new Error(mpUpCancelledPaymentSelectQueryError); } - const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); - const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); - expect(payedLink).to.not.equal(undefined); - - console.log('testCancelBeforePay-end'); - }; - await testCancelAfterPayAfterConfirmFullPrice(); - await deleteTestLinks(); - await testCancelAfterPayAfterConfirmCustomPriceX2(); - await deleteTestLinks(); - await testCancelBeforePay(); - await deleteTestLinks(); - - console.log('testCancel-end'); - }; /* const testGetState = async () => { console.log('testGetState-start'); @@ -2396,8 +2176,6 @@ async ( await deleteTestLinks(); await testConfirm(); await deleteTestLinks(); - // await testCancel(); - // await deleteTestLinks(); /*await testGetState(); await deleteTestLinks(); await testGetCardList(); From 810207b4f471951136f2faeb8b079ba32ab65f59 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 14 Sep 2022 06:27:36 +0000 Subject: [PATCH 388/683] Add console log --- payments-tinkoff-c2b-cancelling.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 6a4528fd..8075ea08 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -20,6 +20,8 @@ const { get } = require('lodash'); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); +console.log("Installing @deep-foundation/payments-tinkoff-c2b-cancelling package"); + const PRICE = 5500; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); From 846c39779b7c974f2065638c9f0cbf496afad81f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 14 Sep 2022 06:28:13 +0000 Subject: [PATCH 389/683] Add console log --- payments-tinkoff-c2b.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index f984d083..bf2a2668 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -20,6 +20,7 @@ const { get } = require('lodash'); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); +console.log("Installing payments-tinkoff-c2b package"); const PRICE = 5500; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); @@ -1997,6 +1998,7 @@ async ( const callIntegrationTests = async () => { const testInit = async ({customerKey} = {customerKey: uniqid()}) => { console.log('testInit-start'); + console.log(1111111111111111111); console.log("REMOVE THIS", { type_id: Payment, object: { data: { value: {orderId: uniqid()} } }, From 1c816878810835c3aadb7dfed29ee74156932c10 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 14 Sep 2022 06:34:07 +0000 Subject: [PATCH 390/683] Remove unused code --- payments-tinkoff-c2b.cjs | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index f984d083..61afa3c1 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1997,20 +1997,6 @@ async ( const callIntegrationTests = async () => { const testInit = async ({customerKey} = {customerKey: uniqid()}) => { console.log('testInit-start'); - console.log("REMOVE THIS", { - type_id: Payment, - object: { data: { value: {orderId: uniqid()} } }, - from_id: deep.linkId, - to_id: storageBusinessLink.id, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); const { data: [{ id: paymentId }], } = await deep.insert({ From ce447ccd38f75856cbf79e5f12801040ecb886b2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 14 Sep 2022 06:40:39 +0000 Subject: [PATCH 391/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 8075ea08..88a7a6f2 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1048,7 +1048,7 @@ async ( console.log({ sumProviderId }); const { - data: [{ id: storageBusinessLink }], + data: [storageBusinessLink], } = await deep.insert({ type_id: StorageBusiness, in: { @@ -1451,6 +1451,20 @@ async ( const callIntegrationTests = async () => { const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); + console.log("Payment insert arg " , { + type_id: Payment, + object: { data: { value: { orderId: uniqid() } } }, + from_id: deep.linkId, + to_id: storageBusinessLink.id, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); const { data: [{ id: paymentId }], } = await deep.insert({ From 928e6a72a2576885b28452ca4351efaf301aad06 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 14 Sep 2022 06:46:54 +0000 Subject: [PATCH 392/683] Update CancellingPayment restrictions --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 88a7a6f2..b5cb963a 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -671,7 +671,7 @@ const f = async () => { data: [{ id: CancellingPayment }], } = await deep.insert({ type_id: Type, - from_id: StorageBusiness, + from_id: Payment, to_id: User, in: { data: { From 18ecd330c6e163390c7daf889d3c02e60c09e69d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 14 Sep 2022 06:51:49 +0000 Subject: [PATCH 393/683] Update Sum restrictions --- payments-tinkoff-c2b.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index bf2a2668..7e72116f 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -705,8 +705,8 @@ const f = async () => { data: [{ id: Sum }], } = await deep.insert({ type_id: BaseSum, - from_id: Any, - to_id: Payment, + from_id: SumProvider, + to_id: Any, in: { data: { type_id: Contain, From 9aac08b3c0b0811b025b69a7ca5f820d16ea111d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 14 Sep 2022 06:52:42 +0000 Subject: [PATCH 394/683] Remove unused code --- payments-tinkoff-c2b.cjs | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 7e72116f..dc6d498f 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1998,21 +1998,6 @@ async ( const callIntegrationTests = async () => { const testInit = async ({customerKey} = {customerKey: uniqid()}) => { console.log('testInit-start'); - console.log(1111111111111111111); - console.log("REMOVE THIS", { - type_id: Payment, - object: { data: { value: {orderId: uniqid()} } }, - from_id: deep.linkId, - to_id: storageBusinessLink.id, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); const { data: [{ id: paymentId }], } = await deep.insert({ From 0eb19d48f6c17d4495eaff731037ce515a29ed6d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 14 Sep 2022 06:56:42 +0000 Subject: [PATCH 395/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index b5cb963a..875527fd 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1632,15 +1632,15 @@ async ( await sleep(3000); - const { data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError } = await deep.select({ + const { data: mpUpCancellingPayment, error: mpUpCancellingPaymentSelectQueryError } = await deep.select({ up: { parent_id: { _eq: cancellingPaymentLink.id }, tree_id: { _eq: paymentTreeId } } }); - if (mpUpCancelledPaymentSelectQueryError) { throw new Error(mpUpCancelledPaymentSelectQueryError); } + if (mpUpCancellingPaymentSelectQueryError) { throw new Error(mpUpCancellingPaymentSelectQueryError); } const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); - const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); + const payedLink = mpUpCancellingPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); console.log('testCancelAfterPayAfterConfirmFullPrice-end'); @@ -1690,16 +1690,16 @@ async ( await sleep(3000); - const { data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError } = await deep.select({ + const { data: mpUpCancellingPayment, error: mpUpCancellingPaymentSelectQueryError } = await deep.select({ up: { parent_id: { _eq: cancellingPaymentLink.id }, tree_id: { _eq: paymentTreeId } } }); - console.log({ mpUpCancelledPayment }); - if (mpUpCancelledPaymentSelectQueryError) { throw new Error(mpUpCancelledPaymentSelectQueryError); } + console.log({ mpUpCancellingPayment }); + if (mpUpCancellingPaymentSelectQueryError) { throw new Error(mpUpCancellingPaymentSelectQueryError); } const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); - const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); + const payedLink = mpUpCancellingPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); } @@ -1751,15 +1751,15 @@ async ( await sleep(3000); - const { data: mpUpCancelledPayment, error: mpUpCancelledPaymentSelectQueryError } = await deep.select({ + const { data: mpUpCancellingPayment, error: mpUpCancellingPaymentSelectQueryError } = await deep.select({ up: { parent_id: { _eq: cancellingPaymentLink.id }, tree_id: { _eq: paymentTreeId } } }); - if (mpUpCancelledPaymentSelectQueryError) { throw new Error(mpUpCancelledPaymentSelectQueryError); } + if (mpUpCancellingPaymentSelectQueryError) { throw new Error(mpUpCancellingPaymentSelectQueryError); } const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); - const payedLink = mpUpCancelledPayment.find(link => link.type_id === Payed); + const payedLink = mpUpCancellingPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); console.log('testCancelBeforePay-end'); From 92e2841a35a567b6726b54fa3701b04e630d5321 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 14 Sep 2022 06:58:46 +0000 Subject: [PATCH 396/683] Update payInsertHandler --- payments-tinkoff-c2b-cancelling.cjs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 875527fd..7038e36c 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -713,10 +713,9 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({mpDownPay}); if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } - const Payment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); - const paymentLink = mpDownPay.find(link => link.type_id === Payment); - console.log({paymentLink}); - if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found."); + const CancellingPayment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "CancellingPayment"); + const cancellingPaymentLink = mpDownPay.find(link => link.type_id === CancellingPayment); + console.log({cancellingPaymentLink}); const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); const sumLink = mpDownPay.find(link => link.type_id === Sum); @@ -739,8 +738,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const toLinkOfPayment = fromLinkOfPaymentQuery.data[0]; console.log({toLinkOfPayment}); - const isCancellingPay = fromLinkOfPaymentQuery.data.length > 0 && toLinkOfPaymentQuery.data.length > 0 && (fromLinkOfPaymentQuery.data[0].type_id === paymentLink.type_id) && (toLinkOfPaymentQuery.data[0].type_id === await deep.id("@deep-foundation/core", "User")); - console.log({isCancellingPay}); + const isCancellingPay = Boolean(cancellingPaymentLink); if(isCancellingPay) { const cancel = ${cancel.toString()}; From a8598991476df3c540bbf8e2e1241267cbb4718f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 14 Sep 2022 12:34:10 +0000 Subject: [PATCH 397/683] Inherit pay --- payments-tinkoff-c2b-cancelling.cjs | 131 +++++++++++++++------------- 1 file changed, 72 insertions(+), 59 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 7038e36c..f5c9286b 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -639,8 +639,24 @@ const f = async () => { const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); console.log({ Sum: Sum }); - const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); - console.log({ Pay: Pay }); + const BasePay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + console.log({ BasePay }); + + const { + data: [{ id: Pay }], + } = await deep.insert({ + type_id: BasePay, + from_id: User, + to_id: Sum, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Pay' } }, + }, + }, + }); + console.log({ Pay }); const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); console.log({ Url: Url }); @@ -697,13 +713,6 @@ const f = async () => { async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: TinkoffProvider - }); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; - const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ down: { link_id: { _eq: payLink.id }, @@ -716,6 +725,16 @@ async ({ deep, require, data: { newLink: payLink } }) => { const CancellingPayment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "CancellingPayment"); const cancellingPaymentLink = mpDownPay.find(link => link.type_id === CancellingPayment); console.log({cancellingPaymentLink}); + if(!cancellingPaymentLink) { + return; + } + + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: TinkoffProvider + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); const sumLink = mpDownPay.find(link => link.type_id === Sum); @@ -724,67 +743,61 @@ async ({ deep, require, data: { newLink: payLink } }) => { const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); - const fromLinkOfPaymentQuery = await deep.select({ + const cancelledPaymentLinkSelectQuery = await deep.select({ id: paymentLink.from_id }); - if(fromLinkOfPaymentQuery.error) { throw new Error(fromLinkOfPaymentQuery.error.message); } - const fromLinkOfPayment = fromLinkOfPaymentQuery.data[0]; - console.log({fromLinkOfPayment}); + if(cancelledPaymentLinkSelectQuery.error) { throw new Error(cancelledPaymentLinkSelectQuery.error.message); } + const cancelledPaymentLink = fromLinkOfPaymentQuery.data[0]; + console.log({cancelledPaymentLink}); - const toLinkOfPaymentQuery = await deep.select({ + const userLinkSelectQuery = await deep.select({ id: paymentLink.to_id }); - if(toLinkOfPaymentQuery.error) { throw new Error(toLinkOfPaymentQuery.error.message); } - const toLinkOfPayment = fromLinkOfPaymentQuery.data[0]; - console.log({toLinkOfPayment}); - - const isCancellingPay = Boolean(cancellingPaymentLink); - if(isCancellingPay) { - const cancel = ${cancel.toString()}; - - const cancellingPaymentLink = fromLinkOfPayment; + if(userLinkSelectQuery.error) { throw new Error(userLinkSelectQuery.error.message); } + const userLink = userLinkSelectQuery.data[0]; + console.log({userLink}); + + const cancel = ${cancel.toString()}; - const cancelledPaymentLink = fromLinkOfPayment; + await deep.insert({link_id: 1, value: cancelledPaymentLink.value.value}, {table: "objects"}); - await deep.insert({link_id: 1, value: cancelledPaymentLink.value.value}, {table: "objects"}); + const cancelOptions = { + TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + PaymentId: cancelledPaymentLink.value.value.bankPaymentId, + Amount: sumLink.value.value, + }; + console.log({ cancelOptions }); - const cancelOptions = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentId: cancelledPaymentLink.value.value.bankPaymentId, - Amount: sumLink.value.value, - }; - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - console.log({cancelResult}); - if (cancelResult.error) { - const errorMessage = "Could not cancel the order. " + JSON.stringify(cancelResult.error); - - const {error: errorLinkInsertQueryError} = await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), - from_id: tinkoffProviderLink.id, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - in: { - data: [ - { - type_id: await deep.id("${'@deep-foundation/core'}", 'Contain'), - from_id: deep.linkId, - }, - ], - }, - }); - if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } - throw new Error(errorMessage); - } + const cancelResult = await cancel(cancelOptions); + console.log({cancelResult}); + if (cancelResult.error) { + const errorMessage = "Could not cancel the order. " + JSON.stringify(cancelResult.error); - const {error: payedLinkInsertQueryError} = await deep.insert({ - type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), + const {error: errorLinkInsertQueryError} = await deep.insert({ + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), from_id: tinkoffProviderLink.id, - to_id: payLink.id + to_id: payLink.id, + string: { data: { value: errorMessage } }, + in: { + data: [ + { + type_id: await deep.id("${'@deep-foundation/core'}", 'Contain'), + from_id: deep.linkId, + }, + ], + }, }); - if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError.message); } - } + if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } + throw new Error(errorMessage); + } + + const {error: payedLinkInsertQueryError} = await deep.insert({ + type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), + from_id: tinkoffProviderLink.id, + to_id: payLink.id + }); + if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError.message); } + }; `; console.log({ payInsertHandler }); From b4c70026c6fbdea6a7aeb6cd4c0efac93e35809e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 14 Sep 2022 12:35:38 +0000 Subject: [PATCH 398/683] Temporarily use Any restrictions for pay type --- payments-tinkoff-c2b.cjs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index dc6d498f..9af7b173 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -735,12 +735,13 @@ const f = async () => { console.log({ Pay: Pay }); + // TODO Restore restrictions const { data: [{ id: Url }], } = await deep.insert({ type_id: BaseUrl, - from_id: TinkoffProvider, - to_id: Pay, + from_id: Any, + to_id: Any, in: { data: { type_id: Contain, From 230e9d0ca138bd34cdc501c1f92f7e4f6f2f4860 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 14 Sep 2022 12:39:22 +0000 Subject: [PATCH 399/683] Revert "Temporarily use Any restrictions for pay type" This reverts commit b4c70026c6fbdea6a7aeb6cd4c0efac93e35809e. --- payments-tinkoff-c2b.cjs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 9af7b173..dc6d498f 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -735,13 +735,12 @@ const f = async () => { console.log({ Pay: Pay }); - // TODO Restore restrictions const { data: [{ id: Url }], } = await deep.insert({ type_id: BaseUrl, - from_id: Any, - to_id: Any, + from_id: TinkoffProvider, + to_id: Pay, in: { data: { type_id: Contain, From 1fb3f9c88877e6751f689e819a8215187160ae75 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 14 Sep 2022 12:40:05 +0000 Subject: [PATCH 400/683] Temporarily set pay restrictions to any --- payments-tinkoff-c2b.cjs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index dc6d498f..928b424a 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -718,12 +718,13 @@ const f = async () => { console.log({ Sum: Sum }); + // TODO Rest restrictions const { data: [{ id: Pay }], } = await deep.insert({ type_id: BasePay, - from_id: User, - to_id: Sum, + from_id: Any, + to_id: Any, in: { data: { type_id: Contain, From 7d9e102cb9ba39aa795d6a5506d204fd946784cf Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 14 Sep 2022 13:21:23 +0000 Subject: [PATCH 401/683] Use cancelling pay --- payments-tinkoff-c2b-cancelling.cjs | 66 ++++++++++++++--------------- 1 file changed, 32 insertions(+), 34 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index f5c9286b..29cd1fde 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -639,24 +639,24 @@ const f = async () => { const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); console.log({ Sum: Sum }); - const BasePay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); - console.log({ BasePay }); + const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + console.log({ Pay }); const { - data: [{ id: Pay }], + data: [{ id: CancellingPay }], } = await deep.insert({ - type_id: BasePay, + type_id: Pay, from_id: User, to_id: Sum, in: { data: { type_id: Contain, from_id: packageId, - string: { data: { value: 'Pay' } }, + string: { data: { value: 'CancellingPay' } }, }, }, }); - console.log({ Pay }); + console.log({ CancellingPay }); const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); console.log({ Url: Url }); @@ -670,6 +670,12 @@ const f = async () => { const paymentTreeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree"); console.log({ paymentTreeId }); + await deep.insert({ + type_id: TreeIncludeUp, + from_id: paymentTreeId, + to_id: Pay + }); + const StorageBusiness = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageBusiness"); console.log({ StorageBusiness }); @@ -867,40 +873,32 @@ async ( if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; - const {data: [paymentLink], error: paymentLinkSelectQueryError} = await deep.select({ + const cancellingPaymentLinkelectQuery = await deep.select({ object: {value: {_contains: {orderId: req.body.OrderId}}} }); - console.log({paymentLink}); - if(paymentLinkSelectQueryError) { throw new Error(paymentLinkSelectQueryError.message); } - if(!paymentLink) { throw new Error("The payment link associated with the order id " + req.body.OrderId + " is not found."); } + console.log({cancellingPaymentLink}); + if(cancellingPaymentLinkelectQuery.error) { throw new Error(cancellingPaymentLinkelectQuery.error.message); } + const cancellingPaymentLink = cancellingPaymentLinkelectQuery.data[0]; + if(!cancellingPaymentLink) { throw new Error("The cancelling payment link associated with the order id " + req.body.OrderId + " is not found."); } - const {data: mpUpPaymentLink, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ + const {data: mpUpcancellingPaymentLink, error: mpUpcancellingPaymentLinkSelectQueryError} = await deep.select({ up: { - parent_id: { _eq: paymentLink.id }, + parent_id: { _eq: cancellingPaymentLink.id }, tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree) } } }); - console.log({mpUpPaymentLink}); - if(mpUpPaymentLinkSelectQueryError) { throw new Error(mpUpPaymentLinkSelectQueryError.message); } + console.log({mpUpcancellingPaymentLink}); + if(mpUpcancellingPaymentLinkSelectQueryError) { throw new Error(mpUpcancellingPaymentLinkSelectQueryError.message); } const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); - const payLink = mpUpPaymentLink.find(link => link.type_id === Pay); + const payLink = mpUpcancellingPaymentLink.find(link => link.type_id === Pay); console.log({payLink}); - if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } + if(!payLink) { throw new Error("The pay link associated with cancelling payment link " + cancellingPaymentLink + " is not found.") } if (req.body.Status === 'CANCELLED') { const bankPaymentId = req.body.PaymentId; - const CancellingPayment = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "CancellingPayment"); - const cancellingPaymentLinkSelectQuery = await deep.select({ - type_id: CancellingPayment, - object: {value: {_contains: {bankPaymentId} }} - }); - if(cancellingPaymentLinkSelectQuery.error) {throw new Error(cancellingPaymentLinkSelectQuery.error.message);} - if(!cancellingPaymentLinkSelectQuery.data || !cancellingPaymentLinkSelectQuery.data[0]) {throw new Error("Could not find cancelling payment link with bank payment id " + bankPaymentId);} - const cancellingPaymentLink = cancellingPaymentLinkSelectQuery.data[0]; - const {data: mpUpPayment, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ up: { parent_id: { _eq: cancellingPaymentLink.id }, @@ -1634,7 +1632,7 @@ async ( await sleep(15000); const payLinkInsertQuery = await deep.insert({ - type_id: Pay, + type_id: CancellingPay, from_id: deep.linkId, to_id: sumLinkOfCancellingPayment.id }); @@ -1691,13 +1689,13 @@ async ( }); console.log({ sumLinkOfCancellingPayment }); - const payLinkInsertQuery = await deep.insert({ - type_id: Pay, + const cancellingPayLinkInsertQuery = await deep.insert({ + type_id: CancellingPay, from_id: deep.linkId, to_id: sumLinkOfCancellingPayment.id }); - console.log({ payLinkInsertQuery }); - if (payLinkInsertQuery.error) { throw new Error(payLinkInsertQuery.error.message); } + console.log({ payLinkInsertQuery: cancellingPayLinkInsertQuery }); + if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } await sleep(3000); @@ -1752,13 +1750,13 @@ async ( await sleep(15000); - const payLinkInsertQuery = await deep.insert({ - type_id: Pay, + const cancellingPayLinkInsertQuery = await deep.insert({ + type_id: CancellingPay, from_id: deep.linkId, to_id: sumLinkOfCancellingPayment.id }); - console.log({ payLinkInsertQuery }); - if (payLinkInsertQuery.error) { throw new Error(payLinkInsertQuery.error.message); } + console.log({ payLinkInsertQuery: cancellingPayLinkInsertQuery }); + if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } await sleep(3000); From a178031485f0e6045c15fc35ab70979c2098c9ee Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 14 Sep 2022 13:26:14 +0000 Subject: [PATCH 402/683] Remove unused code --- payments-tinkoff-c2b.cjs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 928b424a..7ec5f8a0 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1231,10 +1231,6 @@ async ( console.log({payedLinkInsertQuery}) if(payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } - const paymentLinkValueUpdateQuery = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: req.body.PaymentId}}, {table: "objects"}); - console.log({paymentLinkValueUpdateQuery}); - if(paymentLinkValueUpdateQuery.error) { throw new Error(paymentLinkValueUpdateQuery.error.message); } - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); const storageClientLinkInsertQuery = await deep.insert({ type_id: StorageClient, From bc4ca019176ffb7b511838180bd4744a46e83416 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 07:57:47 +0000 Subject: [PATCH 403/683] Remove unused type --- payments-tinkoff-c2b.cjs | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 7ec5f8a0..6eb832e5 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -787,24 +787,6 @@ const f = async () => { console.log({ Error: Error }); - // TODO: Use BaseCancelled - const { - data: [{ id: Cancelled }], - } = await deep.insert({ - type_id: BaseCancelled, - from_id: TinkoffProvider, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Cancelled' } }, - }, - }, - }); - - console.log({ Cancelled }); - const { data: [{ id: paymentTreeId }], } = await deep.insert({ @@ -1234,7 +1216,7 @@ async ( const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); const storageClientLinkInsertQuery = await deep.insert({ type_id: StorageClient, - string: {data: {value: req.body.CardId}} + number: {data: {value: req.body.CardId}} }); console.log({storageClientLinkInsertQuery}); if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} From 36ac0131129bcee34bb0d5182a9f1529466e985a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 08:24:46 +0000 Subject: [PATCH 404/683] Add Income type --- payments-tinkoff-c2b.cjs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 6eb832e5..84fb7d5a 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -895,6 +895,22 @@ const f = async () => { }); console.log({Title}); + const { + data: [{ id: Income }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Income' } }, + }, + }, + }); + console.log({Income}); + const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); From f19d59e7adce60e1eaf164e08f779c5843001c93 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 08:30:45 +0000 Subject: [PATCH 405/683] Remove unused type --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 84fb7d5a..f4641d30 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1464,7 +1464,7 @@ async ( console.log('deleteTestLinks-start'); const { data: testLinks } = await deep.select({ type_id: { - _in: [ Payment, Object, Sum, Pay, Url, Payed, Error, Cancelled ], + _in: [ Payment, Object, Sum, Pay, Url, Payed, Error ], }, }); for (let i = 0; i < testLinks.length; i++) { From f4516f42e86e77f84c359cb369b1ebf369bb8611 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 08:31:25 +0000 Subject: [PATCH 406/683] Add types to deleteTestLinks --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 29cd1fde..a8aa2320 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1129,7 +1129,7 @@ async ( console.log('deleteTestLinks-start'); const { data: testLinks } = await deep.select({ type_id: { - _in: [Payment, Object, Sum, Pay, Url, Payed, Error, Cancelled], + _in: [Payment, Object, Sum, Pay, Url, Payed, Error, CancellingPayment, CancellingPay], }, }); for (let i = 0; i < testLinks.length; i++) { From 2cf4c6e5f69e4d10c22add23596e865903569eef Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 09:14:32 +0000 Subject: [PATCH 407/683] Remove unused code --- payments-tinkoff-c2b.cjs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index f4641d30..b284e729 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -820,10 +820,6 @@ const f = async () => { type_id: TreeIncludeUp, to_id: Payed, }, - { - type_id: TreeIncludeUp, - to_id: Cancelled, - }, { type_id: TreeIncludeUp, to_id: Pay, @@ -1358,8 +1354,6 @@ async ( const callTests = async () => { console.log('callTests-start'); - console.log({ paymentTreeId }); - const { data: [{ id: tinkoffProviderId }], } = await deep.insert({ From b823e40cf4736dd4b8e9df720cdf36e3963934d5 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 10:10:24 +0000 Subject: [PATCH 408/683] Update tree --- payments-tinkoff-c2b-cancelling.cjs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index a8aa2320..5d6d3223 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -673,7 +673,13 @@ const f = async () => { await deep.insert({ type_id: TreeIncludeUp, from_id: paymentTreeId, - to_id: Pay + to_id: CancellingPayment + }); + + await deep.insert({ + type_id: TreeIncludeUp, + from_id: paymentTreeId, + to_id: CancellingPay }); const StorageBusiness = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageBusiness"); From cf6e53d81f0758395596b40740834d6780f6dbb7 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 10:10:47 +0000 Subject: [PATCH 409/683] Use pay handler for cancelling pay --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 5d6d3223..6001f6b7 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -837,7 +837,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }, { type_id: HandleInsert, - from_id: Pay, + from_id: CancellingPay, in: { data: [ { From c8016e4dc910cc25ebbe9fdb9d36f6abff18b65d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 10:13:17 +0000 Subject: [PATCH 410/683] Update tree after types init --- payments-tinkoff-c2b-cancelling.cjs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 6001f6b7..0860fab4 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -670,18 +670,6 @@ const f = async () => { const paymentTreeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree"); console.log({ paymentTreeId }); - await deep.insert({ - type_id: TreeIncludeUp, - from_id: paymentTreeId, - to_id: CancellingPayment - }); - - await deep.insert({ - type_id: TreeIncludeUp, - from_id: paymentTreeId, - to_id: CancellingPay - }); - const StorageBusiness = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageBusiness"); console.log({ StorageBusiness }); @@ -711,6 +699,18 @@ const f = async () => { }); console.log({ CancellingPayment }); + await deep.insert({ + type_id: TreeIncludeUp, + from_id: paymentTreeId, + to_id: CancellingPayment + }); + + await deep.insert({ + type_id: TreeIncludeUp, + from_id: paymentTreeId, + to_id: CancellingPay + }); + const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); From 823f51f7c70a157af6f569bb49455bb91d90b214 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 12:59:54 +0000 Subject: [PATCH 411/683] Fix typ; --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 0860fab4..a6aa6dab 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1404,7 +1404,7 @@ async ( console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); const confirmResult = await testConfirm(); - const bankPaymentId = confirmResult.response.PaymentId;; + const bankPaymentId = confirmResult.response.PaymentId; const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, From 4b5d829bfa3c932df899be0d33464a809640130d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 13:08:26 +0000 Subject: [PATCH 412/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index a6aa6dab..3756ccad 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -771,7 +771,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const cancel = ${cancel.toString()}; - await deep.insert({link_id: 1, value: cancelledPaymentLink.value.value}, {table: "objects"}); + await deep.insert({link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value}, {table: "objects"}); const cancelOptions = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", From 6e68b4d3aeb01d6a2c90b372da95f579d03bbace Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 15:10:15 +0000 Subject: [PATCH 413/683] Remove code related to cancelling --- payments-tinkoff-c2b.cjs | 263 +-------------------------------------- 1 file changed, 1 insertion(+), 262 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index b284e729..afb4058a 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -355,30 +355,6 @@ const f = async () => { } }; - const cancel = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Cancel'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - const resend = async (options) => { try { const response = await axios({ @@ -600,7 +576,6 @@ const f = async () => { const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); - const BaseCancelled = await deep.id('@deep-foundation/payments', 'Cancelled'); const BaseError = await deep.id('@deep-foundation/payments', 'Error'); const Storage = await deep.id('@deep-foundation/payments', 'Storage'); @@ -962,12 +937,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { if(toLinkOfPaymentQuery.error) { throw new Error(toLinkOfPaymentQuery.error.message); } const toLinkOfPayment = toLinkOfPaymentQuery.data[0]; console.log({toLinkOfPayment}); - - const isCancellingPay = fromLinkOfPaymentQuery.data.length > 0 && toLinkOfPaymentQuery.data.length > 0 && (fromLinkOfPaymentQuery.data[0].type_id === paymentLink.type_id) && (toLinkOfPaymentQuery.data[0].type_id === await deep.id("@deep-foundation/core", "User")); - console.log({isCancellingPay}); - if(isCancellingPay) { - return; - } const init = ${init.toString()}; @@ -1551,236 +1520,7 @@ async ( return confirmResult; }; - - const testCancel = async () => { - console.log('testCancel-start'); - const testCancelAfterPayBeforeConfirmFullPrice = async () => { - console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - Amount: PRICE, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: sum, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // } - }; - - console.log({ options: initOptions }); - - let initResult = await init(initOptions); - - console.log({ initResult }); - - expect(initResult.error).to.equal(undefined); - - const url = initResult.response.PaymentURL; - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - await payInBrowser({ - browser, - page, - url, - }); - - const bankPaymentId = initResult.response.PaymentId; - - const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, - }; - - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - - console.log({ cancelResponse: cancelResult }); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('REVERSED'); - console.log('testCanselAfterPayBeforeConfirmFullPrice-end'); - }; - - const testCancelAfterPayBeforeConfirmCustomPriceX2 = async () => { - console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-start'); - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - Amount: PRICE, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: sum, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // } - }; - - console.log({ options: initOptions }); - - let initResult = await init(initOptions); - - console.log({ initResult }); - - expect(initResult.error).to.equal(undefined); - - const url = initResult.response.PaymentURL; - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, - }); - - const bankPaymentId = initResult.response.PaymentId; - - const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: Math.floor(PRICE / 3), - }; - - console.log({ cancelOptions }); - - { - const cancelResult = await cancel(cancelOptions); - - console.log({ cancelResponse: cancelResult }); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); - } - { - const cancelResult = await cancel(cancelOptions); - - console.log({ cancelResponse: cancelResult }); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); - } - console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-end'); - }; - - const testCancelAfterPayAfterConfirmFullPrice = async () => { - console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - const confirmResult = await testConfirm(); - console.log({confirmResult}); - - const bankPaymentId = confirmResult.response.PaymentId; - console.log({bankPaymentId}); - - const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, - }; - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('REFUNDED'); - console.log('testCancelAfterPayAfterConfirmFullPrice-end'); - }; - - const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); - const confirmResult = await testConfirm(); - - const bankPaymentId = confirmResult.response.PaymentId;; - - const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: Math.floor(PRICE / 3), - }; - - console.log({ cancelOptions }); - - { - const cancelResult = await cancel(cancelOptions); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); - } - { - const cancelResult = await cancel(cancelOptions); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); - } - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); - }; - - const testCancelBeforePay = async () => { - console.log('testCancelBeforePay-start'); - const initResult = await testInit(); - - const bankPaymentId = initResult.response.PaymentId;; - - const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, - }; - - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('CANCELED'); - console.log('testCancelBeforePay-end'); - }; - await testCancelAfterPayBeforeConfirmFullPrice(); - await testCancelAfterPayBeforeConfirmCustomPriceX2(); - await testCancelAfterPayAfterConfirmFullPrice(); - await testCancelAfterPayAfterConfirmCustomPriceX2(); - await testCancelBeforePay(); - - console.log('testCancel-end'); - }; - + const testGetState = async () => { const initResult = await init({ TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1974,7 +1714,6 @@ async ( await testInit(); await testConfirm(); - await testCancel(); await testGetState(); await testGetCardList(); await testResend(); From d22cc6ec21470a8a827158d24b2ed2db4918d8f7 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 15:34:45 +0000 Subject: [PATCH 414/683] Rename tests --- payments-tinkoff-c2b-cancelling.cjs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 3756ccad..c8eabb66 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1600,7 +1600,7 @@ async ( console.log('testConfirm-end'); }; - const testCancel = async () => { + const callCancelTests = async () => { console.log('testCancel-start'); const testCancelAfterPayAfterConfirmFullPrice = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testCancelAfterPayAfterConfirmFullPrice-start'); @@ -1789,8 +1789,7 @@ async ( console.log('testCancel-end'); }; - await testCancel(); - // await deleteTestLinks(); + await callCancelTests(); }; // await callRealizationTests(); From 00e70032dedc130b09d4a728eb7315cc227fffce Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 15:34:55 +0000 Subject: [PATCH 415/683] Inherit type --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index c8eabb66..ea06f852 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -645,7 +645,7 @@ const f = async () => { const { data: [{ id: CancellingPay }], } = await deep.insert({ - type_id: Pay, + type_id: /* Pay */ Type, from_id: User, to_id: Sum, in: { From 0cffa05f9946e2b9c76aabe1b6597e23ad3444ee Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 15:35:05 +0000 Subject: [PATCH 416/683] Format --- payments-tinkoff-c2b-cancelling.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index ea06f852..73c067e8 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1779,6 +1779,7 @@ async ( console.log('testCancelBeforePay-end'); }; + await testCancelAfterPayAfterConfirmFullPrice(); await deleteTestLinks(); await testCancelAfterPayAfterConfirmCustomPriceX2(); From cd35bebd6f6cd52a8aaf78923388d42b60ab1104 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 15:35:11 +0000 Subject: [PATCH 417/683] Format --- payments-tinkoff-c2b.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index afb4058a..c021a48f 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1902,6 +1902,7 @@ async ( }; await callTests(); + }; f(); \ No newline at end of file From 5d544f8ebffb1f70745c1968565b94394b931d2a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 15:55:11 +0000 Subject: [PATCH 418/683] Update `deleteTestLinks` --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 73c067e8..e5097502 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1135,7 +1135,7 @@ async ( console.log('deleteTestLinks-start'); const { data: testLinks } = await deep.select({ type_id: { - _in: [Payment, Object, Sum, Pay, Url, Payed, Error, CancellingPayment, CancellingPay], + _in: [Payment, Object, Sum, Pay, Url, Payed, Error, CancellingPayment, CancellingPay, StorageBusiness, StorageClient, Token, Title, TinkoffProvider, SumProvider, Product], }, }); for (let i = 0; i < testLinks.length; i++) { From 2bd6484fa793b7806a7bcfd54065fef43d30f3a8 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 15:55:50 +0000 Subject: [PATCH 419/683] Update `deleteTestLinks` --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index afb4058a..5e0168d1 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1427,7 +1427,7 @@ async ( console.log('deleteTestLinks-start'); const { data: testLinks } = await deep.select({ type_id: { - _in: [ Payment, Object, Sum, Pay, Url, Payed, Error ], + _in: [Payment, Object, Sum, Pay, Url, Payed, Error, CancellingPayment, CancellingPay, StorageBusiness, StorageClient, Token, Title, TinkoffProvider, SumProvider, Product], }, }); for (let i = 0; i < testLinks.length; i++) { From e6a408ede1fbc918e461a13a3ef8b45d648ff3ab Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 15:58:33 +0000 Subject: [PATCH 420/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index e5097502..14896581 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -756,14 +756,14 @@ async ({ deep, require, data: { newLink: payLink } }) => { const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); const cancelledPaymentLinkSelectQuery = await deep.select({ - id: paymentLink.from_id + id: cancellingPaymentLink.from_id }); if(cancelledPaymentLinkSelectQuery.error) { throw new Error(cancelledPaymentLinkSelectQuery.error.message); } const cancelledPaymentLink = fromLinkOfPaymentQuery.data[0]; console.log({cancelledPaymentLink}); const userLinkSelectQuery = await deep.select({ - id: paymentLink.to_id + id: cancellingPaymentLink.to_id }); if(userLinkSelectQuery.error) { throw new Error(userLinkSelectQuery.error.message); } const userLink = userLinkSelectQuery.data[0]; From 9fc506571ef4532e880abba6334ed353c4422a56 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 16:13:56 +0000 Subject: [PATCH 421/683] Rename vars --- payments-tinkoff-c2b.cjs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 5e0168d1..c1034565 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -931,16 +931,15 @@ async ({ deep, require, data: { newLink: payLink } }) => { const fromLinkOfPayment = fromLinkOfPaymentQuery.data[0]; console.log({fromLinkOfPayment}); - const toLinkOfPaymentQuery = await deep.select({ + const userLinkSelectQuery = await deep.select({ id: paymentLink.to_id }); - if(toLinkOfPaymentQuery.error) { throw new Error(toLinkOfPaymentQuery.error.message); } - const toLinkOfPayment = toLinkOfPaymentQuery.data[0]; - console.log({toLinkOfPayment}); + if(userLinkSelectQuery.error) { throw new Error(userLinkSelectQuery.error.message); } + const userLink = userLinkSelectQuery.data[0]; + console.log({userLink}); const init = ${init.toString()}; - const storageBusinessLink = toLinkOfPayment; console.log({storageBusinessLink}); const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); const tokenLinkSelectQuery = await deep.select({ From 70e3173e50c6d570f3fa427dcaa9a583b6eb2d01 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 16:20:44 +0000 Subject: [PATCH 422/683] Update pay handler --- payments-tinkoff-c2b.cjs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index c1034565..f5fa3fec 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -924,23 +924,22 @@ async ({ deep, require, data: { newLink: payLink } }) => { const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); - const fromLinkOfPaymentQuery = await deep.select({ - id: paymentLink.from_id - }); - if(fromLinkOfPaymentQuery.error) { throw new Error(fromLinkOfPaymentQuery.error.message); } - const fromLinkOfPayment = fromLinkOfPaymentQuery.data[0]; - console.log({fromLinkOfPayment}); - const userLinkSelectQuery = await deep.select({ - id: paymentLink.to_id + id: paymentLink.from_id }); if(userLinkSelectQuery.error) { throw new Error(userLinkSelectQuery.error.message); } const userLink = userLinkSelectQuery.data[0]; console.log({userLink}); + + const storageBusinessLinkSelectQuery = await deep.select({ + id: paymentLink.from_id + }); + if(storageBusinessLinkSelectQuery.error) { throw new Error(storageBusinessLinkSelectQuery.error.message); } + const storageBusinessLink = userLinkSelectQuery.data[0]; + console.log({storageBusinessLink}); const init = ${init.toString()}; - console.log({storageBusinessLink}); const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); const tokenLinkSelectQuery = await deep.select({ type_id: Token, From fde0ab165a610ca62bd3e8e09d4ed39b23b45a7f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 15 Sep 2022 16:32:07 +0000 Subject: [PATCH 423/683] Fix typo --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index f5fa3fec..8ad9b947 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -932,7 +932,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({userLink}); const storageBusinessLinkSelectQuery = await deep.select({ - id: paymentLink.from_id + id: paymentLink.to_id }); if(storageBusinessLinkSelectQuery.error) { throw new Error(storageBusinessLinkSelectQuery.error.message); } const storageBusinessLink = userLinkSelectQuery.data[0]; From 382deca3fc2d36dd2091cdb3727274e5f9128be9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 10:09:19 +0000 Subject: [PATCH 424/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 14896581..5b34aed5 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -890,7 +890,7 @@ async ( const {data: mpUpcancellingPaymentLink, error: mpUpcancellingPaymentLinkSelectQueryError} = await deep.select({ up: { parent_id: { _eq: cancellingPaymentLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree) } + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } } }); console.log({mpUpcancellingPaymentLink}); From a8f7201fa204a2665110477780f708fda280e8b9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 10:13:38 +0000 Subject: [PATCH 425/683] Call `deleteTestLinks` once --- payments-tinkoff-c2b-cancelling.cjs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 5b34aed5..8c4a4264 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1781,16 +1781,14 @@ async ( }; await testCancelAfterPayAfterConfirmFullPrice(); - await deleteTestLinks(); await testCancelAfterPayAfterConfirmCustomPriceX2(); - await deleteTestLinks(); await testCancelBeforePay(); - await deleteTestLinks(); console.log('testCancel-end'); }; await callCancelTests(); + await deleteTestLinks(); }; // await callRealizationTests(); From ab8f6a774aa3d8c20c036eabc26977715efdbedd Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 10:14:11 +0000 Subject: [PATCH 426/683] Call `deleteTestLinks` once --- payments-tinkoff-c2b.cjs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 8ad9b947..1aae786f 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1884,11 +1884,8 @@ async ( }; */ await testInit(); - await deleteTestLinks(); await testFinishAuthorize(); - await deleteTestLinks(); await testConfirm(); - await deleteTestLinks(); /*await testGetState(); await deleteTestLinks(); await testGetCardList(); @@ -1897,6 +1894,7 @@ async ( // await callRealizationTests(); await callIntegrationTests(); + await deleteTestLinks(); }; await callTests(); From 8bd6eaa247ea6609eb06cf3c400bd95530ff5353 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 10:38:09 +0000 Subject: [PATCH 427/683] Delete ONLY test links --- payments-tinkoff-c2b.cjs | 49 ++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 29 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 1aae786f..7a91dd14 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -16,6 +16,7 @@ const axios = require('axios'); const uniqid = require('uniqid'); const { expect } = require('chai'); const { get } = require('lodash'); +const { default: links } = require('@deep-foundation/deeplinks/imports/router/links'); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); @@ -1321,6 +1322,8 @@ async ( const callTests = async () => { console.log('callTests-start'); + const linkIdsToDelete = []; + const { data: [{ id: tinkoffProviderId }], } = await deep.insert({ @@ -1334,8 +1337,8 @@ async ( ], }, }); - console.log({ tinkoffProviderId }); + linkIdsToDelete.push(tinkoffProviderId); const { data: [{ id: sumProviderId }], @@ -1350,8 +1353,8 @@ async ( ], }, }); - console.log({ sumProviderId }); + linkIdsToDelete.push(sumProviderId); const { data: [storageBusinessLink], @@ -1367,6 +1370,7 @@ async ( }, }); console.log({ storageBusinessLink }); + linkIdsToDelete.push(storageBusinessLink); const { data: [{ id: tokenId }], @@ -1384,8 +1388,8 @@ async ( ], }, }); - - console.log({ token: tokenId }); + console.log({ tokenId }); + linkIdsToDelete.push(tokenId); const { data: [{ id: Product }], @@ -1402,8 +1406,8 @@ async ( ], }, }); - console.log({ Product }); + linkIdsToDelete.push(Product); const { data: [{ id: productId }], @@ -1418,22 +1422,8 @@ async ( ], }, }); - console.log({ product: productId }); - - const deleteTestLinks = async () => { - console.log('deleteTestLinks-start'); - const { data: testLinks } = await deep.select({ - type_id: { - _in: [Payment, Object, Sum, Pay, Url, Payed, Error, CancellingPayment, CancellingPay, StorageBusiness, StorageClient, Token, Title, TinkoffProvider, SumProvider, Product], - }, - }); - for (let i = 0; i < testLinks.length; i++) { - const { id } = testLinks[i]; - await deep.delete({ id: id }); - } - console.log('deleteTestLinks-end'); - }; + linkIdsToDelete.push(productId); const callRealizationTests = async () => { const testInit = async () => { @@ -1741,6 +1731,8 @@ async ( }, }); console.log({ paymentId }); + linkIdsToDelete.push(paymentId); + const { data: [{ id: sumId }], @@ -1758,8 +1750,8 @@ async ( ], }, }); - console.log({ sum: sumId }); + linkIdsToDelete.push(sumId); const { data: [{ id: objectId }], @@ -1776,8 +1768,8 @@ async ( ], }, }); - - console.log({ object: objectId }); + console.log({ objectId }); + linkIdsToDelete.push(objectId); const { data: [{ id: payId }], @@ -1794,8 +1786,8 @@ async ( ], }, }); - - console.log({ pay: payId }); + console.log({ payId }); + linkIdsToDelete.push(payId); await sleep(9000); @@ -1887,14 +1879,13 @@ async ( await testFinishAuthorize(); await testConfirm(); /*await testGetState(); - await deleteTestLinks(); - await testGetCardList(); - await deleteTestLinks();*/ + await testGetCardList();*/ }; // await callRealizationTests(); await callIntegrationTests(); - await deleteTestLinks(); + + await deep.delete(linkIdsToDelete); }; await callTests(); From 72e571c46a8b85cc004126eaf279e5172a8f6a0a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 10:47:10 +0000 Subject: [PATCH 428/683] Delete only test links --- payments-tinkoff-c2b-cancelling.cjs | 75 ++++++++++++----------------- 1 file changed, 30 insertions(+), 45 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 8c4a4264..a181c20e 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1028,7 +1028,7 @@ async ( const callTests = async () => { console.log('callTests-start'); - console.log({ paymentTreeId }); + const linkIdsToDelete = []; const { data: [{ id: tinkoffProviderId }], @@ -1043,8 +1043,8 @@ async ( ], }, }); - console.log({ tinkoffProviderId }); + linkIdsToDelete.push(tinkoffProviderId); const { data: [{ id: sumProviderId }], @@ -1059,8 +1059,8 @@ async ( ], }, }); - console.log({ sumProviderId }); + linkIdsToDelete.push(sumProviderId); const { data: [storageBusinessLink], @@ -1075,11 +1075,11 @@ async ( ], }, }); - console.log({ storageBusinessLink }); + linkIdsToDelete.push(storageBusinessLink.id); const { - data: [{ id: token }], + data: [{ id: tokenId }], } = await deep.insert({ type_id: Token, from_id: storageBusinessLink.id, @@ -1095,7 +1095,8 @@ async ( }, }); - console.log({ token }); + console.log({ tokenId }); + linkIdsToDelete.push(tokenId); const { data: [{ id: Product }], @@ -1112,8 +1113,8 @@ async ( ], }, }); - console.log({ Product }); + linkIdsToDelete.push(Product); const { data: [{ id: productId }], @@ -1128,22 +1129,8 @@ async ( ], }, }); - - console.log({ product: productId }); - - const deleteTestLinks = async () => { - console.log('deleteTestLinks-start'); - const { data: testLinks } = await deep.select({ - type_id: { - _in: [Payment, Object, Sum, Pay, Url, Payed, Error, CancellingPayment, CancellingPay, StorageBusiness, StorageClient, Token, Title, TinkoffProvider, SumProvider, Product], - }, - }); - for (let i = 0; i < testLinks.length; i++) { - const { id } = testLinks[i]; - await deep.delete({ id: id }); - } - console.log('deleteTestLinks-end'); - }; + console.log({ productId }); + linkIdsToDelete.push(productId); const callRealizationTests = async () => { const testInit = async () => { @@ -1466,20 +1453,6 @@ async ( const callIntegrationTests = async () => { const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); - console.log("Payment insert arg " , { - type_id: Payment, - object: { data: { value: { orderId: uniqid() } } }, - from_id: deep.linkId, - to_id: storageBusinessLink.id, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); const { data: [{ id: paymentId }], } = await deep.insert({ @@ -1497,6 +1470,7 @@ async ( }, }); console.log({ paymentId }); + linkIdsToDelete.push(paymentId); const { data: [{ id: sumId }], @@ -1514,8 +1488,8 @@ async ( ], }, }); - - console.log({ sum: sumId }); + console.log({ sumId }); + linkIdsToDelete.push(sumId); const { data: [{ id: objectId }], @@ -1532,8 +1506,8 @@ async ( ], }, }); - - console.log({ object: objectId }); + console.log({ sumId }); + linkIdsToDelete.push(sumId); const { data: [{ id: payId }], @@ -1550,8 +1524,8 @@ async ( ], }, }); - - console.log({ pay: payId }); + console.log({ payId }); + linkIdsToDelete.push(payId); await sleep(9000); @@ -1622,6 +1596,7 @@ async ( if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; console.log({ cancellingPaymentLink }); + linkIdsToDelete.push(cancellingPaymentLink.id); await sleep(3000); @@ -1634,6 +1609,7 @@ async ( number: { data: { value: PRICE } } }); console.log({ sumLinkOfCancellingPayment }); + linkIdsToDelete.push(sumLinkOfCancellingPayment.id); await sleep(15000); @@ -1644,6 +1620,7 @@ async ( }); console.log({ payLinkInsertQuery }); if (payLinkInsertQuery.error) { throw new Error(payLinkInsertQuery.error.message); } + linkIdsToDelete.push(payLinkInsertQuery.data[0].id); await sleep(3000); @@ -1682,6 +1659,7 @@ async ( if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; console.log({ cancellingPaymentLink }); + linkIdsToDelete.push(cancellingPaymentLink.id); await sleep(3000); @@ -1694,14 +1672,16 @@ async ( number: { data: { value: Math.floor(PRICE / 3) } } }); console.log({ sumLinkOfCancellingPayment }); + linkIdsToDelete.push(sumLinkOfCancellingPayment.id); const cancellingPayLinkInsertQuery = await deep.insert({ type_id: CancellingPay, from_id: deep.linkId, to_id: sumLinkOfCancellingPayment.id }); - console.log({ payLinkInsertQuery: cancellingPayLinkInsertQuery }); + console.log({ cancellingPayLinkInsertQuery }); if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } + linkIdsToDelete.push(cancellingPayLinkInsertQuery.data[0].id); await sleep(3000); @@ -1741,6 +1721,7 @@ async ( if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; console.log({ cancellingPaymentLink }); + linkIdsToDelete.push(cancellingPaymentLink.id); await sleep(3000); @@ -1753,6 +1734,7 @@ async ( number: { data: { value: PRICE } } }); console.log({ sumLinkOfCancellingPayment }); + linkIdsToDelete.push(sumLinkOfCancellingPayment.id); await sleep(15000); @@ -1761,8 +1743,9 @@ async ( from_id: deep.linkId, to_id: sumLinkOfCancellingPayment.id }); - console.log({ payLinkInsertQuery: cancellingPayLinkInsertQuery }); + console.log({ cancellingPayLinkInsertQuery }); if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } + linkIdsToDelete.push(cancellingPayLinkInsertQuery.data[0].id); await sleep(3000); @@ -1793,6 +1776,8 @@ async ( // await callRealizationTests(); await callIntegrationTests(); + + await deep.delete(linkIdsToDelete); }; await callTests(); From 68583d7b8cc8a5ce08eb6281ae2062cc04a76ebd Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 10:47:52 +0000 Subject: [PATCH 429/683] Push id, not a link to array of ids --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 7a91dd14..86fd061b 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1370,7 +1370,7 @@ async ( }, }); console.log({ storageBusinessLink }); - linkIdsToDelete.push(storageBusinessLink); + linkIdsToDelete.push(storageBusinessLink.id); const { data: [{ id: tokenId }], From bc59a878fb05704e2dd0a12e026e1505feadd914 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 10:52:54 +0000 Subject: [PATCH 430/683] Get link from insert, not id --- payments-tinkoff-c2b.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 5a444d21..fe1c701d 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1373,7 +1373,7 @@ async ( linkIdsToDelete.push(storageBusinessLink.id); const { - data: [{ id: tokenId }], + data: [tokenLink], } = await deep.insert({ type_id: Token, from_id: storageBusinessLink.id, @@ -1388,8 +1388,8 @@ async ( ], }, }); - console.log({ tokenId }); - linkIdsToDelete.push(tokenId); + console.log({ tokenLink }); + linkIdsToDelete.push(tokenLink.id); const { data: [{ id: Product }], From b6575848ab257e6962077442e53f037d8adf1bb6 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 10:56:15 +0000 Subject: [PATCH 431/683] Revert "Get link from insert, not id" This reverts commit bc59a878fb05704e2dd0a12e026e1505feadd914. --- payments-tinkoff-c2b.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index fe1c701d..5a444d21 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1373,7 +1373,7 @@ async ( linkIdsToDelete.push(storageBusinessLink.id); const { - data: [tokenLink], + data: [{ id: tokenId }], } = await deep.insert({ type_id: Token, from_id: storageBusinessLink.id, @@ -1388,8 +1388,8 @@ async ( ], }, }); - console.log({ tokenLink }); - linkIdsToDelete.push(tokenLink.id); + console.log({ tokenId }); + linkIdsToDelete.push(tokenId); const { data: [{ id: Product }], From 1d70abf0bd49406c918c192063d3a812d6eb88b8 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 10:59:03 +0000 Subject: [PATCH 432/683] Fix typo --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 86fd061b..1ff5bca9 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -936,7 +936,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { id: paymentLink.to_id }); if(storageBusinessLinkSelectQuery.error) { throw new Error(storageBusinessLinkSelectQuery.error.message); } - const storageBusinessLink = userLinkSelectQuery.data[0]; + const storageBusinessLink = storageBusinessLinkSelectQuery.data[0]; console.log({storageBusinessLink}); const init = ${init.toString()}; From 04fc0acee2bf3eba32f2047502b441eaf8cd00d6 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 13:53:59 +0000 Subject: [PATCH 433/683] Add console log --- payments-tinkoff-c2b-cancelling.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index a181c20e..0313995c 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1552,6 +1552,7 @@ async ( } = await deep.select({ type_id: Url, }); + console.log({url}); const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); From 23b846cdd88eb8be46b46183b5f348e15dcd06fa Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 13:59:39 +0000 Subject: [PATCH 434/683] Format --- payments-tinkoff-c2b.cjs | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 1ff5bca9..76f895b9 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -865,7 +865,7 @@ const f = async () => { }, }, }); - console.log({Title}); + console.log({ Title }); const { data: [{ id: Income }], @@ -881,7 +881,7 @@ const f = async () => { }, }, }); - console.log({Income}); + console.log({ Income }); const handlersDependencies = ` const crypto = require('crypto'); @@ -1339,7 +1339,7 @@ async ( }); console.log({ tinkoffProviderId }); linkIdsToDelete.push(tinkoffProviderId); - + const { data: [{ id: sumProviderId }], } = await deep.insert({ @@ -1378,7 +1378,7 @@ async ( type_id: Token, from_id: storageBusinessLink.id, to_id: storageBusinessLink.id, - string: {data: {value: process.env.PAYMENT_TEST_TERMINAL_KEY}}, + string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, in: { data: [ { @@ -1508,7 +1508,7 @@ async ( return confirmResult; }; - + const testGetState = async () => { const initResult = await init({ TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, @@ -1640,10 +1640,10 @@ async ( TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, CustomerKey: uniqid(), }; - console.log({addCustomerOptions}); + console.log({ addCustomerOptions }); const addCustomerResult = await addCustomer(addCustomerOptions); - console.log({addCustomerResult}); + console.log({ addCustomerResult }); expect(addCustomerResult.error).to.equal(undefined); console.log('testAddCustomer-end'); @@ -1712,13 +1712,13 @@ async ( }; const callIntegrationTests = async () => { - const testInit = async ({customerKey} = {customerKey: uniqid()}) => { + const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); const { data: [{ id: paymentId }], } = await deep.insert({ type_id: Payment, - object: { data: { value: {orderId: uniqid()} } }, + object: { data: { value: { orderId: uniqid() } } }, from_id: deep.linkId, to_id: storageBusinessLink.id, in: { @@ -1802,9 +1802,9 @@ async ( console.log('testInit-end'); }; - const testFinishAuthorize = async ({customerKey} = {customerKey: uniqid()}) => { + const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testFinishAuthorize-start'); - await testInit({customerKey}); + await testInit({ customerKey }); const { data: [ { @@ -1825,9 +1825,9 @@ async ( console.log('testFinishAuthorize-end'); }; - const testConfirm = async ({customerKey} = {customerKey: uniqid()}) => { + const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testConfirm-start'); - await testFinishAuthorize({customerKey}); + await testFinishAuthorize({ customerKey }); await sleep(17000); let { data } = await deep.select({ type_id: Payed, @@ -1889,6 +1889,7 @@ async ( }; await callTests(); + }; f(); \ No newline at end of file From 6fd46c66e7898e0c55f8be52faca590885d937c6 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 14:09:26 +0000 Subject: [PATCH 435/683] Add contains to links created by package --- payments-tinkoff-c2b.cjs | 86 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 83 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 76f895b9..e8ff32f4 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -779,30 +779,86 @@ const f = async () => { { type_id: TreeIncludeNode, to_id: Payment, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }, { type_id: TreeIncludeUp, to_id: Sum, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }, { type_id: TreeIncludeDown, to_id: Object, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }, { type_id: TreeIncludeUp, to_id: Error, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }, { type_id: TreeIncludeUp, to_id: Payed, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }, { type_id: TreeIncludeUp, to_id: Pay, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }, { type_id: TreeIncludeUp, to_id: Url, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }, ], }, @@ -1196,7 +1252,15 @@ async ( const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); const storageClientLinkInsertQuery = await deep.insert({ type_id: StorageClient, - number: {data: {value: req.body.CardId}} + number: {data: {value: req.body.CardId}}, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({storageClientLinkInsertQuery}); if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} @@ -1205,7 +1269,15 @@ async ( const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); const titleLinkInsertQuery = await deep.insert({ type_id: Title, - string: {data: {value: req.body.Pan}} + string: {data: {value: req.body.Pan}}, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({titleLinkInsertQuery}); if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} @@ -1214,7 +1286,15 @@ async ( const incomeLinkInsertQuery = await deep.insert({ type_id: Income, from_id: paymentLink.id, - to_id: storageClientLink.id + to_id: storageClientLink.id, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({incomeLinkInsertQuery}); if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} From d1ffba311011f8c10ecb47288c495522b6a6fc16 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 14:11:18 +0000 Subject: [PATCH 436/683] Put the contain type in the variable in the handlers --- payments-tinkoff-c2b.cjs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index e8ff32f4..66445bc6 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -953,6 +953,8 @@ const f = async () => { async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} + const Contain = await deep.id("@deep-foundation/core", 'Contain'); + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider @@ -1050,7 +1052,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { in: { data: [ { - type_id: await deep.id("@deep-foundation/core", 'Contain'), + type_id: Contain, from_id: deep.linkId, }, ], @@ -1068,7 +1070,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { in: { data: [ { - type_id: await deep.id("@deep-foundation/core", 'Contain'), + type_id: Contain, from_id: deep.linkId, }, ], @@ -1145,6 +1147,8 @@ async ( const reqBody = req.body; console.log({reqBody}); + const Contain = await deep.id("@deep-foundation/core", 'Contain'); + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider @@ -1221,7 +1225,7 @@ async ( in: { data: [ { - type_id: await deep.id("@deep-foundation/core", 'Contain'), + type_id: Contain, from_id: deep.linkId, }, ], @@ -1240,7 +1244,7 @@ async ( in: { data: [ { - type_id: await deep.id("@deep-foundation/core", 'Contain'), + type_id: Contain, from_id: deep.linkId, }, ], From 55d0e85419ab8d94760af2b285823c562136e374 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 14:18:02 +0000 Subject: [PATCH 437/683] Add contains --- payments-tinkoff-c2b-cancelling.cjs | 132 +++++++++++++++++++++++++--- 1 file changed, 118 insertions(+), 14 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 0313995c..42e6589d 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -702,13 +702,29 @@ const f = async () => { await deep.insert({ type_id: TreeIncludeUp, from_id: paymentTreeId, - to_id: CancellingPayment + to_id: CancellingPayment, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); await deep.insert({ type_id: TreeIncludeUp, from_id: paymentTreeId, - to_id: CancellingPay + to_id: CancellingPay, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); const handlersDependencies = ` @@ -793,7 +809,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { in: { data: [ { - type_id: await deep.id("${'@deep-foundation/core'}", 'Contain'), + type_id: await deep.id("@deep-foundation/core", 'Contain'), from_id: deep.linkId, }, ], @@ -806,7 +822,15 @@ async ({ deep, require, data: { newLink: payLink } }) => { const {error: payedLinkInsertQueryError} = await deep.insert({ type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), from_id: tinkoffProviderLink.id, - to_id: payLink.id + to_id: payLink.id, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError.message); } @@ -920,7 +944,15 @@ async ( const payedInsertLinkInsertQuery = await deep.insert({ type_id: Payed, from_id: tinkoffProviderLink.id, - to_id: sumLink.id + to_id: sumLink.id, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); if(payedInsertLinkInsertQuery.error) {throw new Error(payedInsertLinkInsertQuery.error.message);} } @@ -1591,7 +1623,15 @@ async ( const cancellingPaymentLinkInsertQuery = await deep.insert({ type_id: CancellingPayment, from_id: paymentLink.id, - to_id: deep.linkId + to_id: deep.linkId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({ cancellingPaymentLinkInsertQuery }); if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } @@ -1607,7 +1647,15 @@ async ( type_id: Sum, from_id: sumProviderId, to_id: cancellingPaymentLink.id, - number: { data: { value: PRICE } } + number: { data: { value: PRICE } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({ sumLinkOfCancellingPayment }); linkIdsToDelete.push(sumLinkOfCancellingPayment.id); @@ -1617,7 +1665,15 @@ async ( const payLinkInsertQuery = await deep.insert({ type_id: CancellingPay, from_id: deep.linkId, - to_id: sumLinkOfCancellingPayment.id + to_id: sumLinkOfCancellingPayment.id, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({ payLinkInsertQuery }); if (payLinkInsertQuery.error) { throw new Error(payLinkInsertQuery.error.message); } @@ -1654,7 +1710,15 @@ async ( const cancellingPaymentLinkInsertQuery = await deep.insert({ type_id: CancellingPayment, from_id: paymentLink.id, - to_id: deep.linkId + to_id: deep.linkId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({ cancellingPaymentLinkInsertQuery }); if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } @@ -1670,7 +1734,15 @@ async ( type_id: Sum, from_id: sumProviderId, to_id: cancellingPaymentLink.id, - number: { data: { value: Math.floor(PRICE / 3) } } + number: { data: { value: Math.floor(PRICE / 3) } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({ sumLinkOfCancellingPayment }); linkIdsToDelete.push(sumLinkOfCancellingPayment.id); @@ -1678,7 +1750,15 @@ async ( const cancellingPayLinkInsertQuery = await deep.insert({ type_id: CancellingPay, from_id: deep.linkId, - to_id: sumLinkOfCancellingPayment.id + to_id: sumLinkOfCancellingPayment.id, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({ cancellingPayLinkInsertQuery }); if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } @@ -1716,7 +1796,15 @@ async ( const cancellingPaymentLinkInsertQuery = await deep.insert({ type_id: CancellingPayment, from_id: paymentLink.id, - to_id: deep.linkId + to_id: deep.linkId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({ cancellingPaymentLinkInsertQuery }); if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } @@ -1732,7 +1820,15 @@ async ( type_id: Sum, from_id: sumProviderId, to_id: cancellingPaymentLink.id, - number: { data: { value: PRICE } } + number: { data: { value: PRICE } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({ sumLinkOfCancellingPayment }); linkIdsToDelete.push(sumLinkOfCancellingPayment.id); @@ -1742,7 +1838,15 @@ async ( const cancellingPayLinkInsertQuery = await deep.insert({ type_id: CancellingPay, from_id: deep.linkId, - to_id: sumLinkOfCancellingPayment.id + to_id: sumLinkOfCancellingPayment.id, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({ cancellingPayLinkInsertQuery }); if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } From c78c1b27297c6e628f93a1ff16dd562b62f7e070 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 14:20:12 +0000 Subject: [PATCH 438/683] Put the contain in the variable in the handlers --- payments-tinkoff-c2b-cancelling.cjs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 42e6589d..e228e3fc 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -741,6 +741,8 @@ const f = async () => { async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} + const Contain = await deep.id("@deep-foundation/core", 'Contain'); + const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ down: { link_id: { _eq: payLink.id }, @@ -809,7 +811,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { in: { data: [ { - type_id: await deep.id("@deep-foundation/core", 'Contain'), + type_id: Contain, from_id: deep.linkId, }, ], From b3bb480a13594230897aed9fab0f23f245262067 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 14:34:11 +0000 Subject: [PATCH 439/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index e228e3fc..73ab9ce5 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1540,8 +1540,8 @@ async ( ], }, }); - console.log({ sumId }); - linkIdsToDelete.push(sumId); + console.log({ objectId }); + linkIdsToDelete.push(objectId); const { data: [{ id: payId }], From e72e5bc733033b220d09036c547b02b91440751d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 14:34:55 +0000 Subject: [PATCH 440/683] Change sleep time --- payments-tinkoff-c2b-cancelling.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 73ab9ce5..88f2e87a 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1601,7 +1601,7 @@ async ( const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testConfirm-start'); await testFinishAuthorize({ customerKey }); - await sleep(17000); + await sleep(7000); let { data } = await deep.select({ type_id: Payed, }); @@ -1662,7 +1662,7 @@ async ( console.log({ sumLinkOfCancellingPayment }); linkIdsToDelete.push(sumLinkOfCancellingPayment.id); - await sleep(15000); + await sleep(5000); const payLinkInsertQuery = await deep.insert({ type_id: CancellingPay, @@ -1835,7 +1835,7 @@ async ( console.log({ sumLinkOfCancellingPayment }); linkIdsToDelete.push(sumLinkOfCancellingPayment.id); - await sleep(15000); + await sleep(5000); const cancellingPayLinkInsertQuery = await deep.insert({ type_id: CancellingPay, From c5801d5738c9f22b897300c7c9a95e0ffdf678f2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 16 Sep 2022 14:59:25 +0000 Subject: [PATCH 441/683] Add returns to tests, fix logic --- payments-tinkoff-c2b-cancelling.cjs | 133 ++++++++++++++++------------ 1 file changed, 78 insertions(+), 55 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 88f2e87a..f9362fef 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1065,7 +1065,7 @@ async ( const linkIdsToDelete = []; const { - data: [{ id: tinkoffProviderId }], + data: [tinkoffProviderLink], } = await deep.insert({ type_id: TinkoffProvider, in: { @@ -1077,11 +1077,11 @@ async ( ], }, }); - console.log({ tinkoffProviderId }); - linkIdsToDelete.push(tinkoffProviderId); + console.log({ tinkoffProviderLink }); + linkIdsToDelete.push(tinkoffProviderLink); const { - data: [{ id: sumProviderId }], + data: [sumProviderLink], } = await deep.insert({ type_id: SumProvider, in: { @@ -1093,8 +1093,8 @@ async ( ], }, }); - console.log({ sumProviderId }); - linkIdsToDelete.push(sumProviderId); + console.log({ sumProviderLink }); + linkIdsToDelete.push(sumProviderLink); const { data: [storageBusinessLink], @@ -1110,10 +1110,10 @@ async ( }, }); console.log({ storageBusinessLink }); - linkIdsToDelete.push(storageBusinessLink.id); + linkIdsToDelete.push(storageBusinessLink); const { - data: [{ id: tokenId }], + data: [tokenLink], } = await deep.insert({ type_id: Token, from_id: storageBusinessLink.id, @@ -1129,8 +1129,8 @@ async ( }, }); - console.log({ tokenId }); - linkIdsToDelete.push(tokenId); + console.log({ tokenLink }); + linkIdsToDelete.push(tokenLink); const { data: [{ id: Product }], @@ -1151,7 +1151,7 @@ async ( linkIdsToDelete.push(Product); const { - data: [{ id: productId }], + data: [productLink], } = await deep.insert({ type_id: Product, in: { @@ -1487,8 +1487,11 @@ async ( const callIntegrationTests = async () => { const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); + + const createdLinks = []; + const { - data: [{ id: paymentId }], + data: [paymentLink], } = await deep.insert({ type_id: Payment, object: { data: { value: { orderId: uniqid() } } }, @@ -1503,15 +1506,15 @@ async ( ], }, }); - console.log({ paymentId }); - linkIdsToDelete.push(paymentId); + console.log({ paymentLink }); + createdLinks.push(paymentLink); const { - data: [{ id: sumId }], + data: [sumLink], } = await deep.insert({ type_id: Sum, - from_id: sumProviderId, - to_id: paymentId, + from_id: sumProviderLink.id, + to_id: paymentLink.id, number: { data: { value: 150 } }, in: { data: [ @@ -1522,15 +1525,15 @@ async ( ], }, }); - console.log({ sumId }); - linkIdsToDelete.push(sumId); + console.log({ sumLink }); + createdLinks.push(sumLink); const { - data: [{ id: objectId }], + data: [objectLink], } = await deep.insert({ type_id: Object, - from_id: paymentId, - to_id: productId, + from_id: paymentLink.id, + to_id: productLink.id, in: { data: [ { @@ -1540,15 +1543,15 @@ async ( ], }, }); - console.log({ objectId }); - linkIdsToDelete.push(objectId); + console.log({ objectLink }); + createdLinks.push(objectLink); const { - data: [{ id: payId }], + data: [payLink], } = await deep.insert({ type_id: Pay, from_id: deep.linkId, - to_id: sumId, + to_id: sumLink.id, in: { data: [ { @@ -1558,34 +1561,37 @@ async ( ], }, }); - console.log({ payId }); - linkIdsToDelete.push(payId); + console.log({ payLink }); + createdLinks.push(payLink); await sleep(9000); const { - data: { length }, + data, } = await deep.select({ type_id: Url, - to_id: payId, + to_id: payLink.id, }); - expect(length).to.greaterThan(0); + expect(data.length).to.greaterThan(0); + + createdLinks.push(data[0]); + console.log('testInit-end'); + + return { + createdLinks + } }; const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testFinishAuthorize-start'); - await testInit({ customerKey }); - const { - data: [ - { - value: { value: url }, - }, - ], - } = await deep.select({ - type_id: Url, - }); + const {createdLinks} = await testInit({ customerKey }); + + const urlLink = createdLinks.find(link => link.type_id === Url); + expect(urlLink).to.not.be.undefined() + + const url = urlLink.value.value; console.log({url}); const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); @@ -1596,17 +1602,34 @@ async ( url, }); console.log('testFinishAuthorize-end'); + + return { + createdLinks + } }; const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testConfirm-start'); - await testFinishAuthorize({ customerKey }); + const {createdLinks} = await testFinishAuthorize({ customerKey }); await sleep(7000); - let { data } = await deep.select({ + + const payLink = createdLinks.find(link => link.type_id === Pay); + expect(payLink).to.be.not.undefined(); + + const {data} = await deep.select({ type_id: Payed, + to_id: payLink.id }); + expect(data.length).to.greaterThan(0); + + createdLinks.push(data[0]); + console.log('testConfirm-end'); + + return { + createdLinks + } }; const callCancelTests = async () => { @@ -1639,7 +1662,7 @@ async ( if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; console.log({ cancellingPaymentLink }); - linkIdsToDelete.push(cancellingPaymentLink.id); + createdLinkIds.push(cancellingPaymentLink.id); await sleep(3000); @@ -1647,7 +1670,7 @@ async ( data: [sumLinkOfCancellingPayment] } = await deep.insert({ type_id: Sum, - from_id: sumProviderId, + from_id: sumProviderLink.id, to_id: cancellingPaymentLink.id, number: { data: { value: PRICE } }, in: { @@ -1660,7 +1683,7 @@ async ( }, }); console.log({ sumLinkOfCancellingPayment }); - linkIdsToDelete.push(sumLinkOfCancellingPayment.id); + createdLinkIds.push(sumLinkOfCancellingPayment.id); await sleep(5000); @@ -1679,7 +1702,7 @@ async ( }); console.log({ payLinkInsertQuery }); if (payLinkInsertQuery.error) { throw new Error(payLinkInsertQuery.error.message); } - linkIdsToDelete.push(payLinkInsertQuery.data[0].id); + createdLinkIds.push(payLinkInsertQuery.data[0].id); await sleep(3000); @@ -1726,7 +1749,7 @@ async ( if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; console.log({ cancellingPaymentLink }); - linkIdsToDelete.push(cancellingPaymentLink.id); + createdLinkIds.push(cancellingPaymentLink.id); await sleep(3000); @@ -1734,7 +1757,7 @@ async ( data: [sumLinkOfCancellingPayment] } = await deep.insert({ type_id: Sum, - from_id: sumProviderId, + from_id: sumProviderLink.id, to_id: cancellingPaymentLink.id, number: { data: { value: Math.floor(PRICE / 3) } }, in: { @@ -1747,7 +1770,7 @@ async ( }, }); console.log({ sumLinkOfCancellingPayment }); - linkIdsToDelete.push(sumLinkOfCancellingPayment.id); + createdLinkIds.push(sumLinkOfCancellingPayment.id); const cancellingPayLinkInsertQuery = await deep.insert({ type_id: CancellingPay, @@ -1764,7 +1787,7 @@ async ( }); console.log({ cancellingPayLinkInsertQuery }); if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } - linkIdsToDelete.push(cancellingPayLinkInsertQuery.data[0].id); + createdLinkIds.push(cancellingPayLinkInsertQuery.data[0].id); await sleep(3000); @@ -1812,7 +1835,7 @@ async ( if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; console.log({ cancellingPaymentLink }); - linkIdsToDelete.push(cancellingPaymentLink.id); + createdLinkIds.push(cancellingPaymentLink.id); await sleep(3000); @@ -1820,7 +1843,7 @@ async ( data: [sumLinkOfCancellingPayment] } = await deep.insert({ type_id: Sum, - from_id: sumProviderId, + from_id: sumProviderLink.id, to_id: cancellingPaymentLink.id, number: { data: { value: PRICE } }, in: { @@ -1833,7 +1856,7 @@ async ( }, }); console.log({ sumLinkOfCancellingPayment }); - linkIdsToDelete.push(sumLinkOfCancellingPayment.id); + createdLinkIds.push(sumLinkOfCancellingPayment.id); await sleep(5000); @@ -1852,7 +1875,7 @@ async ( }); console.log({ cancellingPayLinkInsertQuery }); if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } - linkIdsToDelete.push(cancellingPayLinkInsertQuery.data[0].id); + createdLinkIds.push(cancellingPayLinkInsertQuery.data[0].id); await sleep(3000); From 6cc43543f80f16f9fd0987444a9a63a5556e3f37 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 17 Sep 2022 04:01:45 +0000 Subject: [PATCH 442/683] Return created links in tests and use it --- payments-tinkoff-c2b-cancelling.cjs | 40 ++++++++++------------------- 1 file changed, 14 insertions(+), 26 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index f9362fef..babc9963 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1636,13 +1636,9 @@ async ( console.log('testCancel-start'); const testCancelAfterPayAfterConfirmFullPrice = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - await testConfirm({ customerKey }); + const {createdLinks} = await testConfirm({ customerKey }); - const { - data: [paymentLink], - } = await deep.select({ - type_id: Payment, - }); + const paymentLink = createdLinks.find(link => link.type_id === Payment); console.log({ paymentLink }); const cancellingPaymentLinkInsertQuery = await deep.insert({ @@ -1662,7 +1658,7 @@ async ( if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; console.log({ cancellingPaymentLink }); - createdLinkIds.push(cancellingPaymentLink.id); + createdLinks.push(cancellingPaymentLink); await sleep(3000); @@ -1683,7 +1679,7 @@ async ( }, }); console.log({ sumLinkOfCancellingPayment }); - createdLinkIds.push(sumLinkOfCancellingPayment.id); + createdLinks.push(sumLinkOfCancellingPayment); await sleep(5000); @@ -1702,7 +1698,7 @@ async ( }); console.log({ payLinkInsertQuery }); if (payLinkInsertQuery.error) { throw new Error(payLinkInsertQuery.error.message); } - createdLinkIds.push(payLinkInsertQuery.data[0].id); + createdLinks.push(payLinkInsertQuery.data[0]); await sleep(3000); @@ -1722,13 +1718,9 @@ async ( const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); - await testConfirm({ customerKey }); + const {createdLinks} = await testConfirm({ customerKey }); - const { - data: [paymentLink], - } = await deep.select({ - type_id: Payment, - }); + const paymentLink = createdLinks.find(link => link.type_id === Payment); console.log({ paymentLink }); for (let i = 0; i < 2; i++) { @@ -1749,7 +1741,7 @@ async ( if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; console.log({ cancellingPaymentLink }); - createdLinkIds.push(cancellingPaymentLink.id); + createdLinks.push(cancellingPaymentLink); await sleep(3000); @@ -1770,7 +1762,7 @@ async ( }, }); console.log({ sumLinkOfCancellingPayment }); - createdLinkIds.push(sumLinkOfCancellingPayment.id); + createdLinks.push(sumLinkOfCancellingPayment); const cancellingPayLinkInsertQuery = await deep.insert({ type_id: CancellingPay, @@ -1787,7 +1779,7 @@ async ( }); console.log({ cancellingPayLinkInsertQuery }); if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } - createdLinkIds.push(cancellingPayLinkInsertQuery.data[0].id); + createdLinks.push(cancellingPayLinkInsertQuery.data[0]); await sleep(3000); @@ -1811,11 +1803,7 @@ async ( console.log('testCancelBeforePay-start'); await testInit({ customerKey }); - const { - data: [paymentLink], - } = await deep.select({ - type_id: Payment, - }); + const paymentLink = createdLinks.find(link => link.type_id === Payment); console.log({ paymentLink }); const cancellingPaymentLinkInsertQuery = await deep.insert({ @@ -1835,7 +1823,7 @@ async ( if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; console.log({ cancellingPaymentLink }); - createdLinkIds.push(cancellingPaymentLink.id); + createdLinks.push(cancellingPaymentLink); await sleep(3000); @@ -1856,7 +1844,7 @@ async ( }, }); console.log({ sumLinkOfCancellingPayment }); - createdLinkIds.push(sumLinkOfCancellingPayment.id); + createdLinks.push(sumLinkOfCancellingPayment); await sleep(5000); @@ -1875,7 +1863,7 @@ async ( }); console.log({ cancellingPayLinkInsertQuery }); if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } - createdLinkIds.push(cancellingPayLinkInsertQuery.data[0].id); + createdLinks.push(cancellingPayLinkInsertQuery.data[0]); await sleep(3000); From 704d960f2605c1436b83f8754f4499fb59ebf37d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 17 Sep 2022 04:02:18 +0000 Subject: [PATCH 443/683] Change sum value to PRICE --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index babc9963..894c4076 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1515,7 +1515,7 @@ async ( type_id: Sum, from_id: sumProviderLink.id, to_id: paymentLink.id, - number: { data: { value: 150 } }, + number: { data: { value: PRICE } }, in: { data: [ { From 002f5ae232918cdba18cf903b9237ee7ace34aa1 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 17 Sep 2022 13:38:37 +0600 Subject: [PATCH 444/683] Return values from tests, get links related to the current payment --- payments-tinkoff-c2b.cjs | 111 ++++++++++++++++++++++----------------- 1 file changed, 63 insertions(+), 48 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index e8ff32f4..8b8d251c 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -501,7 +501,7 @@ const f = async () => { const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; - console.log({ paymentId: bankPaymentId }); + console.log({ paymentLink.id: bankPaymentId }); return bankPaymentId; }; @@ -1402,10 +1402,10 @@ async ( const callTests = async () => { console.log('callTests-start'); - const linkIdsToDelete = []; + const createdLinks = []; const { - data: [{ id: tinkoffProviderId }], + data: [tinkoffProviderLink], } = await deep.insert({ type_id: TinkoffProvider, in: { @@ -1417,11 +1417,11 @@ async ( ], }, }); - console.log({ tinkoffProviderId }); - linkIdsToDelete.push(tinkoffProviderId); + console.log({ tinkoffProviderLink }); + createdLinks.push(tinkoffProviderLink); const { - data: [{ id: sumProviderId }], + data: [{ id: sumProviderLink }], } = await deep.insert({ type_id: SumProvider, in: { @@ -1433,8 +1433,8 @@ async ( ], }, }); - console.log({ sumProviderId }); - linkIdsToDelete.push(sumProviderId); + console.log({ sumProviderLink }); + createdLinks.push(sumProviderLink); const { data: [storageBusinessLink], @@ -1450,10 +1450,10 @@ async ( }, }); console.log({ storageBusinessLink }); - linkIdsToDelete.push(storageBusinessLink.id); + createdLinks.push(storageBusinessLink.id); const { - data: [{ id: tokenId }], + data: [tokenLink], } = await deep.insert({ type_id: Token, from_id: storageBusinessLink.id, @@ -1468,8 +1468,8 @@ async ( ], }, }); - console.log({ tokenId }); - linkIdsToDelete.push(tokenId); + console.log({ tokenLink }); + createdLinks.push(tokenLink); const { data: [{ id: Product }], @@ -1487,10 +1487,10 @@ async ( }, }); console.log({ Product }); - linkIdsToDelete.push(Product); + createdLinks.push(Product); const { - data: [{ id: productId }], + data: [productLink], } = await deep.insert({ type_id: Product, in: { @@ -1502,8 +1502,8 @@ async ( ], }, }); - console.log({ product: productId }); - linkIdsToDelete.push(productId); + console.log({ productLink }); + createdLinks.push(productLink); const callRealizationTests = async () => { const testInit = async () => { @@ -1794,8 +1794,11 @@ async ( const callIntegrationTests = async () => { const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); + + const createdLinks = []; + const { - data: [{ id: paymentId }], + data: [paymentLink], } = await deep.insert({ type_id: Payment, object: { data: { value: { orderId: uniqid() } } }, @@ -1810,16 +1813,16 @@ async ( ], }, }); - console.log({ paymentId }); - linkIdsToDelete.push(paymentId); + console.log({ paymentLink }); + createdLinks.push(paymentLink); const { - data: [{ id: sumId }], + data: [sumLink], } = await deep.insert({ type_id: Sum, - from_id: sumProviderId, - to_id: paymentId, + from_id: sumProviderLink.id, + to_id: paymentLink.id, number: { data: { value: 150 } }, in: { data: [ @@ -1830,15 +1833,15 @@ async ( ], }, }); - console.log({ sum: sumId }); - linkIdsToDelete.push(sumId); + console.log({ sumLink }); + createdLinks.push(sumLink); const { - data: [{ id: objectId }], + data: [objectLink], } = await deep.insert({ type_id: Object, - from_id: paymentId, - to_id: productId, + from_id: paymentLink.id, + to_id: productLink.id, in: { data: [ { @@ -1848,15 +1851,15 @@ async ( ], }, }); - console.log({ objectId }); - linkIdsToDelete.push(objectId); + console.log({ objectLink }); + createdLinks.push(objectLink); const { - data: [{ id: payId }], + data: [payLink], } = await deep.insert({ type_id: Pay, from_id: deep.linkId, - to_id: sumId, + to_id: sumLink.id, in: { data: [ { @@ -1866,34 +1869,34 @@ async ( ], }, }); - console.log({ payId }); - linkIdsToDelete.push(payId); + console.log({ payLink }); + createdLinks.push(payLink); await sleep(9000); const { - data: { length }, + data } = await deep.select({ type_id: Url, - to_id: payId, + to_id: payLink.id, }); - expect(length).to.greaterThan(0); + expect(data.length).to.greaterThan(0); + + createdLinks.push(data[0]); + console.log('testInit-end'); + + return { + createdLinks + } }; const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testFinishAuthorize-start'); - await testInit({ customerKey }); - const { - data: [ - { - value: { value: url }, - }, - ], - } = await deep.select({ - type_id: Url, - }); + const {createdLinks} = await testInit({ customerKey }); + const urlLink = createdLinks.find(link => link.type_id === Url); + const url = urlLink.value.value; const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); @@ -1903,17 +1906,29 @@ async ( url, }); console.log('testFinishAuthorize-end'); + + return {createdLinks} }; const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testConfirm-start'); - await testFinishAuthorize({ customerKey }); + const {createdLinks} = await testFinishAuthorize({ customerKey }); await sleep(17000); + + const payLink = createdLinks.find(link => link.type_id === Pay); + let { data } = await deep.select({ type_id: Payed, + to_id: payLink.id }); + expect(data.length).to.greaterThan(0); + + createdLinks.push(data[0]); + console.log('testConfirm-end'); + + return {createdLinks} }; /* @@ -1965,7 +1980,7 @@ async ( // await callRealizationTests(); await callIntegrationTests(); - await deep.delete(linkIdsToDelete); + await deep.delete(createdLinks); }; await callTests(); From ba641d01a5e86dd5c05ed4948fc1d2a849349772 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 17 Sep 2022 13:42:13 +0600 Subject: [PATCH 445/683] Remove links from tests --- payments-tinkoff-c2b.cjs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 8b8d251c..2dd64599 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1970,9 +1970,13 @@ async ( console.log('testGetCardList-end'); }; */ - await testInit(); - await testFinishAuthorize(); - await testConfirm(); + var createdLinks; + const {createdLinks} = await testInit(); + await deep.delete(createdLinks.map(link => link.id)); + const {createdLinks} = await testFinishAuthorize(); + await deep.delete(createdLinks.map(link => link.id)); + const {createdLinks} = await testConfirm(); + await deep.delete(createdLinks.map(link => link.id)); /*await testGetState(); await testGetCardList();*/ }; From c4019fa14aaed65d47273047da7d39ed2968d97a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 17 Sep 2022 14:09:01 +0600 Subject: [PATCH 446/683] Save createdLink in tests and return them, delete them after tests --- payments-tinkoff-c2b-cancelling.cjs | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 894c4076..af936da2 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1571,7 +1571,7 @@ async ( } = await deep.select({ type_id: Url, to_id: payLink.id, - }); + }); expect(data.length).to.greaterThan(0); @@ -1712,8 +1712,11 @@ async ( const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); const payedLink = mpUpCancellingPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); + createdLinks.push(payedLink); console.log('testCancelAfterPayAfterConfirmFullPrice-end'); + + return {createdLinks}; }; const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({ customerKey } = { customerKey: uniqid() }) => { @@ -1794,14 +1797,17 @@ async ( const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); const payedLink = mpUpCancellingPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); + createdLinks.push(payedLink); } console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); + + return {createdLinks} }; const testCancelBeforePay = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testCancelBeforePay-start'); - await testInit({ customerKey }); + const {createdLinks} = await testInit({ customerKey }); const paymentLink = createdLinks.find(link => link.type_id === Payment); console.log({ paymentLink }); @@ -1877,19 +1883,27 @@ async ( const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); const payedLink = mpUpCancellingPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); + createdLinks.push(payedLink); console.log('testCancelBeforePay-end'); + + return {createdLinks} }; - await testCancelAfterPayAfterConfirmFullPrice(); - await testCancelAfterPayAfterConfirmCustomPriceX2(); - await testCancelBeforePay(); + var createdLinks; + const {createdLinks} = await testCancelAfterPayAfterConfirmFullPrice(); + await deep.delete(createdLinks); + const {createdLinks} = await testCancelAfterPayAfterConfirmCustomPriceX2(); + await deep.delete(createdLinks); + const {createdLinks} = await testCancelBeforePay(); + await deep.delete(createdLinks); console.log('testCancel-end'); + + return {createdLinks} }; await callCancelTests(); - await deleteTestLinks(); }; // await callRealizationTests(); From ad74bae3eec4b4fdcffedaf0dee0f782810f8302 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 17 Sep 2022 14:13:38 +0600 Subject: [PATCH 447/683] Add and call setup in integration tests and delete created links after tests --- payments-tinkoff-c2b-cancelling.cjs | 214 ++++++++++++++-------------- 1 file changed, 110 insertions(+), 104 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index af936da2..c688d709 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1062,110 +1062,6 @@ async ( const callTests = async () => { console.log('callTests-start'); - const linkIdsToDelete = []; - - const { - data: [tinkoffProviderLink], - } = await deep.insert({ - type_id: TinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tinkoffProviderLink }); - linkIdsToDelete.push(tinkoffProviderLink); - - const { - data: [sumProviderLink], - } = await deep.insert({ - type_id: SumProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ sumProviderLink }); - linkIdsToDelete.push(sumProviderLink); - - const { - data: [storageBusinessLink], - } = await deep.insert({ - type_id: StorageBusiness, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ storageBusinessLink }); - linkIdsToDelete.push(storageBusinessLink); - - const { - data: [tokenLink], - } = await deep.insert({ - type_id: Token, - from_id: storageBusinessLink.id, - to_id: storageBusinessLink.id, - string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - - console.log({ tokenLink }); - linkIdsToDelete.push(tokenLink); - - const { - data: [{ id: Product }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ Product }); - linkIdsToDelete.push(Product); - - const { - data: [productLink], - } = await deep.insert({ - type_id: Product, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ productId }); - linkIdsToDelete.push(productId); - const callRealizationTests = async () => { const testInit = async () => { const initOptions = { @@ -1485,6 +1381,114 @@ async ( }; const callIntegrationTests = async () => { + + const setup = async () => { + const createdLinks = []; + + const { + data: [tinkoffProviderLink], + } = await deep.insert({ + type_id: TinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ tinkoffProviderLink }); + createdLinks.push(tinkoffProviderLink); + + const { + data: [sumProviderLink], + } = await deep.insert({ + type_id: SumProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ sumProviderLink }); + createdLinks.push(sumProviderLink); + + const { + data: [storageBusinessLink], + } = await deep.insert({ + type_id: StorageBusiness, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ storageBusinessLink }); + createdLinks.push(storageBusinessLink); + + const { + data: [tokenLink], + } = await deep.insert({ + type_id: Token, + from_id: storageBusinessLink.id, + to_id: storageBusinessLink.id, + string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ tokenLink }); + createdLinks.push(tokenLink); + + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ Product }); + createdLinks.push(Product); + + const { + data: [productLink], + } = await deep.insert({ + type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ productId }); + createdLinks.push(productId); + + return {createdLinks} + } + const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); @@ -1903,7 +1907,9 @@ async ( return {createdLinks} }; + const {createdLinks} = await setup(); await callCancelTests(); + await deep.delete(createdLinks.map(link => link.id)); }; // await callRealizationTests(); From b05171a720ce3fb0852397a6ecf39fcd27e833d2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 17 Sep 2022 14:20:53 +0600 Subject: [PATCH 448/683] Add and use setup in tests --- payments-tinkoff-c2b.cjs | 217 ++++++++++++++++++++------------------- 1 file changed, 111 insertions(+), 106 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 2dd64599..b3155acb 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1402,109 +1402,6 @@ async ( const callTests = async () => { console.log('callTests-start'); - const createdLinks = []; - - const { - data: [tinkoffProviderLink], - } = await deep.insert({ - type_id: TinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tinkoffProviderLink }); - createdLinks.push(tinkoffProviderLink); - - const { - data: [{ id: sumProviderLink }], - } = await deep.insert({ - type_id: SumProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ sumProviderLink }); - createdLinks.push(sumProviderLink); - - const { - data: [storageBusinessLink], - } = await deep.insert({ - type_id: StorageBusiness, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ storageBusinessLink }); - createdLinks.push(storageBusinessLink.id); - - const { - data: [tokenLink], - } = await deep.insert({ - type_id: Token, - from_id: storageBusinessLink.id, - to_id: storageBusinessLink.id, - string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tokenLink }); - createdLinks.push(tokenLink); - - const { - data: [{ id: Product }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ Product }); - createdLinks.push(Product); - - const { - data: [productLink], - } = await deep.insert({ - type_id: Product, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ productLink }); - createdLinks.push(productLink); - const callRealizationTests = async () => { const testInit = async () => { const initOptions = { @@ -1792,6 +1689,114 @@ async ( }; const callIntegrationTests = async () => { + + const setup = async () => { + const createdLinks = []; + + const { + data: [tinkoffProviderLink], + } = await deep.insert({ + type_id: TinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ tinkoffProviderLink }); + createdLinks.push(tinkoffProviderLink); + + const { + data: [{ id: sumProviderLink }], + } = await deep.insert({ + type_id: SumProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ sumProviderLink }); + createdLinks.push(sumProviderLink); + + const { + data: [storageBusinessLink], + } = await deep.insert({ + type_id: StorageBusiness, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ storageBusinessLink }); + createdLinks.push(storageBusinessLink.id); + + const { + data: [tokenLink], + } = await deep.insert({ + type_id: Token, + from_id: storageBusinessLink.id, + to_id: storageBusinessLink.id, + string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ tokenLink }); + createdLinks.push(tokenLink); + + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ Product }); + createdLinks.push(Product); + + const { + data: [productLink], + } = await deep.insert({ + type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ productLink }); + createdLinks.push(productLink); + + return {integratedTestsCreatedLinks: createdLinks} + } + const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); @@ -1816,7 +1821,6 @@ async ( console.log({ paymentLink }); createdLinks.push(paymentLink); - const { data: [sumLink], } = await deep.insert({ @@ -1971,20 +1975,21 @@ async ( }; */ var createdLinks; + const {integratedTestsCreatedLinks} = await setup(); const {createdLinks} = await testInit(); await deep.delete(createdLinks.map(link => link.id)); const {createdLinks} = await testFinishAuthorize(); await deep.delete(createdLinks.map(link => link.id)); const {createdLinks} = await testConfirm(); await deep.delete(createdLinks.map(link => link.id)); + await deep.delete(integratedTestsCreatedLinks); + /*await testGetState(); await testGetCardList();*/ }; // await callRealizationTests(); await callIntegrationTests(); - - await deep.delete(createdLinks); }; await callTests(); From 52f07330f1dba2f0345247e623d0322c95cb22c7 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 17 Sep 2022 14:22:47 +0600 Subject: [PATCH 449/683] Format --- payments-tinkoff-c2b.cjs | 3247 +++++++++++++++++++------------------- 1 file changed, 1625 insertions(+), 1622 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index b3155acb..673a19fa 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -7,8 +7,8 @@ const dotenvExpand = require('dotenv-expand'); const { generateApolloClient } = require('@deep-foundation/hasura/client'); const { DeepClient } = require('@deep-foundation/deeplinks/imports/client'); const { - minilinks, - Link, + minilinks, + Link, } = require('@deep-foundation/deeplinks/imports/minilinks'); const puppeteer = require('puppeteer'); const crypto = require('crypto'); @@ -16,930 +16,934 @@ const axios = require('axios'); const uniqid = require('uniqid'); const { expect } = require('chai'); const { get } = require('lodash'); -const { default: links } = require('@deep-foundation/deeplinks/imports/router/links'); +const { + default: links, +} = require('@deep-foundation/deeplinks/imports/router/links'); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); -console.log("Installing payments-tinkoff-c2b package"); -const PRICE = 5500; - -const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); - -const payInBrowser = async ({ page, browser, url }) => { - await page.goto(url, { waitUntil: 'networkidle2' }); - await sleep(5000); - const oldForm = await page.evaluate(() => { - return !!document.querySelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - }); - if (oldForm) { - console.log('OLD FORM!!!!!!!'); - // Старая форма используется на тестовом сервере - const cvc1 = await page.evaluate(() => { - return !!document.querySelector( - 'button[automation-id="pay-card__submit"]' - ); - }); - if (cvc1) { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_TEST_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_TEST_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-card__submit"]'); // submit button - } else { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_E2C_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_E2C_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-wallet__submit"]'); // submit button - await sleep(300); - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(1000); - } - // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен - await sleep(1000); - } else { - console.log('NEW FORM!!!!!!!'); - await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number - await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date - await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code - await page.click('button[type=submit]'); // submit button - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(3000); - } - await browser.close(); -}; - -const f = async () => { - const apolloClient = generateApolloClient({ - path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE - ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') - ? false - : true, - // admin token in prealpha deep secret key - // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', - }); - - const unloginedDeep = new DeepClient({ apolloClient }); - - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - - const _generateToken = (dataWithPassword) => { - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => `${acc}${item}`, ''); - console.log({ dataString }); - const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - console.log({ hash }); - return hash; - }; - - const generateToken = (data) => { - const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { - ...restData, - Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, - }; - console.log({ dataWithPassword }); - return _generateToken(dataWithPassword); - }; - const generateTokenString = generateToken.toString() - .replace( - 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', - `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` - ); - console.log({ generateTokenString }); - - const getUrl = (method) => - `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; - getUrlString = getUrl.toString() - .replace( - '${process.env.PAYMENT_EACQ_AND_TEST_URL}', - process.env.PAYMENT_EACQ_AND_TEST_URL - ); - console.log({ getUrlString }); - - const getMarketUrl = (method) => - `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; - - const getState = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetState'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const checkOrder = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('CheckOrder'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCardList = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCardList'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode || '0'); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const init = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Init'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const resend = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Resend'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const charge = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Charge'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const addCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('AddCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const removeCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('RemoveCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getBankPaymentId = async (orderId) => { - const checkOrderOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: orderId, - }; - - const checkOrderResult = await checkOrder(checkOrderOptions); - expect(checkOrderResult.error).to.equal(undefined); - - console.log({ checkOrderResponse: checkOrderResult }); - - const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; - - console.log({ paymentLink.id: bankPaymentId }); - return bankPaymentId; - }; - - const guest = await unloginedDeep.guest(); - const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); - const admin = await guestDeep.login({ - linkId: await guestDeep.id('deep', 'admin'), - }); - const deep = new DeepClient({ deep: guestDeep, ...admin }); - - const User = await deep.id('@deep-foundation/core', 'User'); - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); - const Join = await deep.id('@deep-foundation/core', 'Join'); - const Contain = await deep.id('@deep-foundation/core', 'Contain'); - const Value = await deep.id('@deep-foundation/core', 'Value'); - const String = await deep.id('@deep-foundation/core', 'String'); - const Package = await deep.id('@deep-foundation/core', 'Package'); - - const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); - const dockerSupportsJs = await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ); - const Handler = await deep.id('@deep-foundation/core', 'Handler'); - const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); - const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); - - const Tree = await deep.id('@deep-foundation/core', 'Tree'); - const TreeIncludeNode = await deep.id( - '@deep-foundation/core', - 'TreeIncludeNode' - ); - const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); - const TreeIncludeDown = await deep.id( - '@deep-foundation/core', - 'TreeIncludeDown' - ); - - const Rule = await deep.id('@deep-foundation/core', 'Rule'); - const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); - const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); - const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); - const Selector = await deep.id('@deep-foundation/core', 'Selector'); - const SelectorInclude = await deep.id( - '@deep-foundation/core', - 'SelectorInclude' - ); - const SelectorExclude = await deep.id( - '@deep-foundation/core', - 'SelectorExclude' - ); - const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); - const containTree = await deep.id('@deep-foundation/core', 'containTree'); - const AllowInsertType = await deep.id( - '@deep-foundation/core', - 'AllowInsertType' - ); - const AllowDeleteType = await deep.id( - '@deep-foundation/core', - 'AllowDeleteType' - ); - const SelectorFilter = await deep.id( - '@deep-foundation/core', - 'SelectorFilter' - ); - const Query = await deep.id('@deep-foundation/core', 'Query'); - const usersId = await deep.id('deep', 'users'); - - const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); - const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); - const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); - const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); - const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); - const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); - const BaseError = await deep.id('@deep-foundation/payments', 'Error'); - const Storage = await deep.id('@deep-foundation/payments', 'Storage'); - - const { - data: [{ id: packageId }], - } = await deep.insert({ - type_id: Package, - string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - out: { - data: [ - { - type_id: Join, - to_id: await deep.id('deep', 'users', 'packages'), - }, - { - type_id: Join, - to_id: await deep.id('deep', 'admin'), - }, - ], - }, - }); - - console.log({ packageId }); - - const { - data: [{ id: SumProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'SumProvider' } }, - }, - }, - }); - - console.log({ SumProvider: SumProvider }); - - const { - data: [{ id: TinkoffProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'TinkoffProvider' } }, - }, - }, - }); - - console.log({ TinkoffProvider }); - - const { - data: [{ id: Payment }], - } = await deep.insert({ - type_id: BasePayment, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Payment' } }, - }, - }, - }); - - console.log({ Payment: Payment }); - - const { - data: [{ id: Object }], - } = await deep.insert({ - type_id: BaseObject, - from_id: Payment, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Object' } }, - }, - }, - }); - - console.log({ Object: Object }); - - const { - data: [{ id: Sum }], - } = await deep.insert({ - type_id: BaseSum, - from_id: SumProvider, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Sum' } }, - }, - }, - }); - - console.log({ Sum: Sum }); - - // TODO Rest restrictions - const { - data: [{ id: Pay }], - } = await deep.insert({ - type_id: BasePay, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Pay' } }, - }, - }, - }); - - console.log({ Pay: Pay }); - - const { - data: [{ id: Url }], - } = await deep.insert({ - type_id: BaseUrl, - from_id: TinkoffProvider, - to_id: Pay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Url' } }, - }, - }, - }); - - console.log({ Url: Url }); - - const { - data: [{ id: Payed }], - } = await deep.insert({ - type_id: BasePayed, - from_id: TinkoffProvider, - to_id: Pay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Payed' } }, - }, - }, - }); - - console.log({ Payed: Payed }); - - const { - data: [{ id: Error }], - } = await deep.insert({ - type_id: BaseError, - from_id: TinkoffProvider, - to_id: Pay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Error' } }, - }, - }, - }); - - console.log({ Error: Error }); - - const { - data: [{ id: paymentTreeId }], - } = await deep.insert({ - type_id: Tree, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'paymentTree' } }, - }, - }, - out: { - data: [ - { - type_id: TreeIncludeNode, - to_id: Payment, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Sum, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeDown, - to_id: Object, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Error, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Payed, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Pay, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Url, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - ], - }, - }); - - const { - data: [{ id: StorageBusiness }], - } = await deep.insert({ - type_id: Storage, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'StorageBusiness' } }, - }, - }, - }); - - const { - data: [{ id: Token }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Token' } }, - }, - }, - }); +console.log('Installing payments-tinkoff-c2b package'); +const PRICE = 5500; - const { - data: [{ id: StorageClient }], - } = await deep.insert({ - type_id: Storage, - from_id: Payment, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'StorageClient' } }, - }, - }, - }); +const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); - const { - data: [{ id: Title }], - } = await deep.insert({ - type_id: Type, - from_id: StorageClient, - to_id: SyncTextFile, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Title' } }, - }, - }, - }); - console.log({ Title }); - - const { - data: [{ id: Income }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Income' } }, - }, - }, - }); - console.log({ Income }); +const payInBrowser = async ({ page, browser, url }) => { + await page.goto(url, { waitUntil: 'networkidle2' }); + await sleep(5000); + const oldForm = await page.evaluate(() => { + return !!document.querySelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + }); + if (oldForm) { + console.log('OLD FORM!!!!!!!'); + // Старая форма используется на тестовом сервере + const cvc1 = await page.evaluate(() => { + return !!document.querySelector( + 'button[automation-id="pay-card__submit"]' + ); + }); + if (cvc1) { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_TEST_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_TEST_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-card__submit"]'); // submit button + } else { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_E2C_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_E2C_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-wallet__submit"]'); // submit button + await sleep(300); + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(1000); + } + // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен + await sleep(1000); + } else { + console.log('NEW FORM!!!!!!!'); + await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number + await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date + await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code + await page.click('button[type=submit]'); // submit button + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(3000); + } + await browser.close(); +}; - const handlersDependencies = ` +const f = async () => { + const apolloClient = generateApolloClient({ + path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE + ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') + ? false + : true, + // admin token in prealpha deep secret key + // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', + }); + + const unloginedDeep = new DeepClient({ apolloClient }); + + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + + const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + console.log({ dataString }); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + console.log({ hash }); + return hash; + }; + + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + ...restData, + Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, + }; + console.log({ dataWithPassword }); + return _generateToken(dataWithPassword); + }; + const generateTokenString = generateToken + .toString() + .replace( + 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', + `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` + ); + console.log({ generateTokenString }); + + const getUrl = (method) => + `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; + getUrlString = getUrl + .toString() + .replace( + '${process.env.PAYMENT_EACQ_AND_TEST_URL}', + process.env.PAYMENT_EACQ_AND_TEST_URL + ); + console.log({ getUrlString }); + + const getMarketUrl = (method) => + `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; + + const getState = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetState'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const checkOrder = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('CheckOrder'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getCardList = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCardList'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode || '0'); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const init = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Init'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const resend = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Resend'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const charge = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Charge'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const addCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('AddCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const removeCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('RemoveCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getBankPaymentId = async (orderId) => { + const checkOrderOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: orderId, + }; + + const checkOrderResult = await checkOrder(checkOrderOptions); + expect(checkOrderResult.error).to.equal(undefined); + + console.log({ checkOrderResponse: checkOrderResult }); + + const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; + + console.log({ bankPaymentId }); + return bankPaymentId; + }; + + const guest = await unloginedDeep.guest(); + const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); + const admin = await guestDeep.login({ + linkId: await guestDeep.id('deep', 'admin'), + }); + const deep = new DeepClient({ deep: guestDeep, ...admin }); + + const User = await deep.id('@deep-foundation/core', 'User'); + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + const Join = await deep.id('@deep-foundation/core', 'Join'); + const Contain = await deep.id('@deep-foundation/core', 'Contain'); + const Value = await deep.id('@deep-foundation/core', 'Value'); + const String = await deep.id('@deep-foundation/core', 'String'); + const Package = await deep.id('@deep-foundation/core', 'Package'); + + const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); + const dockerSupportsJs = await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ); + const Handler = await deep.id('@deep-foundation/core', 'Handler'); + const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); + const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); + + const Tree = await deep.id('@deep-foundation/core', 'Tree'); + const TreeIncludeNode = await deep.id( + '@deep-foundation/core', + 'TreeIncludeNode' + ); + const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); + const TreeIncludeDown = await deep.id( + '@deep-foundation/core', + 'TreeIncludeDown' + ); + + const Rule = await deep.id('@deep-foundation/core', 'Rule'); + const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); + const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); + const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); + const Selector = await deep.id('@deep-foundation/core', 'Selector'); + const SelectorInclude = await deep.id( + '@deep-foundation/core', + 'SelectorInclude' + ); + const SelectorExclude = await deep.id( + '@deep-foundation/core', + 'SelectorExclude' + ); + const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); + const containTree = await deep.id('@deep-foundation/core', 'containTree'); + const AllowInsertType = await deep.id( + '@deep-foundation/core', + 'AllowInsertType' + ); + const AllowDeleteType = await deep.id( + '@deep-foundation/core', + 'AllowDeleteType' + ); + const SelectorFilter = await deep.id( + '@deep-foundation/core', + 'SelectorFilter' + ); + const Query = await deep.id('@deep-foundation/core', 'Query'); + const usersId = await deep.id('deep', 'users'); + + const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); + const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); + const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); + const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); + const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); + const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); + const BaseError = await deep.id('@deep-foundation/payments', 'Error'); + const Storage = await deep.id('@deep-foundation/payments', 'Storage'); + + const { + data: [{ id: packageId }], + } = await deep.insert({ + type_id: Package, + string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + out: { + data: [ + { + type_id: Join, + to_id: await deep.id('deep', 'users', 'packages'), + }, + { + type_id: Join, + to_id: await deep.id('deep', 'admin'), + }, + ], + }, + }); + + console.log({ packageId }); + + const { + data: [{ id: SumProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'SumProvider' } }, + }, + }, + }); + + console.log({ SumProvider: SumProvider }); + + const { + data: [{ id: TinkoffProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'TinkoffProvider' } }, + }, + }, + }); + + console.log({ TinkoffProvider }); + + const { + data: [{ id: Payment }], + } = await deep.insert({ + type_id: BasePayment, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Payment' } }, + }, + }, + }); + + console.log({ Payment: Payment }); + + const { + data: [{ id: Object }], + } = await deep.insert({ + type_id: BaseObject, + from_id: Payment, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Object' } }, + }, + }, + }); + + console.log({ Object: Object }); + + const { + data: [{ id: Sum }], + } = await deep.insert({ + type_id: BaseSum, + from_id: SumProvider, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Sum' } }, + }, + }, + }); + + console.log({ Sum: Sum }); + + // TODO Rest restrictions + const { + data: [{ id: Pay }], + } = await deep.insert({ + type_id: BasePay, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Pay' } }, + }, + }, + }); + + console.log({ Pay: Pay }); + + const { + data: [{ id: Url }], + } = await deep.insert({ + type_id: BaseUrl, + from_id: TinkoffProvider, + to_id: Pay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Url' } }, + }, + }, + }); + + console.log({ Url: Url }); + + const { + data: [{ id: Payed }], + } = await deep.insert({ + type_id: BasePayed, + from_id: TinkoffProvider, + to_id: Pay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Payed' } }, + }, + }, + }); + + console.log({ Payed: Payed }); + + const { + data: [{ id: Error }], + } = await deep.insert({ + type_id: BaseError, + from_id: TinkoffProvider, + to_id: Pay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Error' } }, + }, + }, + }); + + console.log({ Error: Error }); + + const { + data: [{ id: paymentTreeId }], + } = await deep.insert({ + type_id: Tree, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'paymentTree' } }, + }, + }, + out: { + data: [ + { + type_id: TreeIncludeNode, + to_id: Payment, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Sum, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeDown, + to_id: Object, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Error, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Payed, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Pay, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Url, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + ], + }, + }); + + const { + data: [{ id: StorageBusiness }], + } = await deep.insert({ + type_id: Storage, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'StorageBusiness' } }, + }, + }, + }); + + const { + data: [{ id: Token }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Token' } }, + }, + }, + }); + + const { + data: [{ id: StorageClient }], + } = await deep.insert({ + type_id: Storage, + from_id: Payment, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'StorageClient' } }, + }, + }, + }); + + const { + data: [{ id: Title }], + } = await deep.insert({ + type_id: Type, + from_id: StorageClient, + to_id: SyncTextFile, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Title' } }, + }, + }, + }); + console.log({ Title }); + + const { + data: [{ id: Income }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Income' } }, + }, + }, + }); + console.log({ Income }); + + const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); const errorsConverter = ${JSON.stringify(errorsConverter)}; @@ -948,8 +952,8 @@ const f = async () => { const _generateToken = ${_generateToken.toString()}; const generateToken = ${generateTokenString}; `; - console.log({ handlersDependencies }); - const payInsertHandler = ` + console.log({ handlersDependencies }); + const payInsertHandler = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} @@ -1085,56 +1089,56 @@ async ({ deep, require, data: { newLink: payLink } }) => { return initResult; }; `; - console.log({ payInsertHandler }); - - const { - data: [{ id: payInsertHandlerId }], - } = await deep.insert({ - type_id: SyncTextFile, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandlerFile' } }, - }, - { - from_id: dockerSupportsJs, - type_id: Handler, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandler' } }, - }, - { - type_id: HandleInsert, - from_id: Pay, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandle' } }, - }, - ], - }, - }, - ], - }, - }, - ], - }, - string: { - data: { - value: payInsertHandler, - }, - }, - }); - console.log({ payInsertHandlerId }); - - const tinkoffNotificationHandler = ` + console.log({ payInsertHandler }); + + const { + data: [{ id: payInsertHandlerId }], + } = await deep.insert({ + type_id: SyncTextFile, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandlerFile' } }, + }, + { + from_id: dockerSupportsJs, + type_id: Handler, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandler' } }, + }, + { + type_id: HandleInsert, + from_id: Pay, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandle' } }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + string: { + data: { + value: payInsertHandler, + }, + }, + }); + console.log({ payInsertHandlerId }); + + const tinkoffNotificationHandler = ` async ( req, res, @@ -1302,640 +1306,640 @@ async ( res.send('ok'); }; `; - console.log({ tinkoffNotificationHandler }); - - await deep.insert( - { - type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { - data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, - }, - in: { - data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), - in: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'RouterStringUse' - ), - string: { - data: { - value: - process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, - }, - }, - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), - out: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'HandleRoute' - ), - to: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'Handler' - ), - from_id: await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ), - in: { - data: { - type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - to: { - data: { - type_id: SyncTextFile, - string: { - data: { - value: tinkoffNotificationHandler, - }, - }, - in: { - data: { - type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - } - ); - - const callTests = async () => { - console.log('callTests-start'); - - const callRealizationTests = async () => { - const testInit = async () => { - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - Amount: PRICE, - Description: 'Test shopping', - CustomerKey: deep.linkId, - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // }, - }; - - const initResult = await init(initOptions); - - expect(initResult.error).to.equal(undefined); - - return initResult; - }; - - const testConfirm = async () => { - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // }, - }; - - const initResult = await init(initOptions); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const confirmOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const confirmResult = await confirm(confirmOptions); - - expect(confirmResult.error).to.equal(undefined); - expect(confirmResult.response.Status).to.equal('CONFIRMED'); - - return confirmResult; - }; - - const testGetState = async () => { - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Amount: PRICE, - }); - - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.error).to.equal(undefined); - }; - - const testGetCardList = async () => { - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - OrderId: uniqid(), - Amount: PRICE, - Recurrent: 'Y', - }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.error).to.equal(undefined); - }; - - const testResend = async () => { - console.log('testResend-start'); - const resendOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - }; - console.log({ resendOptions }); - - const resendResult = await resend(resendOptions); - console.log({ resendResult }); - - expect(resendResult.error).to.equal(undefined); - console.log('testResend-end'); - }; - - const testCharge = async () => { - console.log('testCharge-start'); - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Recurrent: 'Y', - }); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.response[0].RebillId).to.have.length.above(0); - - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.response.Status).to.equal('AUTHORIZED'); - - const newInitResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - }); - - const newChargeOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: newInitResult.response.PaymentId, - RebillId: Number(getCardListResult.response[0].RebillId), - }; - - const chargeResult = await charge(newChargeOptions); - - expect(chargeResult.error).to.equal(undefined); - console.log('testCharge-end'); - }; - - const testAddCustomer = async () => { - console.log('testAddCustomer-start'); - - const addCustomerOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - console.log({ addCustomerOptions }); - - const addCustomerResult = await addCustomer(addCustomerOptions); - console.log({ addCustomerResult }); - - expect(addCustomerResult.error).to.equal(undefined); - console.log('testAddCustomer-end'); - }; - - const testGetCustomer = async () => { - console.log('testGetCustomer-start'); - - const customerOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - - const addCustomerDataOptions = { - ...customerOptions, - Phone: process.env.PAYMENT_TEST_PHONE, - }; - - const addResult = await addCustomer(addCustomerDataOptions); - - expect(addResult.error).to.equal(undefined); - - const getResult = await getCustomer(customerOptions); - - expect(getResult.error).to.equal(undefined); - expect(getResult.response.Phone).to.equal( - process.env.PAYMENT_TEST_PHONE - ); - - console.log('testGetCustomer-end'); - }; - - const testRemoveCustomer = async () => { - console.log('testRemoveCustomer-start'); - - const removeCustomerData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - - const newAddCustomerData = { - ...removeCustomerData, - Phone: process.env.PAYMENT_TEST_PHONE, - }; - - const addResult = await addCustomer(newAddCustomerData); - - expect(addResult.error).to.equal(undefined); - - const removeResult = await removeCustomer(removeCustomerData); - - expect(removeResult.error).to.equal(undefined); - - console.log('testRemoveCustomer-end'); - }; - - await testInit(); - await testConfirm(); - await testGetState(); - await testGetCardList(); - await testResend(); - await testCharge(); - await testAddCustomer(); - await testGetCustomer(); - await testRemoveCustomer(); - }; - - const callIntegrationTests = async () => { - - const setup = async () => { - const createdLinks = []; - - const { - data: [tinkoffProviderLink], - } = await deep.insert({ - type_id: TinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tinkoffProviderLink }); - createdLinks.push(tinkoffProviderLink); - - const { - data: [{ id: sumProviderLink }], - } = await deep.insert({ - type_id: SumProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ sumProviderLink }); - createdLinks.push(sumProviderLink); - - const { - data: [storageBusinessLink], - } = await deep.insert({ - type_id: StorageBusiness, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ storageBusinessLink }); - createdLinks.push(storageBusinessLink.id); - - const { - data: [tokenLink], - } = await deep.insert({ - type_id: Token, - from_id: storageBusinessLink.id, - to_id: storageBusinessLink.id, - string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tokenLink }); - createdLinks.push(tokenLink); - - const { - data: [{ id: Product }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ Product }); - createdLinks.push(Product); - - const { - data: [productLink], - } = await deep.insert({ - type_id: Product, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ productLink }); - createdLinks.push(productLink); - - return {integratedTestsCreatedLinks: createdLinks} - } - - const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testInit-start'); - - const createdLinks = []; - - const { - data: [paymentLink], - } = await deep.insert({ - type_id: Payment, - object: { data: { value: { orderId: uniqid() } } }, - from_id: deep.linkId, - to_id: storageBusinessLink.id, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ paymentLink }); - createdLinks.push(paymentLink); + console.log({ tinkoffNotificationHandler }); + + await deep.insert( + { + type_id: await deep.id('@deep-foundation/core', 'Port'), + number: { + data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, + }, + in: { + data: { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'RouterStringUse' + ), + string: { + data: { + value: + process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, + }, + }, + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + out: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'HandleRoute' + ), + to: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'Handler' + ), + from_id: await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ), + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + to: { + data: { + type_id: SyncTextFile, + string: { + data: { + value: tinkoffNotificationHandler, + }, + }, + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + } + ); + + const callTests = async () => { + console.log('callTests-start'); + + const callRealizationTests = async () => { + const testInit = async () => { + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + Amount: PRICE, + Description: 'Test shopping', + CustomerKey: deep.linkId, + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: PRICE, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + expect(initResult.error).to.equal(undefined); + + return initResult; + }; + + const testConfirm = async () => { + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: PRICE, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const confirmOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const confirmResult = await confirm(confirmOptions); + + expect(confirmResult.error).to.equal(undefined); + expect(confirmResult.response.Status).to.equal('CONFIRMED'); + + return confirmResult; + }; + + const testGetState = async () => { + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + Amount: PRICE, + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.error).to.equal(undefined); + }; + + const testGetCardList = async () => { + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + OrderId: uniqid(), + Amount: PRICE, + Recurrent: 'Y', + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.error).to.equal(undefined); + }; + + const testResend = async () => { + console.log('testResend-start'); + const resendOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + }; + console.log({ resendOptions }); + + const resendResult = await resend(resendOptions); + console.log({ resendResult }); + + expect(resendResult.error).to.equal(undefined); + console.log('testResend-end'); + }; + + const testCharge = async () => { + console.log('testCharge-start'); + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + Recurrent: 'Y', + }); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; - const { - data: [sumLink], - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderLink.id, - to_id: paymentLink.id, - number: { data: { value: 150 } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ sumLink }); - createdLinks.push(sumLink); - - const { - data: [objectLink], - } = await deep.insert({ - type_id: Object, - from_id: paymentLink.id, - to_id: productLink.id, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ objectLink }); - createdLinks.push(objectLink); - - const { - data: [payLink], - } = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLink.id, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ payLink }); - createdLinks.push(payLink); - - await sleep(9000); - - const { - data - } = await deep.select({ - type_id: Url, - to_id: payLink.id, - }); - - expect(data.length).to.greaterThan(0); - - createdLinks.push(data[0]); - - console.log('testInit-end'); - - return { - createdLinks - } - }; - - const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testFinishAuthorize-start'); - const {createdLinks} = await testInit({ customerKey }); - const urlLink = createdLinks.find(link => link.type_id === Url); - const url = urlLink.value.value; - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, - }); - console.log('testFinishAuthorize-end'); - - return {createdLinks} - }; - - const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testConfirm-start'); - const {createdLinks} = await testFinishAuthorize({ customerKey }); - await sleep(17000); - - const payLink = createdLinks.find(link => link.type_id === Pay); - - let { data } = await deep.select({ - type_id: Payed, - to_id: payLink.id - }); - - expect(data.length).to.greaterThan(0); - - createdLinks.push(data[0]); - - console.log('testConfirm-end'); - - return {createdLinks} - }; - - /* + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.response[0].RebillId).to.have.length.above(0); + + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.response.Status).to.equal('AUTHORIZED'); + + const newInitResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + }); + + const newChargeOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: newInitResult.response.PaymentId, + RebillId: Number(getCardListResult.response[0].RebillId), + }; + + const chargeResult = await charge(newChargeOptions); + + expect(chargeResult.error).to.equal(undefined); + console.log('testCharge-end'); + }; + + const testAddCustomer = async () => { + console.log('testAddCustomer-start'); + + const addCustomerOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + console.log({ addCustomerOptions }); + + const addCustomerResult = await addCustomer(addCustomerOptions); + console.log({ addCustomerResult }); + + expect(addCustomerResult.error).to.equal(undefined); + console.log('testAddCustomer-end'); + }; + + const testGetCustomer = async () => { + console.log('testGetCustomer-start'); + + const customerOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + + const addCustomerDataOptions = { + ...customerOptions, + Phone: process.env.PAYMENT_TEST_PHONE, + }; + + const addResult = await addCustomer(addCustomerDataOptions); + + expect(addResult.error).to.equal(undefined); + + const getResult = await getCustomer(customerOptions); + + expect(getResult.error).to.equal(undefined); + expect(getResult.response.Phone).to.equal( + process.env.PAYMENT_TEST_PHONE + ); + + console.log('testGetCustomer-end'); + }; + + const testRemoveCustomer = async () => { + console.log('testRemoveCustomer-start'); + + const removeCustomerData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + + const newAddCustomerData = { + ...removeCustomerData, + Phone: process.env.PAYMENT_TEST_PHONE, + }; + + const addResult = await addCustomer(newAddCustomerData); + + expect(addResult.error).to.equal(undefined); + + const removeResult = await removeCustomer(removeCustomerData); + + expect(removeResult.error).to.equal(undefined); + + console.log('testRemoveCustomer-end'); + }; + + await testInit(); + await testConfirm(); + await testGetState(); + await testGetCardList(); + await testResend(); + await testCharge(); + await testAddCustomer(); + await testGetCustomer(); + await testRemoveCustomer(); + }; + + const callIntegrationTests = async () => { + const setup = async () => { + const createdLinks = []; + + const { + data: [tinkoffProviderLink], + } = await deep.insert({ + type_id: TinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ tinkoffProviderLink }); + createdLinks.push(tinkoffProviderLink); + + const { + data: [{ id: sumProviderLink }], + } = await deep.insert({ + type_id: SumProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ sumProviderLink }); + createdLinks.push(sumProviderLink); + + const { + data: [storageBusinessLink], + } = await deep.insert({ + type_id: StorageBusiness, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ storageBusinessLink }); + createdLinks.push(storageBusinessLink.id); + + const { + data: [tokenLink], + } = await deep.insert({ + type_id: Token, + from_id: storageBusinessLink.id, + to_id: storageBusinessLink.id, + string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ tokenLink }); + createdLinks.push(tokenLink); + + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ Product }); + createdLinks.push(Product); + + const { + data: [productLink], + } = await deep.insert({ + type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ productLink }); + createdLinks.push(productLink); + + return { integratedTestsCreatedLinks: createdLinks }; + }; + + const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testInit-start'); + + const createdLinks = []; + + const { + data: [paymentLink], + } = await deep.insert({ + type_id: Payment, + object: { data: { value: { orderId: uniqid() } } }, + from_id: deep.linkId, + to_id: storageBusinessLink.id, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ paymentLink }); + createdLinks.push(paymentLink); + + const { + data: [sumLink], + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderLink.id, + to_id: paymentLink.id, + number: { data: { value: 150 } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ sumLink }); + createdLinks.push(sumLink); + + const { + data: [objectLink], + } = await deep.insert({ + type_id: Object, + from_id: paymentLink.id, + to_id: productLink.id, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ objectLink }); + createdLinks.push(objectLink); + + const { + data: [payLink], + } = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumLink.id, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ payLink }); + createdLinks.push(payLink); + + await sleep(9000); + + const { data } = await deep.select({ + type_id: Url, + to_id: payLink.id, + }); + + expect(data.length).to.greaterThan(0); + + createdLinks.push(data[0]); + + console.log('testInit-end'); + + return { + createdLinks, + }; + }; + + const testFinishAuthorize = async ( + { customerKey } = { customerKey: uniqid() } + ) => { + console.log('testFinishAuthorize-start'); + const { createdLinks } = await testInit({ customerKey }); + const urlLink = createdLinks.find((link) => link.type_id === Url); + const url = urlLink.value.value; + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); + console.log('testFinishAuthorize-end'); + + return { createdLinks }; + }; + + const testConfirm = async ( + { customerKey } = { customerKey: uniqid() } + ) => { + console.log('testConfirm-start'); + const { createdLinks } = await testFinishAuthorize({ customerKey }); + await sleep(17000); + + const payLink = createdLinks.find((link) => link.type_id === Pay); + + let { data } = await deep.select({ + type_id: Payed, + to_id: payLink.id, + }); + + expect(data.length).to.greaterThan(0); + + createdLinks.push(data[0]); + + console.log('testConfirm-end'); + + return { createdLinks }; + }; + + /* const testGetState = async () => { console.log('testGetState-start'); await testFinishAuthorize(); @@ -1974,26 +1978,25 @@ async ( console.log('testGetCardList-end'); }; */ - var createdLinks; - const {integratedTestsCreatedLinks} = await setup(); - const {createdLinks} = await testInit(); - await deep.delete(createdLinks.map(link => link.id)); - const {createdLinks} = await testFinishAuthorize(); - await deep.delete(createdLinks.map(link => link.id)); - const {createdLinks} = await testConfirm(); - await deep.delete(createdLinks.map(link => link.id)); - await deep.delete(integratedTestsCreatedLinks); - - /*await testGetState(); + var createdLinks; + const { integratedTestsCreatedLinks } = await setup(); + const { createdLinks } = await testInit(); + await deep.delete(createdLinks.map((link) => link.id)); + const { createdLinks } = await testFinishAuthorize(); + await deep.delete(createdLinks.map((link) => link.id)); + const { createdLinks } = await testConfirm(); + await deep.delete(createdLinks.map((link) => link.id)); + await deep.delete(integratedTestsCreatedLinks); + + /*await testGetState(); await testGetCardList();*/ - }; - - // await callRealizationTests(); - await callIntegrationTests(); - }; + }; - await callTests(); + // await callRealizationTests(); + await callIntegrationTests(); + }; + await callTests(); }; -f(); \ No newline at end of file +f(); From 1915b62aa0780ec19d45626fd60513d4444636e7 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 17 Sep 2022 14:24:13 +0600 Subject: [PATCH 450/683] Contain notification handler in package --- payments-tinkoff-c2b.cjs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 673a19fa..284a3ba0 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1374,8 +1374,7 @@ async ( in: { data: { type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), + from_id: packageId, string: { data: { value: 'tinkoffNotificationHandler', From 7fe23aaf6a9d6f182c6bae128a221a2d274b615a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 17 Sep 2022 14:26:36 +0600 Subject: [PATCH 451/683] Update c2b --- payments-tinkoff-c2b.cjs | 3256 +++++++++++++++++++------------------- 1 file changed, 1630 insertions(+), 1626 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index e4059175..284a3ba0 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -7,8 +7,8 @@ const dotenvExpand = require('dotenv-expand'); const { generateApolloClient } = require('@deep-foundation/hasura/client'); const { DeepClient } = require('@deep-foundation/deeplinks/imports/client'); const { - minilinks, - Link, + minilinks, + Link, } = require('@deep-foundation/deeplinks/imports/minilinks'); const puppeteer = require('puppeteer'); const crypto = require('crypto'); @@ -16,930 +16,934 @@ const axios = require('axios'); const uniqid = require('uniqid'); const { expect } = require('chai'); const { get } = require('lodash'); -const { default: links } = require('@deep-foundation/deeplinks/imports/router/links'); +const { + default: links, +} = require('@deep-foundation/deeplinks/imports/router/links'); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); -console.log("Installing payments-tinkoff-c2b package"); -const PRICE = 5500; - -const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); - -const payInBrowser = async ({ page, browser, url }) => { - await page.goto(url, { waitUntil: 'networkidle2' }); - await sleep(5000); - const oldForm = await page.evaluate(() => { - return !!document.querySelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - }); - if (oldForm) { - console.log('OLD FORM!!!!!!!'); - // Старая форма используется на тестовом сервере - const cvc1 = await page.evaluate(() => { - return !!document.querySelector( - 'button[automation-id="pay-card__submit"]' - ); - }); - if (cvc1) { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_TEST_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_TEST_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-card__submit"]'); // submit button - } else { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_E2C_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_E2C_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-wallet__submit"]'); // submit button - await sleep(300); - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(1000); - } - // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен - await sleep(1000); - } else { - console.log('NEW FORM!!!!!!!'); - await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number - await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date - await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code - await page.click('button[type=submit]'); // submit button - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(3000); - } - await browser.close(); -}; - -const f = async () => { - const apolloClient = generateApolloClient({ - path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE - ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') - ? false - : true, - // admin token in prealpha deep secret key - // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', - }); - - const unloginedDeep = new DeepClient({ apolloClient }); - - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - - const _generateToken = (dataWithPassword) => { - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => `${acc}${item}`, ''); - console.log({ dataString }); - const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - console.log({ hash }); - return hash; - }; - - const generateToken = (data) => { - const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { - ...restData, - Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, - }; - console.log({ dataWithPassword }); - return _generateToken(dataWithPassword); - }; - const generateTokenString = generateToken.toString() - .replace( - 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', - `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` - ); - console.log({ generateTokenString }); - - const getUrl = (method) => - `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; - getUrlString = getUrl.toString() - .replace( - '${process.env.PAYMENT_EACQ_AND_TEST_URL}', - process.env.PAYMENT_EACQ_AND_TEST_URL - ); - console.log({ getUrlString }); - - const getMarketUrl = (method) => - `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; - - const getState = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetState'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const checkOrder = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('CheckOrder'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCardList = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCardList'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode || '0'); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const init = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Init'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const resend = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Resend'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const charge = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Charge'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const addCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('AddCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const removeCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('RemoveCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getBankPaymentId = async (orderId) => { - const checkOrderOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: orderId, - }; - - const checkOrderResult = await checkOrder(checkOrderOptions); - expect(checkOrderResult.error).to.equal(undefined); - - console.log({ checkOrderResponse: checkOrderResult }); - - const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; - - console.log({ paymentLink.id: bankPaymentId }); - return bankPaymentId; - }; - - const guest = await unloginedDeep.guest(); - const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); - const admin = await guestDeep.login({ - linkId: await guestDeep.id('deep', 'admin'), - }); - const deep = new DeepClient({ deep: guestDeep, ...admin }); - - const User = await deep.id('@deep-foundation/core', 'User'); - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); - const Join = await deep.id('@deep-foundation/core', 'Join'); - const Contain = await deep.id('@deep-foundation/core', 'Contain'); - const Value = await deep.id('@deep-foundation/core', 'Value'); - const String = await deep.id('@deep-foundation/core', 'String'); - const Package = await deep.id('@deep-foundation/core', 'Package'); - - const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); - const dockerSupportsJs = await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ); - const Handler = await deep.id('@deep-foundation/core', 'Handler'); - const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); - const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); - - const Tree = await deep.id('@deep-foundation/core', 'Tree'); - const TreeIncludeNode = await deep.id( - '@deep-foundation/core', - 'TreeIncludeNode' - ); - const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); - const TreeIncludeDown = await deep.id( - '@deep-foundation/core', - 'TreeIncludeDown' - ); - - const Rule = await deep.id('@deep-foundation/core', 'Rule'); - const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); - const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); - const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); - const Selector = await deep.id('@deep-foundation/core', 'Selector'); - const SelectorInclude = await deep.id( - '@deep-foundation/core', - 'SelectorInclude' - ); - const SelectorExclude = await deep.id( - '@deep-foundation/core', - 'SelectorExclude' - ); - const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); - const containTree = await deep.id('@deep-foundation/core', 'containTree'); - const AllowInsertType = await deep.id( - '@deep-foundation/core', - 'AllowInsertType' - ); - const AllowDeleteType = await deep.id( - '@deep-foundation/core', - 'AllowDeleteType' - ); - const SelectorFilter = await deep.id( - '@deep-foundation/core', - 'SelectorFilter' - ); - const Query = await deep.id('@deep-foundation/core', 'Query'); - const usersId = await deep.id('deep', 'users'); - - const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); - const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); - const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); - const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); - const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); - const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); - const BaseError = await deep.id('@deep-foundation/payments', 'Error'); - const Storage = await deep.id('@deep-foundation/payments', 'Storage'); - - const { - data: [{ id: packageId }], - } = await deep.insert({ - type_id: Package, - string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - out: { - data: [ - { - type_id: Join, - to_id: await deep.id('deep', 'users', 'packages'), - }, - { - type_id: Join, - to_id: await deep.id('deep', 'admin'), - }, - ], - }, - }); - - console.log({ packageId }); - - const { - data: [{ id: SumProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'SumProvider' } }, - }, - }, - }); - - console.log({ SumProvider: SumProvider }); - - const { - data: [{ id: TinkoffProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'TinkoffProvider' } }, - }, - }, - }); - - console.log({ TinkoffProvider }); - - const { - data: [{ id: Payment }], - } = await deep.insert({ - type_id: BasePayment, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Payment' } }, - }, - }, - }); - - console.log({ Payment: Payment }); - - const { - data: [{ id: Object }], - } = await deep.insert({ - type_id: BaseObject, - from_id: Payment, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Object' } }, - }, - }, - }); - - console.log({ Object: Object }); - - const { - data: [{ id: Sum }], - } = await deep.insert({ - type_id: BaseSum, - from_id: SumProvider, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Sum' } }, - }, - }, - }); - - console.log({ Sum: Sum }); - - // TODO Rest restrictions - const { - data: [{ id: Pay }], - } = await deep.insert({ - type_id: BasePay, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Pay' } }, - }, - }, - }); - - console.log({ Pay: Pay }); - - const { - data: [{ id: Url }], - } = await deep.insert({ - type_id: BaseUrl, - from_id: TinkoffProvider, - to_id: Pay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Url' } }, - }, - }, - }); - - console.log({ Url: Url }); - - const { - data: [{ id: Payed }], - } = await deep.insert({ - type_id: BasePayed, - from_id: TinkoffProvider, - to_id: Pay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Payed' } }, - }, - }, - }); - - console.log({ Payed: Payed }); - - const { - data: [{ id: Error }], - } = await deep.insert({ - type_id: BaseError, - from_id: TinkoffProvider, - to_id: Pay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Error' } }, - }, - }, - }); - - console.log({ Error: Error }); - - const { - data: [{ id: paymentTreeId }], - } = await deep.insert({ - type_id: Tree, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'paymentTree' } }, - }, - }, - out: { - data: [ - { - type_id: TreeIncludeNode, - to_id: Payment, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Sum, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeDown, - to_id: Object, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Error, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Payed, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Pay, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Url, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - ], - }, - }); - - const { - data: [{ id: StorageBusiness }], - } = await deep.insert({ - type_id: Storage, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'StorageBusiness' } }, - }, - }, - }); - - const { - data: [{ id: Token }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Token' } }, - }, - }, - }); - - const { - data: [{ id: StorageClient }], - } = await deep.insert({ - type_id: Storage, - from_id: Payment, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'StorageClient' } }, - }, - }, - }); - - const { - data: [{ id: Title }], - } = await deep.insert({ - type_id: Type, - from_id: StorageClient, - to_id: SyncTextFile, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Title' } }, - }, - }, - }); - console.log({ Title }); - - const { - data: [{ id: Income }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Income' } }, - }, - }, - }); - console.log({ Income }); +console.log('Installing payments-tinkoff-c2b package'); +const PRICE = 5500; + +const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); + +const payInBrowser = async ({ page, browser, url }) => { + await page.goto(url, { waitUntil: 'networkidle2' }); + await sleep(5000); + const oldForm = await page.evaluate(() => { + return !!document.querySelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + }); + if (oldForm) { + console.log('OLD FORM!!!!!!!'); + // Старая форма используется на тестовом сервере + const cvc1 = await page.evaluate(() => { + return !!document.querySelector( + 'button[automation-id="pay-card__submit"]' + ); + }); + if (cvc1) { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_TEST_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_TEST_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-card__submit"]'); // submit button + } else { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_E2C_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_E2C_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-wallet__submit"]'); // submit button + await sleep(300); + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(1000); + } + // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен + await sleep(1000); + } else { + console.log('NEW FORM!!!!!!!'); + await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number + await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date + await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code + await page.click('button[type=submit]'); // submit button + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(3000); + } + await browser.close(); +}; - const handlersDependencies = ` +const f = async () => { + const apolloClient = generateApolloClient({ + path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE + ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') + ? false + : true, + // admin token in prealpha deep secret key + // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', + }); + + const unloginedDeep = new DeepClient({ apolloClient }); + + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + + const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + console.log({ dataString }); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + console.log({ hash }); + return hash; + }; + + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + ...restData, + Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, + }; + console.log({ dataWithPassword }); + return _generateToken(dataWithPassword); + }; + const generateTokenString = generateToken + .toString() + .replace( + 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', + `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` + ); + console.log({ generateTokenString }); + + const getUrl = (method) => + `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; + getUrlString = getUrl + .toString() + .replace( + '${process.env.PAYMENT_EACQ_AND_TEST_URL}', + process.env.PAYMENT_EACQ_AND_TEST_URL + ); + console.log({ getUrlString }); + + const getMarketUrl = (method) => + `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; + + const getState = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetState'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const checkOrder = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('CheckOrder'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getCardList = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCardList'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode || '0'); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const init = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Init'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const resend = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Resend'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const charge = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Charge'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const addCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('AddCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const removeCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('RemoveCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getBankPaymentId = async (orderId) => { + const checkOrderOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: orderId, + }; + + const checkOrderResult = await checkOrder(checkOrderOptions); + expect(checkOrderResult.error).to.equal(undefined); + + console.log({ checkOrderResponse: checkOrderResult }); + + const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; + + console.log({ bankPaymentId }); + return bankPaymentId; + }; + + const guest = await unloginedDeep.guest(); + const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); + const admin = await guestDeep.login({ + linkId: await guestDeep.id('deep', 'admin'), + }); + const deep = new DeepClient({ deep: guestDeep, ...admin }); + + const User = await deep.id('@deep-foundation/core', 'User'); + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + const Join = await deep.id('@deep-foundation/core', 'Join'); + const Contain = await deep.id('@deep-foundation/core', 'Contain'); + const Value = await deep.id('@deep-foundation/core', 'Value'); + const String = await deep.id('@deep-foundation/core', 'String'); + const Package = await deep.id('@deep-foundation/core', 'Package'); + + const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); + const dockerSupportsJs = await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ); + const Handler = await deep.id('@deep-foundation/core', 'Handler'); + const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); + const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); + + const Tree = await deep.id('@deep-foundation/core', 'Tree'); + const TreeIncludeNode = await deep.id( + '@deep-foundation/core', + 'TreeIncludeNode' + ); + const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); + const TreeIncludeDown = await deep.id( + '@deep-foundation/core', + 'TreeIncludeDown' + ); + + const Rule = await deep.id('@deep-foundation/core', 'Rule'); + const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); + const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); + const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); + const Selector = await deep.id('@deep-foundation/core', 'Selector'); + const SelectorInclude = await deep.id( + '@deep-foundation/core', + 'SelectorInclude' + ); + const SelectorExclude = await deep.id( + '@deep-foundation/core', + 'SelectorExclude' + ); + const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); + const containTree = await deep.id('@deep-foundation/core', 'containTree'); + const AllowInsertType = await deep.id( + '@deep-foundation/core', + 'AllowInsertType' + ); + const AllowDeleteType = await deep.id( + '@deep-foundation/core', + 'AllowDeleteType' + ); + const SelectorFilter = await deep.id( + '@deep-foundation/core', + 'SelectorFilter' + ); + const Query = await deep.id('@deep-foundation/core', 'Query'); + const usersId = await deep.id('deep', 'users'); + + const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); + const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); + const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); + const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); + const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); + const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); + const BaseError = await deep.id('@deep-foundation/payments', 'Error'); + const Storage = await deep.id('@deep-foundation/payments', 'Storage'); + + const { + data: [{ id: packageId }], + } = await deep.insert({ + type_id: Package, + string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + out: { + data: [ + { + type_id: Join, + to_id: await deep.id('deep', 'users', 'packages'), + }, + { + type_id: Join, + to_id: await deep.id('deep', 'admin'), + }, + ], + }, + }); + + console.log({ packageId }); + + const { + data: [{ id: SumProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'SumProvider' } }, + }, + }, + }); + + console.log({ SumProvider: SumProvider }); + + const { + data: [{ id: TinkoffProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'TinkoffProvider' } }, + }, + }, + }); + + console.log({ TinkoffProvider }); + + const { + data: [{ id: Payment }], + } = await deep.insert({ + type_id: BasePayment, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Payment' } }, + }, + }, + }); + + console.log({ Payment: Payment }); + + const { + data: [{ id: Object }], + } = await deep.insert({ + type_id: BaseObject, + from_id: Payment, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Object' } }, + }, + }, + }); + + console.log({ Object: Object }); + + const { + data: [{ id: Sum }], + } = await deep.insert({ + type_id: BaseSum, + from_id: SumProvider, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Sum' } }, + }, + }, + }); + + console.log({ Sum: Sum }); + + // TODO Rest restrictions + const { + data: [{ id: Pay }], + } = await deep.insert({ + type_id: BasePay, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Pay' } }, + }, + }, + }); + + console.log({ Pay: Pay }); + + const { + data: [{ id: Url }], + } = await deep.insert({ + type_id: BaseUrl, + from_id: TinkoffProvider, + to_id: Pay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Url' } }, + }, + }, + }); + + console.log({ Url: Url }); + + const { + data: [{ id: Payed }], + } = await deep.insert({ + type_id: BasePayed, + from_id: TinkoffProvider, + to_id: Pay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Payed' } }, + }, + }, + }); + + console.log({ Payed: Payed }); + + const { + data: [{ id: Error }], + } = await deep.insert({ + type_id: BaseError, + from_id: TinkoffProvider, + to_id: Pay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Error' } }, + }, + }, + }); + + console.log({ Error: Error }); + + const { + data: [{ id: paymentTreeId }], + } = await deep.insert({ + type_id: Tree, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'paymentTree' } }, + }, + }, + out: { + data: [ + { + type_id: TreeIncludeNode, + to_id: Payment, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Sum, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeDown, + to_id: Object, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Error, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Payed, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Pay, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Url, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + ], + }, + }); + + const { + data: [{ id: StorageBusiness }], + } = await deep.insert({ + type_id: Storage, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'StorageBusiness' } }, + }, + }, + }); + + const { + data: [{ id: Token }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Token' } }, + }, + }, + }); + + const { + data: [{ id: StorageClient }], + } = await deep.insert({ + type_id: Storage, + from_id: Payment, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'StorageClient' } }, + }, + }, + }); + + const { + data: [{ id: Title }], + } = await deep.insert({ + type_id: Type, + from_id: StorageClient, + to_id: SyncTextFile, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Title' } }, + }, + }, + }); + console.log({ Title }); + + const { + data: [{ id: Income }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Income' } }, + }, + }, + }); + console.log({ Income }); + + const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); const errorsConverter = ${JSON.stringify(errorsConverter)}; @@ -948,13 +952,11 @@ const f = async () => { const _generateToken = ${_generateToken.toString()}; const generateToken = ${generateTokenString}; `; - console.log({ handlersDependencies }); - const payInsertHandler = ` + console.log({ handlersDependencies }); + const payInsertHandler = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} - const Contain = await deep.id("@deep-foundation/core", 'Contain'); - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider @@ -1052,7 +1054,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { in: { data: [ { - type_id: Contain, + type_id: await deep.id("@deep-foundation/core", 'Contain'), from_id: deep.linkId, }, ], @@ -1070,7 +1072,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { in: { data: [ { - type_id: Contain, + type_id: await deep.id("@deep-foundation/core", 'Contain'), from_id: deep.linkId, }, ], @@ -1087,56 +1089,56 @@ async ({ deep, require, data: { newLink: payLink } }) => { return initResult; }; `; - console.log({ payInsertHandler }); - - const { - data: [{ id: payInsertHandlerId }], - } = await deep.insert({ - type_id: SyncTextFile, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandlerFile' } }, - }, - { - from_id: dockerSupportsJs, - type_id: Handler, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandler' } }, - }, - { - type_id: HandleInsert, - from_id: Pay, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandle' } }, - }, - ], - }, - }, - ], - }, - }, - ], - }, - string: { - data: { - value: payInsertHandler, - }, - }, - }); - console.log({ payInsertHandlerId }); - - const tinkoffNotificationHandler = ` + console.log({ payInsertHandler }); + + const { + data: [{ id: payInsertHandlerId }], + } = await deep.insert({ + type_id: SyncTextFile, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandlerFile' } }, + }, + { + from_id: dockerSupportsJs, + type_id: Handler, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandler' } }, + }, + { + type_id: HandleInsert, + from_id: Pay, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandle' } }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + string: { + data: { + value: payInsertHandler, + }, + }, + }); + console.log({ payInsertHandlerId }); + + const tinkoffNotificationHandler = ` async ( req, res, @@ -1147,8 +1149,6 @@ async ( const reqBody = req.body; console.log({reqBody}); - const Contain = await deep.id("@deep-foundation/core", 'Contain'); - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider @@ -1225,7 +1225,7 @@ async ( in: { data: [ { - type_id: Contain, + type_id: await deep.id("@deep-foundation/core", 'Contain'), from_id: deep.linkId, }, ], @@ -1244,7 +1244,7 @@ async ( in: { data: [ { - type_id: Contain, + type_id: await deep.id("@deep-foundation/core", 'Contain'), from_id: deep.linkId, }, ], @@ -1306,636 +1306,639 @@ async ( res.send('ok'); }; `; - console.log({ tinkoffNotificationHandler }); - - await deep.insert( - { - type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { - data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, - }, - in: { - data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), - in: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'RouterStringUse' - ), - string: { - data: { - value: - process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, - }, - }, - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), - out: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'HandleRoute' - ), - to: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'Handler' - ), - from_id: await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ), - in: { - data: { - type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - to: { - data: { - type_id: SyncTextFile, - string: { - data: { - value: tinkoffNotificationHandler, - }, - }, - in: { - data: { - type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - } - ); - - const callTests = async () => { - console.log('callTests-start'); - - const createdLinks = []; - - const { - data: [tinkoffProviderLink], - } = await deep.insert({ - type_id: TinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tinkoffProviderLink }); - createdLinks.push(tinkoffProviderLink); - - const { - data: [{ id: sumProviderLink }], - } = await deep.insert({ - type_id: SumProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ sumProviderLink }); - createdLinks.push(sumProviderLink); - - const { - data: [storageBusinessLink], - } = await deep.insert({ - type_id: StorageBusiness, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ storageBusinessLink }); - createdLinks.push(storageBusinessLink.id); - - const { - data: [tokenLink], - } = await deep.insert({ - type_id: Token, - from_id: storageBusinessLink.id, - to_id: storageBusinessLink.id, - string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tokenLink }); - createdLinks.push(tokenLink); - - const { - data: [{ id: Product }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ Product }); - createdLinks.push(Product); - - const { - data: [productLink], - } = await deep.insert({ - type_id: Product, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ productLink }); - createdLinks.push(productLink); - - const callRealizationTests = async () => { - const testInit = async () => { - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - Amount: PRICE, - Description: 'Test shopping', - CustomerKey: deep.linkId, - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // }, - }; - - const initResult = await init(initOptions); - - expect(initResult.error).to.equal(undefined); - - return initResult; - }; - - const testConfirm = async () => { - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // }, - }; - - const initResult = await init(initOptions); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const confirmOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const confirmResult = await confirm(confirmOptions); - - expect(confirmResult.error).to.equal(undefined); - expect(confirmResult.response.Status).to.equal('CONFIRMED'); - - return confirmResult; - }; - - const testGetState = async () => { - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Amount: PRICE, - }); - - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.error).to.equal(undefined); - }; - - const testGetCardList = async () => { - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - OrderId: uniqid(), - Amount: PRICE, - Recurrent: 'Y', - }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.error).to.equal(undefined); - }; - - const testResend = async () => { - console.log('testResend-start'); - const resendOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - }; - console.log({ resendOptions }); - - const resendResult = await resend(resendOptions); - console.log({ resendResult }); - - expect(resendResult.error).to.equal(undefined); - console.log('testResend-end'); - }; - - const testCharge = async () => { - console.log('testCharge-start'); - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Recurrent: 'Y', - }); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.response[0].RebillId).to.have.length.above(0); - - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.response.Status).to.equal('AUTHORIZED'); - - const newInitResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - }); - - const newChargeOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: newInitResult.response.PaymentId, - RebillId: Number(getCardListResult.response[0].RebillId), - }; - - const chargeResult = await charge(newChargeOptions); - - expect(chargeResult.error).to.equal(undefined); - console.log('testCharge-end'); - }; - - const testAddCustomer = async () => { - console.log('testAddCustomer-start'); - - const addCustomerOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - console.log({ addCustomerOptions }); - - const addCustomerResult = await addCustomer(addCustomerOptions); - console.log({ addCustomerResult }); - - expect(addCustomerResult.error).to.equal(undefined); - console.log('testAddCustomer-end'); - }; - - const testGetCustomer = async () => { - console.log('testGetCustomer-start'); - - const customerOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - - const addCustomerDataOptions = { - ...customerOptions, - Phone: process.env.PAYMENT_TEST_PHONE, - }; - - const addResult = await addCustomer(addCustomerDataOptions); - - expect(addResult.error).to.equal(undefined); - - const getResult = await getCustomer(customerOptions); - - expect(getResult.error).to.equal(undefined); - expect(getResult.response.Phone).to.equal( - process.env.PAYMENT_TEST_PHONE - ); - - console.log('testGetCustomer-end'); - }; - - const testRemoveCustomer = async () => { - console.log('testRemoveCustomer-start'); - - const removeCustomerData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - - const newAddCustomerData = { - ...removeCustomerData, - Phone: process.env.PAYMENT_TEST_PHONE, - }; - - const addResult = await addCustomer(newAddCustomerData); - - expect(addResult.error).to.equal(undefined); - - const removeResult = await removeCustomer(removeCustomerData); - - expect(removeResult.error).to.equal(undefined); - - console.log('testRemoveCustomer-end'); - }; - - await testInit(); - await testConfirm(); - await testGetState(); - await testGetCardList(); - await testResend(); - await testCharge(); - await testAddCustomer(); - await testGetCustomer(); - await testRemoveCustomer(); - }; - - const callIntegrationTests = async () => { - const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testInit-start'); - - const createdLinks = []; - - const { - data: [paymentLink], - } = await deep.insert({ - type_id: Payment, - object: { data: { value: { orderId: uniqid() } } }, - from_id: deep.linkId, - to_id: storageBusinessLink.id, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ paymentLink }); - createdLinks.push(paymentLink); - + console.log({ tinkoffNotificationHandler }); + + await deep.insert( + { + type_id: await deep.id('@deep-foundation/core', 'Port'), + number: { + data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, + }, + in: { + data: { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'RouterStringUse' + ), + string: { + data: { + value: + process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, + }, + }, + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + out: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'HandleRoute' + ), + to: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'Handler' + ), + from_id: await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ), + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + to: { + data: { + type_id: SyncTextFile, + string: { + data: { + value: tinkoffNotificationHandler, + }, + }, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + } + ); + + const callTests = async () => { + console.log('callTests-start'); + + const callRealizationTests = async () => { + const testInit = async () => { + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + Amount: PRICE, + Description: 'Test shopping', + CustomerKey: deep.linkId, + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: PRICE, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + expect(initResult.error).to.equal(undefined); + + return initResult; + }; + + const testConfirm = async () => { + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: PRICE, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const confirmOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const confirmResult = await confirm(confirmOptions); + + expect(confirmResult.error).to.equal(undefined); + expect(confirmResult.response.Status).to.equal('CONFIRMED'); + + return confirmResult; + }; + + const testGetState = async () => { + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + Amount: PRICE, + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.error).to.equal(undefined); + }; + + const testGetCardList = async () => { + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + OrderId: uniqid(), + Amount: PRICE, + Recurrent: 'Y', + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.error).to.equal(undefined); + }; + + const testResend = async () => { + console.log('testResend-start'); + const resendOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + }; + console.log({ resendOptions }); + + const resendResult = await resend(resendOptions); + console.log({ resendResult }); + + expect(resendResult.error).to.equal(undefined); + console.log('testResend-end'); + }; + + const testCharge = async () => { + console.log('testCharge-start'); + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + Recurrent: 'Y', + }); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; - const { - data: [sumLink], - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderLink.id, - to_id: paymentLink.id, - number: { data: { value: 150 } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ sumLink }); - createdLinks.push(sumLink); - - const { - data: [objectLink], - } = await deep.insert({ - type_id: Object, - from_id: paymentLink.id, - to_id: productLink.id, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ objectLink }); - createdLinks.push(objectLink); - - const { - data: [payLink], - } = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLink.id, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ payLink }); - createdLinks.push(payLink); - - await sleep(9000); - - const { - data - } = await deep.select({ - type_id: Url, - to_id: payLink.id, - }); - - expect(data.length).to.greaterThan(0); - - createdLinks.push(data[0]); - - console.log('testInit-end'); - - return { - createdLinks - } - }; - - const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testFinishAuthorize-start'); - const {createdLinks} = await testInit({ customerKey }); - const urlLink = createdLinks.find(link => link.type_id === Url); - const url = urlLink.value.value; - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, - }); - console.log('testFinishAuthorize-end'); - - return {createdLinks} - }; - - const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testConfirm-start'); - const {createdLinks} = await testFinishAuthorize({ customerKey }); - await sleep(17000); - - const payLink = createdLinks.find(link => link.type_id === Pay); - - let { data } = await deep.select({ - type_id: Payed, - to_id: payLink.id - }); - - expect(data.length).to.greaterThan(0); - - createdLinks.push(data[0]); - - console.log('testConfirm-end'); - - return {createdLinks} - }; - - /* + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.response[0].RebillId).to.have.length.above(0); + + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.response.Status).to.equal('AUTHORIZED'); + + const newInitResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + }); + + const newChargeOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: newInitResult.response.PaymentId, + RebillId: Number(getCardListResult.response[0].RebillId), + }; + + const chargeResult = await charge(newChargeOptions); + + expect(chargeResult.error).to.equal(undefined); + console.log('testCharge-end'); + }; + + const testAddCustomer = async () => { + console.log('testAddCustomer-start'); + + const addCustomerOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + console.log({ addCustomerOptions }); + + const addCustomerResult = await addCustomer(addCustomerOptions); + console.log({ addCustomerResult }); + + expect(addCustomerResult.error).to.equal(undefined); + console.log('testAddCustomer-end'); + }; + + const testGetCustomer = async () => { + console.log('testGetCustomer-start'); + + const customerOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + + const addCustomerDataOptions = { + ...customerOptions, + Phone: process.env.PAYMENT_TEST_PHONE, + }; + + const addResult = await addCustomer(addCustomerDataOptions); + + expect(addResult.error).to.equal(undefined); + + const getResult = await getCustomer(customerOptions); + + expect(getResult.error).to.equal(undefined); + expect(getResult.response.Phone).to.equal( + process.env.PAYMENT_TEST_PHONE + ); + + console.log('testGetCustomer-end'); + }; + + const testRemoveCustomer = async () => { + console.log('testRemoveCustomer-start'); + + const removeCustomerData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + + const newAddCustomerData = { + ...removeCustomerData, + Phone: process.env.PAYMENT_TEST_PHONE, + }; + + const addResult = await addCustomer(newAddCustomerData); + + expect(addResult.error).to.equal(undefined); + + const removeResult = await removeCustomer(removeCustomerData); + + expect(removeResult.error).to.equal(undefined); + + console.log('testRemoveCustomer-end'); + }; + + await testInit(); + await testConfirm(); + await testGetState(); + await testGetCardList(); + await testResend(); + await testCharge(); + await testAddCustomer(); + await testGetCustomer(); + await testRemoveCustomer(); + }; + + const callIntegrationTests = async () => { + const setup = async () => { + const createdLinks = []; + + const { + data: [tinkoffProviderLink], + } = await deep.insert({ + type_id: TinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ tinkoffProviderLink }); + createdLinks.push(tinkoffProviderLink); + + const { + data: [{ id: sumProviderLink }], + } = await deep.insert({ + type_id: SumProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ sumProviderLink }); + createdLinks.push(sumProviderLink); + + const { + data: [storageBusinessLink], + } = await deep.insert({ + type_id: StorageBusiness, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ storageBusinessLink }); + createdLinks.push(storageBusinessLink.id); + + const { + data: [tokenLink], + } = await deep.insert({ + type_id: Token, + from_id: storageBusinessLink.id, + to_id: storageBusinessLink.id, + string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ tokenLink }); + createdLinks.push(tokenLink); + + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ Product }); + createdLinks.push(Product); + + const { + data: [productLink], + } = await deep.insert({ + type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ productLink }); + createdLinks.push(productLink); + + return { integratedTestsCreatedLinks: createdLinks }; + }; + + const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testInit-start'); + + const createdLinks = []; + + const { + data: [paymentLink], + } = await deep.insert({ + type_id: Payment, + object: { data: { value: { orderId: uniqid() } } }, + from_id: deep.linkId, + to_id: storageBusinessLink.id, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ paymentLink }); + createdLinks.push(paymentLink); + + const { + data: [sumLink], + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderLink.id, + to_id: paymentLink.id, + number: { data: { value: 150 } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ sumLink }); + createdLinks.push(sumLink); + + const { + data: [objectLink], + } = await deep.insert({ + type_id: Object, + from_id: paymentLink.id, + to_id: productLink.id, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ objectLink }); + createdLinks.push(objectLink); + + const { + data: [payLink], + } = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumLink.id, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ payLink }); + createdLinks.push(payLink); + + await sleep(9000); + + const { data } = await deep.select({ + type_id: Url, + to_id: payLink.id, + }); + + expect(data.length).to.greaterThan(0); + + createdLinks.push(data[0]); + + console.log('testInit-end'); + + return { + createdLinks, + }; + }; + + const testFinishAuthorize = async ( + { customerKey } = { customerKey: uniqid() } + ) => { + console.log('testFinishAuthorize-start'); + const { createdLinks } = await testInit({ customerKey }); + const urlLink = createdLinks.find((link) => link.type_id === Url); + const url = urlLink.value.value; + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); + console.log('testFinishAuthorize-end'); + + return { createdLinks }; + }; + + const testConfirm = async ( + { customerKey } = { customerKey: uniqid() } + ) => { + console.log('testConfirm-start'); + const { createdLinks } = await testFinishAuthorize({ customerKey }); + await sleep(17000); + + const payLink = createdLinks.find((link) => link.type_id === Pay); + + let { data } = await deep.select({ + type_id: Payed, + to_id: payLink.id, + }); + + expect(data.length).to.greaterThan(0); + + createdLinks.push(data[0]); + + console.log('testConfirm-end'); + + return { createdLinks }; + }; + + /* const testGetState = async () => { console.log('testGetState-start'); await testFinishAuthorize(); @@ -1974,24 +1977,25 @@ async ( console.log('testGetCardList-end'); }; */ - var createdLinks; - const {createdLinks} = await testInit(); - await deep.delete(createdLinks.map(link => link.id)); - const {createdLinks} = await testFinishAuthorize(); - await deep.delete(createdLinks.map(link => link.id)); - const {createdLinks} = await testConfirm(); - await deep.delete(createdLinks.map(link => link.id)); - /*await testGetState(); + var createdLinks; + const { integratedTestsCreatedLinks } = await setup(); + const { createdLinks } = await testInit(); + await deep.delete(createdLinks.map((link) => link.id)); + const { createdLinks } = await testFinishAuthorize(); + await deep.delete(createdLinks.map((link) => link.id)); + const { createdLinks } = await testConfirm(); + await deep.delete(createdLinks.map((link) => link.id)); + await deep.delete(integratedTestsCreatedLinks); + + /*await testGetState(); await testGetCardList();*/ - }; + }; - // await callRealizationTests(); - await callIntegrationTests(); - - await deep.delete(createdLinks); - }; + // await callRealizationTests(); + await callIntegrationTests(); + }; - await callTests(); + await callTests(); }; -f(); \ No newline at end of file +f(); From fe232e601c9eb4ae0ecca68dcc873abac5e48393 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 17 Sep 2022 14:28:39 +0600 Subject: [PATCH 452/683] Contain notification handler in package --- payments-tinkoff-c2b-cancelling.cjs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index c688d709..b2d5442a 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1030,8 +1030,7 @@ async ( in: { data: { type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), + from_id: packageId, string: { data: { value: 'tinkoffNotificationHandler', From d76316a238a6f94e53c468ce86d5a1af79e7d64b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 17 Sep 2022 14:41:02 +0600 Subject: [PATCH 453/683] Do not wait fixed time --- payments-tinkoff-c2b-cancelling.cjs | 134 ++++++++++++++++------------ 1 file changed, 79 insertions(+), 55 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index b2d5442a..adb35210 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1567,18 +1567,23 @@ async ( console.log({ payLink }); createdLinks.push(payLink); - await sleep(9000); + var urlLinkSelectQuery; + for (let i = 0; i < 10; i++) { + urlLinkSelectQuery = await deep.select({ + type_id: Url, + to_id: payLink.id, + }); + + if(urlLinkSelectQuery.data.length > 0) { + break; + } - const { - data, - } = await deep.select({ - type_id: Url, - to_id: payLink.id, - }); + await sleep(1000); + } - expect(data.length).to.greaterThan(0); + expect(urlLinkSelectQuery.data.length).to.greaterThan(0); - createdLinks.push(data[0]); + createdLinks.push(urlLinkSelectQuery.data[0]); console.log('testInit-end'); @@ -1619,12 +1624,21 @@ async ( const payLink = createdLinks.find(link => link.type_id === Pay); expect(payLink).to.be.not.undefined(); - const {data} = await deep.select({ - type_id: Payed, - to_id: payLink.id - }); + var payedLinkSelectQuery; + for (let i = 0; i < 10; i++) { + payedLinkSelectQuery = await deep.select({ + type_id: Payed, + to_id: payLink.id + }); + + if(payedLinkSelectQuery.data.length > 0) { + break; + } + + await sleep(1000); + } - expect(data.length).to.greaterThan(0); + expect(payedLinkSelectQuery.data.length).to.greaterThan(0); createdLinks.push(data[0]); @@ -1663,8 +1677,6 @@ async ( console.log({ cancellingPaymentLink }); createdLinks.push(cancellingPaymentLink); - await sleep(3000); - const { data: [sumLinkOfCancellingPayment] } = await deep.insert({ @@ -1684,8 +1696,6 @@ async ( console.log({ sumLinkOfCancellingPayment }); createdLinks.push(sumLinkOfCancellingPayment); - await sleep(5000); - const payLinkInsertQuery = await deep.insert({ type_id: CancellingPay, from_id: deep.linkId, @@ -1703,17 +1713,24 @@ async ( if (payLinkInsertQuery.error) { throw new Error(payLinkInsertQuery.error.message); } createdLinks.push(payLinkInsertQuery.data[0]); - await sleep(3000); - - const { data: mpUpCancellingPayment, error: mpUpCancellingPaymentSelectQueryError } = await deep.select({ - up: { - parent_id: { _eq: cancellingPaymentLink.id }, - tree_id: { _eq: paymentTreeId } + var mpUpCancellingPaymentSelectQuery; + for (let i = 0; i < 10; i++) { + mpUpCancellingPaymentSelectQuery = await deep.select({ + up: { + parent_id: { _eq: cancellingPaymentLink.id }, + tree_id: { _eq: paymentTreeId } + } + }); + + if(mpUpCancellingPaymentSelectQuery.data.length > 0) { + break; } - }); - if (mpUpCancellingPaymentSelectQueryError) { throw new Error(mpUpCancellingPaymentSelectQueryError); } - const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); - const payedLink = mpUpCancellingPayment.find(link => link.type_id === Payed); + + await sleep(1000); + } + + if (mpUpCancellingPaymentSelectQuery.error) { throw new Error(mpUpCancellingPaymentSelectQuery.error.message); } + const payedLink = mpUpCancellingPaymentSelectQuery.data.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); createdLinks.push(payedLink); @@ -1749,8 +1766,6 @@ async ( console.log({ cancellingPaymentLink }); createdLinks.push(cancellingPaymentLink); - await sleep(3000); - const { data: [sumLinkOfCancellingPayment] } = await deep.insert({ @@ -1787,18 +1802,24 @@ async ( if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } createdLinks.push(cancellingPayLinkInsertQuery.data[0]); - await sleep(3000); - - const { data: mpUpCancellingPayment, error: mpUpCancellingPaymentSelectQueryError } = await deep.select({ - up: { - parent_id: { _eq: cancellingPaymentLink.id }, - tree_id: { _eq: paymentTreeId } + var mpUpCancellingPaymentSelectQuery; + for (let i = 0; i < 10; i++) { + mpUpCancellingPaymentSelectQuery = await deep.select({ + up: { + parent_id: { _eq: cancellingPaymentLink.id }, + tree_id: { _eq: paymentTreeId } + } + }); + + if(mpUpCancellingPaymentSelectQuery.data.length > 0) { + break; } - }); - console.log({ mpUpCancellingPayment }); - if (mpUpCancellingPaymentSelectQueryError) { throw new Error(mpUpCancellingPaymentSelectQueryError); } - const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); - const payedLink = mpUpCancellingPayment.find(link => link.type_id === Payed); + + await sleep(1000); + } + + if (mpUpCancellingPaymentSelectQuery.error) { throw new Error(mpUpCancellingPaymentSelectQuery.error.message); } + const payedLink = mpUpCancellingPaymentSelectQuery.data.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); createdLinks.push(payedLink); } @@ -1834,8 +1855,6 @@ async ( console.log({ cancellingPaymentLink }); createdLinks.push(cancellingPaymentLink); - await sleep(3000); - const { data: [sumLinkOfCancellingPayment] } = await deep.insert({ @@ -1855,8 +1874,6 @@ async ( console.log({ sumLinkOfCancellingPayment }); createdLinks.push(sumLinkOfCancellingPayment); - await sleep(5000); - const cancellingPayLinkInsertQuery = await deep.insert({ type_id: CancellingPay, from_id: deep.linkId, @@ -1874,17 +1891,24 @@ async ( if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } createdLinks.push(cancellingPayLinkInsertQuery.data[0]); - await sleep(3000); - - const { data: mpUpCancellingPayment, error: mpUpCancellingPaymentSelectQueryError } = await deep.select({ - up: { - parent_id: { _eq: cancellingPaymentLink.id }, - tree_id: { _eq: paymentTreeId } + var mpUpCancellingPaymentSelectQuery; + for (let i = 0; i < 10; i++) { + mpUpCancellingPaymentSelectQuery = await deep.select({ + up: { + parent_id: { _eq: cancellingPaymentLink.id }, + tree_id: { _eq: paymentTreeId } + } + }); + + if(mpUpCancellingPaymentSelectQuery.data.length > 0) { + break; } - }); - if (mpUpCancellingPaymentSelectQueryError) { throw new Error(mpUpCancellingPaymentSelectQueryError); } - const Payed = await deep.id('@deep-foundation/payments-tinkoff-c2b', "Payed"); - const payedLink = mpUpCancellingPayment.find(link => link.type_id === Payed); + + await sleep(1000); + } + + if (mpUpCancellingPaymentSelectQuery.error) { throw new Error(mpUpCancellingPaymentSelectQuery.error.message); } + const payedLink = mpUpCancellingPaymentSelectQuery.data.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); createdLinks.push(payedLink); From 757705f06fe43379b8491d55f3053fe5418ece87 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 11:45:47 +0600 Subject: [PATCH 454/683] Do not sleep fixed amount of time --- payments-tinkoff-c2b.cjs | 43 +++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 284a3ba0..b95ebeb5 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1877,16 +1877,23 @@ async ( console.log({ payLink }); createdLinks.push(payLink); - await sleep(9000); + var urlLinkSelectQuery; + for (let i = 0; i < 10; i++) { + urlLinkSelectQuery = await deep.select({ + type_id: Url, + to_id: payLink.id, + }); - const { data } = await deep.select({ - type_id: Url, - to_id: payLink.id, - }); + if(urlLinkSelectQuery.data.length > 0){ + break; + } + + await sleep(1000); + } - expect(data.length).to.greaterThan(0); + expect(urlLinkSelectQuery.data.length).to.greaterThan(0); - createdLinks.push(data[0]); + createdLinks.push(urlLinkSelectQuery.data[0]); console.log('testInit-end'); @@ -1920,18 +1927,26 @@ async ( ) => { console.log('testConfirm-start'); const { createdLinks } = await testFinishAuthorize({ customerKey }); - await sleep(17000); const payLink = createdLinks.find((link) => link.type_id === Pay); - let { data } = await deep.select({ - type_id: Payed, - to_id: payLink.id, - }); + var payedLinkSelectQuery; + for (let i = 0; i < 10; i++) { + payedLinkSelectQuery = await deep.select({ + type_id: Payed, + to_id: payLink.id, + }); + + if(payedLinkSelectQuery.data.length > 0){ + break; + } + + await sleep(1000); + } - expect(data.length).to.greaterThan(0); + expect(payedLinkSelectQuery.data.length).to.greaterThan(0); - createdLinks.push(data[0]); + createdLinks.push(payedLinkSelectQuery.data[0]); console.log('testConfirm-end'); From 39d30d68ab2f05f126686932edfc3cbcddcafa4c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 11:50:00 +0600 Subject: [PATCH 455/683] Add income to the cancelling payment --- payments-tinkoff-c2b-cancelling.cjs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index adb35210..bdc3599c 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -780,6 +780,15 @@ async ({ deep, require, data: { newLink: payLink } }) => { const cancelledPaymentLink = fromLinkOfPaymentQuery.data[0]; console.log({cancelledPaymentLink}); + const Income = awaid deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); + const incomeLinkInsertQuery = await deep.insert({ + type_id: Income, + from_id: cancellingPaymentLink.id, + to_id: cancelledPaymentLink.to_id + }); + if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} + + const userLinkSelectQuery = await deep.select({ id: cancellingPaymentLink.to_id }); From 24d38b46897bd0808e8b95911a5fcfd6d8ba34fd Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 06:01:41 +0000 Subject: [PATCH 456/683] Use blocks to use the same name for createdLinks from tests return value --- payments-tinkoff-c2b.cjs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index b95ebeb5..a17c1421 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1992,14 +1992,19 @@ async ( console.log('testGetCardList-end'); }; */ - var createdLinks; const { integratedTestsCreatedLinks } = await setup(); - const { createdLinks } = await testInit(); - await deep.delete(createdLinks.map((link) => link.id)); - const { createdLinks } = await testFinishAuthorize(); - await deep.delete(createdLinks.map((link) => link.id)); - const { createdLinks } = await testConfirm(); - await deep.delete(createdLinks.map((link) => link.id)); + { + const { createdLinks } = await testInit(); + await deep.delete(createdLinks.map((link) => link.id)); + } + { + const { createdLinks } = await testFinishAuthorize(); + await deep.delete(createdLinks.map((link) => link.id)); + } + { + const { createdLinks } = await testConfirm(); + await deep.delete(createdLinks.map((link) => link.id)); + } await deep.delete(integratedTestsCreatedLinks); /*await testGetState(); From 983bb6fc8c26480db97c1c643b7baa41ef59edb1 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 06:03:14 +0000 Subject: [PATCH 457/683] Use blocks to use tests return value with the same name --- payments-tinkoff-c2b-cancelling.cjs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index bdc3599c..3c7eb151 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1926,13 +1926,18 @@ async ( return {createdLinks} }; - var createdLinks; - const {createdLinks} = await testCancelAfterPayAfterConfirmFullPrice(); - await deep.delete(createdLinks); - const {createdLinks} = await testCancelAfterPayAfterConfirmCustomPriceX2(); - await deep.delete(createdLinks); - const {createdLinks} = await testCancelBeforePay(); - await deep.delete(createdLinks); + { + const {createdLinks} = await testCancelAfterPayAfterConfirmFullPrice(); + await deep.delete(createdLinks.map(link => link.id)); + } + { + const {createdLinks} = await testCancelAfterPayAfterConfirmCustomPriceX2(); + await deep.delete(createdLinks.map(link => link.id)); + } + { + const {createdLinks} = await testCancelBeforePay(); + await deep.delete(createdLinks.map(link => link.id)); + } console.log('testCancel-end'); From 35ae8b263900bbd8d9db690baedf93ebb61144b2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 06:12:15 +0000 Subject: [PATCH 458/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 3c7eb151..b3192dd8 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1491,8 +1491,8 @@ async ( ], }, }); - console.log({ productId }); - createdLinks.push(productId); + console.log({ productLink }); + createdLinks.push(productLink); return {createdLinks} } From e7f35dcd7918ab760ce69735a8d4fe60f8cb1046 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 06:13:58 +0000 Subject: [PATCH 459/683] Format --- payments-tinkoff-c2b-cancelling.cjs | 242 ++++++++++++++-------------- 1 file changed, 121 insertions(+), 121 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index b3192dd8..b93aef62 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1393,108 +1393,108 @@ async ( const setup = async () => { const createdLinks = []; - const { - data: [tinkoffProviderLink], - } = await deep.insert({ - type_id: TinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, + const { + data: [tinkoffProviderLink], + } = await deep.insert({ + type_id: TinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], }, - ], - }, - }); - console.log({ tinkoffProviderLink }); - createdLinks.push(tinkoffProviderLink); + }); + console.log({ tinkoffProviderLink }); + createdLinks.push(tinkoffProviderLink); - const { - data: [sumProviderLink], - } = await deep.insert({ - type_id: SumProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, + const { + data: [sumProviderLink], + } = await deep.insert({ + type_id: SumProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], }, - ], - }, - }); - console.log({ sumProviderLink }); - createdLinks.push(sumProviderLink); + }); + console.log({ sumProviderLink }); + createdLinks.push(sumProviderLink); - const { - data: [storageBusinessLink], - } = await deep.insert({ - type_id: StorageBusiness, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, + const { + data: [storageBusinessLink], + } = await deep.insert({ + type_id: StorageBusiness, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], }, - ], - }, - }); - console.log({ storageBusinessLink }); - createdLinks.push(storageBusinessLink); - - const { - data: [tokenLink], - } = await deep.insert({ - type_id: Token, - from_id: storageBusinessLink.id, - to_id: storageBusinessLink.id, - string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, + }); + console.log({ storageBusinessLink }); + createdLinks.push(storageBusinessLink); + + const { + data: [tokenLink], + } = await deep.insert({ + type_id: Token, + from_id: storageBusinessLink.id, + to_id: storageBusinessLink.id, + string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], }, - ], - }, - }); - console.log({ tokenLink }); - createdLinks.push(tokenLink); - - const { - data: [{ id: Product }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, + }); + console.log({ tokenLink }); + createdLinks.push(tokenLink); + + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], }, - ], - }, - }); - console.log({ Product }); - createdLinks.push(Product); + }); + console.log({ Product }); + createdLinks.push(Product); - const { - data: [productLink], - } = await deep.insert({ - type_id: Product, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, + const { + data: [productLink], + } = await deep.insert({ + type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], }, - ], - }, - }); - console.log({ productLink }); - createdLinks.push(productLink); + }); + console.log({ productLink }); + createdLinks.push(productLink); - return {createdLinks} + return { createdLinks } } const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { @@ -1581,9 +1581,9 @@ async ( urlLinkSelectQuery = await deep.select({ type_id: Url, to_id: payLink.id, - }); - - if(urlLinkSelectQuery.data.length > 0) { + }); + + if (urlLinkSelectQuery.data.length > 0) { break; } @@ -1603,13 +1603,13 @@ async ( const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testFinishAuthorize-start'); - const {createdLinks} = await testInit({ customerKey }); + const { createdLinks } = await testInit({ customerKey }); const urlLink = createdLinks.find(link => link.type_id === Url); expect(urlLink).to.not.be.undefined() const url = urlLink.value.value; - console.log({url}); + console.log({ url }); const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); @@ -1627,7 +1627,7 @@ async ( const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testConfirm-start'); - const {createdLinks} = await testFinishAuthorize({ customerKey }); + const { createdLinks } = await testFinishAuthorize({ customerKey }); await sleep(7000); const payLink = createdLinks.find(link => link.type_id === Pay); @@ -1639,8 +1639,8 @@ async ( type_id: Payed, to_id: payLink.id }); - - if(payedLinkSelectQuery.data.length > 0) { + + if (payedLinkSelectQuery.data.length > 0) { break; } @@ -1662,7 +1662,7 @@ async ( console.log('testCancel-start'); const testCancelAfterPayAfterConfirmFullPrice = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - const {createdLinks} = await testConfirm({ customerKey }); + const { createdLinks } = await testConfirm({ customerKey }); const paymentLink = createdLinks.find(link => link.type_id === Payment); console.log({ paymentLink }); @@ -1730,11 +1730,11 @@ async ( tree_id: { _eq: paymentTreeId } } }); - - if(mpUpCancellingPaymentSelectQuery.data.length > 0) { + + if (mpUpCancellingPaymentSelectQuery.data.length > 0) { break; } - + await sleep(1000); } @@ -1745,12 +1745,12 @@ async ( console.log('testCancelAfterPayAfterConfirmFullPrice-end'); - return {createdLinks}; + return { createdLinks }; }; const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); - const {createdLinks} = await testConfirm({ customerKey }); + const { createdLinks } = await testConfirm({ customerKey }); const paymentLink = createdLinks.find(link => link.type_id === Payment); console.log({ paymentLink }); @@ -1819,14 +1819,14 @@ async ( tree_id: { _eq: paymentTreeId } } }); - - if(mpUpCancellingPaymentSelectQuery.data.length > 0) { + + if (mpUpCancellingPaymentSelectQuery.data.length > 0) { break; } - + await sleep(1000); } - + if (mpUpCancellingPaymentSelectQuery.error) { throw new Error(mpUpCancellingPaymentSelectQuery.error.message); } const payedLink = mpUpCancellingPaymentSelectQuery.data.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); @@ -1835,12 +1835,12 @@ async ( console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); - return {createdLinks} + return { createdLinks } }; const testCancelBeforePay = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testCancelBeforePay-start'); - const {createdLinks} = await testInit({ customerKey }); + const { createdLinks } = await testInit({ customerKey }); const paymentLink = createdLinks.find(link => link.type_id === Payment); console.log({ paymentLink }); @@ -1908,11 +1908,11 @@ async ( tree_id: { _eq: paymentTreeId } } }); - - if(mpUpCancellingPaymentSelectQuery.data.length > 0) { + + if (mpUpCancellingPaymentSelectQuery.data.length > 0) { break; } - + await sleep(1000); } @@ -1923,28 +1923,28 @@ async ( console.log('testCancelBeforePay-end'); - return {createdLinks} + return { createdLinks } }; { - const {createdLinks} = await testCancelAfterPayAfterConfirmFullPrice(); + const { createdLinks } = await testCancelAfterPayAfterConfirmFullPrice(); await deep.delete(createdLinks.map(link => link.id)); } { - const {createdLinks} = await testCancelAfterPayAfterConfirmCustomPriceX2(); + const { createdLinks } = await testCancelAfterPayAfterConfirmCustomPriceX2(); await deep.delete(createdLinks.map(link => link.id)); } { - const {createdLinks} = await testCancelBeforePay(); + const { createdLinks } = await testCancelBeforePay(); await deep.delete(createdLinks.map(link => link.id)); } console.log('testCancel-end'); - return {createdLinks} + return { createdLinks } }; - const {createdLinks} = await setup(); + const { createdLinks } = await setup(); await callCancelTests(); await deep.delete(createdLinks.map(link => link.id)); }; From 9452da183771369734a648533a61eddc537f402a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 06:16:42 +0000 Subject: [PATCH 460/683] Do not use setup function to be able to use links in tests --- payments-tinkoff-c2b-cancelling.cjs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index b93aef62..3058acb7 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1390,7 +1390,6 @@ async ( const callIntegrationTests = async () => { - const setup = async () => { const createdLinks = []; const { @@ -1494,9 +1493,6 @@ async ( console.log({ productLink }); createdLinks.push(productLink); - return { createdLinks } - } - const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); @@ -1944,7 +1940,6 @@ async ( return { createdLinks } }; - const { createdLinks } = await setup(); await callCancelTests(); await deep.delete(createdLinks.map(link => link.id)); }; From 19f54246e2c4f672007beac72baaae0bf58f9bb3 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 06:17:36 +0000 Subject: [PATCH 461/683] Do not use setup function to be able to use links in tests --- payments-tinkoff-c2b.cjs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index a17c1421..50c8f2ca 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1691,8 +1691,8 @@ async ( }; const callIntegrationTests = async () => { - const setup = async () => { - const createdLinks = []; + + const createdLinks = []; const { data: [tinkoffProviderLink], @@ -1795,9 +1795,6 @@ async ( console.log({ productLink }); createdLinks.push(productLink); - return { integratedTestsCreatedLinks: createdLinks }; - }; - const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); @@ -1992,7 +1989,6 @@ async ( console.log('testGetCardList-end'); }; */ - const { integratedTestsCreatedLinks } = await setup(); { const { createdLinks } = await testInit(); await deep.delete(createdLinks.map((link) => link.id)); @@ -2005,7 +2001,7 @@ async ( const { createdLinks } = await testConfirm(); await deep.delete(createdLinks.map((link) => link.id)); } - await deep.delete(integratedTestsCreatedLinks); + await deep.delete(createdLinks.map((link) => link.id)); /*await testGetState(); await testGetCardList();*/ From 7acdb3a098f08be97abc26539454819a1d6c570c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 06:21:29 +0000 Subject: [PATCH 462/683] Change expect --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 3058acb7..24d77cd9 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1602,7 +1602,7 @@ async ( const { createdLinks } = await testInit({ customerKey }); const urlLink = createdLinks.find(link => link.type_id === Url); - expect(urlLink).to.not.be.undefined() + expect(urlLink).to.not.be.equal(undefined) const url = urlLink.value.value; console.log({ url }); From 9dfef052138949c05c3708c6d4916cebf8403d78 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 06:25:56 +0000 Subject: [PATCH 463/683] Remove sleep --- payments-tinkoff-c2b-cancelling.cjs | 1 - 1 file changed, 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 24d77cd9..4529d56a 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1624,7 +1624,6 @@ async ( const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testConfirm-start'); const { createdLinks } = await testFinishAuthorize({ customerKey }); - await sleep(7000); const payLink = createdLinks.find(link => link.type_id === Pay); expect(payLink).to.be.not.undefined(); From 7a14bd7de895a9ce3c2121d1f252f8465744d7eb Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 06:27:14 +0000 Subject: [PATCH 464/683] Add contain variable to the start of the pay handler --- payments-tinkoff-c2b-cancelling.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 4529d56a..3a517841 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -907,6 +907,8 @@ async ( const reqBody = req.body; console.log({reqBody}); + const Contain = await deep.id("@deep-foundation/core", "Contain"); + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider From 0b4757d3b2a0745ca9e3acbde480b980bec12c12 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 06:28:09 +0000 Subject: [PATCH 465/683] Add the contain variable to the start of the handlers --- payments-tinkoff-c2b.cjs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 50c8f2ca..a3f7afde 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -957,6 +957,8 @@ const f = async () => { async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} + const Contain = await deep.id("@deep-foundation/core", 'Contain'); + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider @@ -1054,7 +1056,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { in: { data: [ { - type_id: await deep.id("@deep-foundation/core", 'Contain'), + type_id: Contain, from_id: deep.linkId, }, ], @@ -1072,7 +1074,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { in: { data: [ { - type_id: await deep.id("@deep-foundation/core", 'Contain'), + type_id: Contain, from_id: deep.linkId, }, ], @@ -1149,6 +1151,8 @@ async ( const reqBody = req.body; console.log({reqBody}); + const Contain = await deep.id("@deep-foundation/core", 'Contain'); + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider @@ -1225,7 +1229,7 @@ async ( in: { data: [ { - type_id: await deep.id("@deep-foundation/core", 'Contain'), + type_id: Contain, from_id: deep.linkId, }, ], @@ -1244,7 +1248,7 @@ async ( in: { data: [ { - type_id: await deep.id("@deep-foundation/core", 'Contain'), + type_id: Contain, from_id: deep.linkId, }, ], From 458063dd101280c0a8f6162d41882891e086a0fb Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 06:32:04 +0000 Subject: [PATCH 466/683] Add console logs for the created links --- payments-tinkoff-c2b-cancelling.cjs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 3a517841..305b80e3 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1592,6 +1592,8 @@ async ( createdLinks.push(urlLinkSelectQuery.data[0]); + console.log({createdLinks}); + console.log('testInit-end'); return { @@ -1616,6 +1618,9 @@ async ( page, url, }); + + console.log({createdLinks}); + console.log('testFinishAuthorize-end'); return { @@ -1648,6 +1653,8 @@ async ( createdLinks.push(data[0]); + console.log({createdLinks}); + console.log('testConfirm-end'); return { From b9434d5080db0b521ef4d43be0cc26756c52060b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 06:32:21 +0000 Subject: [PATCH 467/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 305b80e3..1ab9e3ce 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1651,7 +1651,7 @@ async ( expect(payedLinkSelectQuery.data.length).to.greaterThan(0); - createdLinks.push(data[0]); + createdLinks.push(payedLinkSelectQuery.data[0]); console.log({createdLinks}); From 3de8a1a30da10dd87d963b38ff3437fb937cde1e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 06:39:13 +0000 Subject: [PATCH 468/683] Select createdLink to get full info about them --- payments-tinkoff-c2b-cancelling.cjs | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 1ab9e3ce..fb5060cd 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1597,7 +1597,7 @@ async ( console.log('testInit-end'); return { - createdLinks + createdLinks: await deep.select(createdLinks) } }; @@ -1624,7 +1624,7 @@ async ( console.log('testFinishAuthorize-end'); return { - createdLinks + createdLinks: await deep.select(createdLinks) } }; @@ -1653,12 +1653,13 @@ async ( createdLinks.push(payedLinkSelectQuery.data[0]); + console.log({createdLinks}); console.log('testConfirm-end'); return { - createdLinks + createdLinks: await deep.select(createdLinks) } }; @@ -1749,7 +1750,9 @@ async ( console.log('testCancelAfterPayAfterConfirmFullPrice-end'); - return { createdLinks }; + return { + createdLinks: await deep.select(createdLinks) + }; }; const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({ customerKey } = { customerKey: uniqid() }) => { @@ -1839,7 +1842,9 @@ async ( console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); - return { createdLinks } + return { + createdLinks: await deep.select(createdLinks) + } }; const testCancelBeforePay = async ({ customerKey } = { customerKey: uniqid() }) => { @@ -1927,7 +1932,9 @@ async ( console.log('testCancelBeforePay-end'); - return { createdLinks } + return { + createdLinks: await deep.select(createdLinks) + } }; { @@ -1945,7 +1952,9 @@ async ( console.log('testCancel-end'); - return { createdLinks } + return { + createdLinks: await deep.select(createdLinks) + } }; await callCancelTests(); From e2fab32e6bd638e85e8ac6e6eb1a4a9b406615ab Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 06:39:46 +0000 Subject: [PATCH 469/683] Select created links to get full info about them --- payments-tinkoff-c2b.cjs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index a3f7afde..f1f6dbbb 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1899,7 +1899,7 @@ async ( console.log('testInit-end'); return { - createdLinks, + createdLinks: await deep.select(createdLinks) }; }; @@ -1920,7 +1920,9 @@ async ( }); console.log('testFinishAuthorize-end'); - return { createdLinks }; + return { + createdLinks: await deep.select(createdLinks) + }; }; const testConfirm = async ( @@ -1951,7 +1953,9 @@ async ( console.log('testConfirm-end'); - return { createdLinks }; + return { + createdLinks: await deep.select(createdLinks) + }; }; /* From 1188a16f29c650de8d9a2acf23c9c3a3a93dbc7b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 06:42:58 +0000 Subject: [PATCH 470/683] Map data from queries --- payments-tinkoff-c2b-cancelling.cjs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index fb5060cd..0c0ef20e 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1597,7 +1597,7 @@ async ( console.log('testInit-end'); return { - createdLinks: await deep.select(createdLinks) + createdLinks: await deep.select(createdLinks.map(link => link.id)) } }; @@ -1624,7 +1624,7 @@ async ( console.log('testFinishAuthorize-end'); return { - createdLinks: await deep.select(createdLinks) + createdLinks: await deep.select(createdLinks.map(link => link.id)) } }; @@ -1659,7 +1659,7 @@ async ( console.log('testConfirm-end'); return { - createdLinks: await deep.select(createdLinks) + createdLinks: await deep.select(createdLinks.map(link => link.id)) } }; @@ -1751,7 +1751,7 @@ async ( console.log('testCancelAfterPayAfterConfirmFullPrice-end'); return { - createdLinks: await deep.select(createdLinks) + createdLinks: await deep.select(createdLinks.map(link => link.id)) }; }; @@ -1843,7 +1843,7 @@ async ( console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); return { - createdLinks: await deep.select(createdLinks) + createdLinks: await deep.select(createdLinks.map(link => link.id)) } }; @@ -1933,7 +1933,7 @@ async ( console.log('testCancelBeforePay-end'); return { - createdLinks: await deep.select(createdLinks) + createdLinks: await deep.select(createdLinks.map(link => link.id)) } }; @@ -1953,7 +1953,7 @@ async ( console.log('testCancel-end'); return { - createdLinks: await deep.select(createdLinks) + createdLinks: await deep.select(createdLinks.map(link => link.id)) } }; From bf27c6066ed3e54b19c6582a89e0e3d97283a53a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 06:43:23 +0000 Subject: [PATCH 471/683] Map data from queries --- payments-tinkoff-c2b.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index f1f6dbbb..1d19d97c 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1899,7 +1899,7 @@ async ( console.log('testInit-end'); return { - createdLinks: await deep.select(createdLinks) + createdLinks: await deep.select(createdLinks.map(link => link.id)) }; }; @@ -1921,7 +1921,7 @@ async ( console.log('testFinishAuthorize-end'); return { - createdLinks: await deep.select(createdLinks) + createdLinks: await deep.select(createdLinks.map(link => link.id)) }; }; @@ -1954,7 +1954,7 @@ async ( console.log('testConfirm-end'); return { - createdLinks: await deep.select(createdLinks) + createdLinks: await deep.select(createdLinks.map(link => link.id)) }; }; From 269b692b6ee5d46407ae34233b4f3e279167471a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 07:09:30 +0000 Subject: [PATCH 472/683] Id -> linkId. Update createdLinks logic --- payments-tinkoff-c2b-cancelling.cjs | 213 +++++++++++++++------------- 1 file changed, 115 insertions(+), 98 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 0c0ef20e..1da12c9b 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -512,10 +512,10 @@ const f = async () => { } }; - const getBankPaymentId = async (orderId) => { + const getBankPaymentLinkId = async (orderLinkId) => { const checkOrderOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: orderId, + OrderLinkId: orderLinkId, }; const checkOrderResult = await checkOrder(checkOrderOptions); @@ -523,16 +523,16 @@ const f = async () => { console.log({ checkOrderResponse: checkOrderResult }); - const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; + const { PaymentLinkId: bankPaymentLinkId } = checkOrderResult.response.Payments[0]; - console.log({ paymentId: bankPaymentId }); - return bankPaymentId; + console.log({ paymentLinkId: bankPaymentLinkId }); + return bankPaymentLinkId; }; const guest = await unloginedDeep.guest(); const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); const admin = await guestDeep.login({ - linkId: await guestDeep.id('deep', 'admin'), + linkLinkId: await guestDeep.id('deep', 'admin'), }); const deep = new DeepClient({ deep: guestDeep, ...admin }); @@ -593,10 +593,10 @@ const f = async () => { 'SelectorFilter' ); const Query = await deep.id('@deep-foundation/core', 'Query'); - const usersId = await deep.id('deep', 'users'); + const usersLinkId = await deep.id('deep', 'users'); const { - data: [{ id: packageId }], + data: [{ id: packageLinkId }], } = await deep.insert({ type_id: Package, string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, @@ -622,7 +622,7 @@ const f = async () => { }, }); - console.log({ packageId }); + console.log({ packageLinkId }); const SumProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "SumProvider"); console.log({ SumProvider: SumProvider }); @@ -651,7 +651,7 @@ const f = async () => { in: { data: { type_id: Contain, - from_id: packageId, + from_id: packageLinkId, string: { data: { value: 'CancellingPay' } }, }, }, @@ -667,8 +667,8 @@ const f = async () => { const Error = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error"); console.log({ Error: Error }); - const paymentTreeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree"); - console.log({ paymentTreeId }); + const paymentTreeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree"); + console.log({ paymentTreeLinkId }); const StorageBusiness = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageBusiness"); console.log({ StorageBusiness }); @@ -692,7 +692,7 @@ const f = async () => { in: { data: { type_id: Contain, - from_id: packageId, + from_id: packageLinkId, string: { data: { value: 'CancellingPayment' } }, }, }, @@ -701,7 +701,7 @@ const f = async () => { await deep.insert({ type_id: TreeIncludeUp, - from_id: paymentTreeId, + from_id: paymentTreeLinkId, to_id: CancellingPayment, in: { data: [ @@ -715,7 +715,7 @@ const f = async () => { await deep.insert({ type_id: TreeIncludeUp, - from_id: paymentTreeId, + from_id: paymentTreeLinkId, to_id: CancellingPay, in: { data: [ @@ -802,7 +802,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const cancelOptions = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentId: cancelledPaymentLink.value.value.bankPaymentId, + PaymentLinkId: cancelledPaymentLink.value.value.bankPaymentLinkId, Amount: sumLink.value.value, }; console.log({ cancelOptions }); @@ -850,14 +850,14 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({ payInsertHandler }); const { - data: [{ id: payInsertHandlerId }], + data: [{ id: payInsertHandlerLinkId }], } = await deep.insert({ type_id: SyncTextFile, in: { data: [ { type_id: Contain, - from_id: packageId, // before created package + from_id: packageLinkId, // before created package string: { data: { value: 'payInsertHandlerFile' } }, }, { @@ -867,7 +867,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { data: [ { type_id: Contain, - from_id: packageId, // before created package + from_id: packageLinkId, // before created package string: { data: { value: 'payInsertHandler' } }, }, { @@ -877,7 +877,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { data: [ { type_id: Contain, - from_id: packageId, // before created package + from_id: packageLinkId, // before created package string: { data: { value: 'payInsertHandle' } }, }, ], @@ -894,7 +894,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }, }, }); - console.log({ payInsertHandlerId }); + console.log({ payInsertHandlerLinkId }); const tinkoffNotificationHandler = ` async ( @@ -917,12 +917,12 @@ async ( const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; const cancellingPaymentLinkelectQuery = await deep.select({ - object: {value: {_contains: {orderId: req.body.OrderId}}} + object: {value: {_contains: {orderLinkId: req.body.OrderLinkId}}} }); console.log({cancellingPaymentLink}); if(cancellingPaymentLinkelectQuery.error) { throw new Error(cancellingPaymentLinkelectQuery.error.message); } const cancellingPaymentLink = cancellingPaymentLinkelectQuery.data[0]; - if(!cancellingPaymentLink) { throw new Error("The cancelling payment link associated with the order id " + req.body.OrderId + " is not found."); } + if(!cancellingPaymentLink) { throw new Error("The cancelling payment link associated with the order id " + req.body.OrderLinkId + " is not found."); } const {data: mpUpcancellingPaymentLink, error: mpUpcancellingPaymentLinkSelectQueryError} = await deep.select({ up: { @@ -940,7 +940,7 @@ async ( if (req.body.Status === 'CANCELLED') { - const bankPaymentId = req.body.PaymentId; + const bankPaymentLinkId = req.body.PaymentLinkId; const {data: mpUpPayment, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ up: { @@ -1041,7 +1041,7 @@ async ( in: { data: { type_id: Contain, - from_id: packageId, + from_id: packageLinkId, string: { data: { value: 'tinkoffNotificationHandler', @@ -1076,7 +1076,7 @@ async ( const testInit = async () => { const initOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), + OrderLinkId: uniqid(), Amount: PRICE, Description: 'Test shopping', CustomerKey: deep.linkId, @@ -1116,7 +1116,7 @@ async ( const initOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, Amount: PRICE, - OrderId: uniqid(), + OrderLinkId: uniqid(), CustomerKey: deep.linkId, PayType: 'T', // Receipt: { @@ -1145,7 +1145,7 @@ async ( const confirmOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, + PaymentLinkId: initResult.response.PaymentLinkId, }; const confirmResult = await confirm(confirmOptions); @@ -1162,7 +1162,7 @@ async ( console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); const initOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), + OrderLinkId: uniqid(), CustomerKey: deep.linkId, PayType: 'T', Amount: PRICE, @@ -1208,11 +1208,11 @@ async ( url, }); - const bankPaymentId = initResult.response.PaymentId; + const bankPaymentLinkId = initResult.response.PaymentLinkId; const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, + PaymentLinkId: bankPaymentLinkId, Amount: PRICE, }; @@ -1231,7 +1231,7 @@ async ( console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-start'); const initOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), + OrderLinkId: uniqid(), CustomerKey: deep.linkId, PayType: 'T', Amount: PRICE, @@ -1276,11 +1276,11 @@ async ( url, }); - const bankPaymentId = initResult.response.PaymentId; + const bankPaymentLinkId = initResult.response.PaymentLinkId; const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, + PaymentLinkId: bankPaymentLinkId, Amount: Math.floor(PRICE / 3), }; @@ -1310,12 +1310,12 @@ async ( const confirmResult = await testConfirm(); console.log({ confirmResult }); - const bankPaymentId = confirmResult.response.PaymentId; - console.log({ bankPaymentId }); + const bankPaymentLinkId = confirmResult.response.PaymentLinkId; + console.log({ bankPaymentLinkId }); const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, + PaymentLinkId: bankPaymentLinkId, Amount: PRICE, }; console.log({ cancelOptions }); @@ -1331,11 +1331,11 @@ async ( console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); const confirmResult = await testConfirm(); - const bankPaymentId = confirmResult.response.PaymentId; + const bankPaymentLinkId = confirmResult.response.PaymentLinkId; const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, + PaymentLinkId: bankPaymentLinkId, Amount: Math.floor(PRICE / 3), }; @@ -1360,11 +1360,11 @@ async ( console.log('testCancelBeforePay-start'); const initResult = await testInit(); - const bankPaymentId = initResult.response.PaymentId;; + const bankPaymentLinkId = initResult.response.PaymentLinkId;; const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, + PaymentLinkId: bankPaymentLinkId, Amount: PRICE, }; @@ -1498,13 +1498,13 @@ async ( const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); - const createdLinks = []; + const createdLinkIds = []; const { - data: [paymentLink], + data: [{id: paymentLinkId}], } = await deep.insert({ type_id: Payment, - object: { data: { value: { orderId: uniqid() } } }, + object: { data: { value: { orderLinkId: uniqid() } } }, from_id: deep.linkId, to_id: storageBusinessLink.id, in: { @@ -1516,15 +1516,15 @@ async ( ], }, }); - console.log({ paymentLink }); - createdLinks.push(paymentLink); + console.log({ paymentLinkId }); + createdLinkIds.push(paymentLinkId); const { - data: [sumLink], + data: [{id: sumLinkId}], } = await deep.insert({ type_id: Sum, from_id: sumProviderLink.id, - to_id: paymentLink.id, + to_id: paymentLinkId, number: { data: { value: PRICE } }, in: { data: [ @@ -1535,14 +1535,14 @@ async ( ], }, }); - console.log({ sumLink }); - createdLinks.push(sumLink); + console.log({ sumLinkId }); + createdLinkIds.push(sumLinkId); const { - data: [objectLink], + data: [{id: objectLinkId}], } = await deep.insert({ type_id: Object, - from_id: paymentLink.id, + from_id: paymentLinkId, to_id: productLink.id, in: { data: [ @@ -1553,15 +1553,15 @@ async ( ], }, }); - console.log({ objectLink }); - createdLinks.push(objectLink); + console.log({ objectLinkId }); + createdLinkIds.push(objectLinkId); const { - data: [payLink], + data: [{id: payLinkId}], } = await deep.insert({ type_id: Pay, from_id: deep.linkId, - to_id: sumLink.id, + to_id: sumLinkId, in: { data: [ { @@ -1571,14 +1571,14 @@ async ( ], }, }); - console.log({ payLink }); - createdLinks.push(payLink); + console.log({ payLinkId }); + createdLinkIds.push(payLinkId); var urlLinkSelectQuery; for (let i = 0; i < 10; i++) { urlLinkSelectQuery = await deep.select({ type_id: Url, - to_id: payLink.id, + to_id: payLinkId, }); if (urlLinkSelectQuery.data.length > 0) { @@ -1590,14 +1590,15 @@ async ( expect(urlLinkSelectQuery.data.length).to.greaterThan(0); - createdLinks.push(urlLinkSelectQuery.data[0]); + createdLinkIds.push(urlLinkSelectQuery.data[0].id); + const createdLinks = (await deep.select(createdLinkIds)).data; console.log({createdLinks}); console.log('testInit-end'); return { - createdLinks: await deep.select(createdLinks.map(link => link.id)) + createdLinks } }; @@ -1632,6 +1633,8 @@ async ( console.log('testConfirm-start'); const { createdLinks } = await testFinishAuthorize({ customerKey }); + const createdLinkIds = []; + const payLink = createdLinks.find(link => link.type_id === Pay); expect(payLink).to.be.not.undefined(); @@ -1651,15 +1654,16 @@ async ( expect(payedLinkSelectQuery.data.length).to.greaterThan(0); - createdLinks.push(payedLinkSelectQuery.data[0]); + createdLinkIds.push(payedLinkSelectQuery.data[0].id); + createdLinks.push(...(await deep.select(createdLinkIds)).data); console.log({createdLinks}); console.log('testConfirm-end'); return { - createdLinks: await deep.select(createdLinks.map(link => link.id)) + createdLinks } }; @@ -1669,6 +1673,8 @@ async ( console.log('testCancelAfterPayAfterConfirmFullPrice-start'); const { createdLinks } = await testConfirm({ customerKey }); + const createdLinkIds = []; + const paymentLink = createdLinks.find(link => link.type_id === Payment); console.log({ paymentLink }); @@ -1687,16 +1693,14 @@ async ( }); console.log({ cancellingPaymentLinkInsertQuery }); if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; - console.log({ cancellingPaymentLink }); - createdLinks.push(cancellingPaymentLink); + const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; + console.log({ cancellingPaymentLinkId }); + createdLinkIds.push(cancellingPaymentLinkId); - const { - data: [sumLinkOfCancellingPayment] - } = await deep.insert({ + const sumLinkOfCancellingPaymentQuery = await deep.insert({ type_id: Sum, from_id: sumProviderLink.id, - to_id: cancellingPaymentLink.id, + to_id: cancellingPaymentLinkId, number: { data: { value: PRICE } }, in: { data: [ @@ -1707,8 +1711,11 @@ async ( ], }, }); - console.log({ sumLinkOfCancellingPayment }); - createdLinks.push(sumLinkOfCancellingPayment); + console.log({ sumLinkOfCancellingPaymentQuery }); + if (sumLinkOfCancellingPaymentQuery.error) { throw new Error(sumLinkOfCancellingPaymentQuery.error.message); } + const sumLinkIdOfCancellingPayment = sumLinkOfCancellingPaymentQuery.data[0].id; + console.log({ sumLinkIdOfCancellingPayment }); + createdLinkIds.push(sumLinkIdOfCancellingPayment); const payLinkInsertQuery = await deep.insert({ type_id: CancellingPay, @@ -1725,14 +1732,14 @@ async ( }); console.log({ payLinkInsertQuery }); if (payLinkInsertQuery.error) { throw new Error(payLinkInsertQuery.error.message); } - createdLinks.push(payLinkInsertQuery.data[0]); + createdLinkIds.push(payLinkInsertQuery.data[0].id); var mpUpCancellingPaymentSelectQuery; for (let i = 0; i < 10; i++) { mpUpCancellingPaymentSelectQuery = await deep.select({ up: { - parent_id: { _eq: cancellingPaymentLink.id }, - tree_id: { _eq: paymentTreeId } + parent_id: { _eq: cancellingPaymentLinkId }, + tree_id: { _eq: paymentTreeLinkId } } }); @@ -1748,10 +1755,12 @@ async ( expect(payedLink).to.not.equal(undefined); createdLinks.push(payedLink); + createdLinks.push(...(await deep.select(createdLinkIds)).data) + console.log('testCancelAfterPayAfterConfirmFullPrice-end'); return { - createdLinks: await deep.select(createdLinks.map(link => link.id)) + createdLinks }; }; @@ -1759,6 +1768,8 @@ async ( console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); const { createdLinks } = await testConfirm({ customerKey }); + const createdLinkIds = []; + const paymentLink = createdLinks.find(link => link.type_id === Payment); console.log({ paymentLink }); @@ -1778,16 +1789,16 @@ async ( }); console.log({ cancellingPaymentLinkInsertQuery }); if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; - console.log({ cancellingPaymentLink }); - createdLinks.push(cancellingPaymentLink); + const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; + console.log({ cancellingPaymentLinkId }); + createdLinks.push(cancellingPaymentLinkId); const { data: [sumLinkOfCancellingPayment] } = await deep.insert({ type_id: Sum, from_id: sumProviderLink.id, - to_id: cancellingPaymentLink.id, + to_id: cancellingPaymentLinkId, number: { data: { value: Math.floor(PRICE / 3) } }, in: { data: [ @@ -1816,14 +1827,14 @@ async ( }); console.log({ cancellingPayLinkInsertQuery }); if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } - createdLinks.push(cancellingPayLinkInsertQuery.data[0]); + createdLinks.push(cancellingPayLinkInsertQuery.data[0].id); var mpUpCancellingPaymentSelectQuery; for (let i = 0; i < 10; i++) { mpUpCancellingPaymentSelectQuery = await deep.select({ up: { parent_id: { _eq: cancellingPaymentLink.id }, - tree_id: { _eq: paymentTreeId } + tree_id: { _eq: paymentTreeLinkId } } }); @@ -1840,10 +1851,12 @@ async ( createdLinks.push(payedLink); } + createdLinks.push(...(await deep.select(createdLinkIds)).data) + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); return { - createdLinks: await deep.select(createdLinks.map(link => link.id)) + createdLinks } }; @@ -1851,6 +1864,8 @@ async ( console.log('testCancelBeforePay-start'); const { createdLinks } = await testInit({ customerKey }); + const createdLinkIds = []; + const paymentLink = createdLinks.find(link => link.type_id === Payment); console.log({ paymentLink }); @@ -1869,16 +1884,14 @@ async ( }); console.log({ cancellingPaymentLinkInsertQuery }); if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLink = cancellingPaymentLinkInsertQuery.data[0]; - console.log({ cancellingPaymentLink }); - createdLinks.push(cancellingPaymentLink); + const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0]; + console.log({ cancellingPaymentLinkId }); + createdLinkIds.push(cancellingPaymentLinkId); - const { - data: [sumLinkOfCancellingPayment] - } = await deep.insert({ + const sumLinkOfCancellingPaymentSelectQuery = await deep.insert({ type_id: Sum, from_id: sumProviderLink.id, - to_id: cancellingPaymentLink.id, + to_id: cancellingPaymentLinkId, number: { data: { value: PRICE } }, in: { data: [ @@ -1889,8 +1902,10 @@ async ( ], }, }); - console.log({ sumLinkOfCancellingPayment }); - createdLinks.push(sumLinkOfCancellingPayment); + if(sumLinkOfCancellingPaymentSelectQuery.error) {throw new Error(sumLinkOfCancellingPaymentSelectQuery.error.message);} + const sumLinkIdOfCancellingPayment = sumLinkOfCancellingPaymentSelectQuery.data[0].id; + console.log({ sumLinkIdOfCancellingPayment }); + createdLinks.push(sumLinkIdOfCancellingPayment); const cancellingPayLinkInsertQuery = await deep.insert({ type_id: CancellingPay, @@ -1905,16 +1920,16 @@ async ( ], }, }); - console.log({ cancellingPayLinkInsertQuery }); if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } - createdLinks.push(cancellingPayLinkInsertQuery.data[0]); + const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; + createdLinkIds.push(cancellingPayLinkId); var mpUpCancellingPaymentSelectQuery; for (let i = 0; i < 10; i++) { mpUpCancellingPaymentSelectQuery = await deep.select({ up: { - parent_id: { _eq: cancellingPaymentLink.id }, - tree_id: { _eq: paymentTreeId } + parent_id: { _eq: cancellingPaymentLinkId }, + tree_id: { _eq: paymentTreeLinkId } } }); @@ -1930,10 +1945,12 @@ async ( expect(payedLink).to.not.equal(undefined); createdLinks.push(payedLink); + createdLinks.push(...(await deep.select(createdLinkIds)).data) + console.log('testCancelBeforePay-end'); return { - createdLinks: await deep.select(createdLinks.map(link => link.id)) + createdLinks } }; @@ -1953,7 +1970,7 @@ async ( console.log('testCancel-end'); return { - createdLinks: await deep.select(createdLinks.map(link => link.id)) + createdLinks } }; From c1b3ecf7d696a3d4b77b10f09a6d63c3773b0277 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:09:18 +0600 Subject: [PATCH 473/683] Select created link ids to return full links in tests --- payments-tinkoff-c2b.cjs | 305 ++++++++++++++++++++------------------- 1 file changed, 159 insertions(+), 146 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index f1f6dbbb..76075957 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1799,164 +1799,177 @@ async ( console.log({ productLink }); createdLinks.push(productLink); - const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testInit-start'); - - const createdLinks = []; - - const { - data: [paymentLink], - } = await deep.insert({ - type_id: Payment, - object: { data: { value: { orderId: uniqid() } } }, - from_id: deep.linkId, - to_id: storageBusinessLink.id, - in: { - data: [ + const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testInit-start'); + + const createdLinkIds = []; + + const { + data: [{id: paymentLinkId}], + } = await deep.insert({ + type_id: Payment, + object: { data: { value: { orderLinkId: uniqid() } } }, + from_id: deep.linkId, + to_id: storageBusinessLink.id, + in: { + data: [ { - type_id: Contain, - from_id: deep.linkId, + type_id: Contain, + from_id: deep.linkId, }, - ], - }, - }); - console.log({ paymentLink }); - createdLinks.push(paymentLink); - - const { - data: [sumLink], - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderLink.id, - to_id: paymentLink.id, - number: { data: { value: 150 } }, - in: { - data: [ + ], + }, + }); + console.log({ paymentLinkId }); + createdLinkIds.push(paymentLinkId); + + const { + data: [{id: sumLinkId}], + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderLink.id, + to_id: paymentLinkId, + number: { data: { value: PRICE } }, + in: { + data: [ { - type_id: Contain, - from_id: deep.linkId, + type_id: Contain, + from_id: deep.linkId, }, - ], - }, - }); - console.log({ sumLink }); - createdLinks.push(sumLink); - - const { - data: [objectLink], - } = await deep.insert({ - type_id: Object, - from_id: paymentLink.id, - to_id: productLink.id, - in: { - data: [ + ], + }, + }); + console.log({ sumLinkId }); + createdLinkIds.push(sumLinkId); + + const { + data: [{id: objectLinkId}], + } = await deep.insert({ + type_id: Object, + from_id: paymentLinkId, + to_id: productLink.id, + in: { + data: [ { - type_id: Contain, - from_id: deep.linkId, + type_id: Contain, + from_id: deep.linkId, }, - ], - }, - }); - console.log({ objectLink }); - createdLinks.push(objectLink); - - const { - data: [payLink], - } = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLink.id, - in: { - data: [ + ], + }, + }); + console.log({ objectLinkId }); + createdLinkIds.push(objectLinkId); + + const { + data: [{id: payLinkId}], + } = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumLinkId, + in: { + data: [ { - type_id: Contain, - from_id: deep.linkId, + type_id: Contain, + from_id: deep.linkId, }, - ], - }, - }); - console.log({ payLink }); - createdLinks.push(payLink); - - var urlLinkSelectQuery; - for (let i = 0; i < 10; i++) { - urlLinkSelectQuery = await deep.select({ - type_id: Url, - to_id: payLink.id, + ], + }, }); - - if(urlLinkSelectQuery.data.length > 0){ - break; + console.log({ payLinkId }); + createdLinkIds.push(payLinkId); + + var urlLinkSelectQuery; + for (let i = 0; i < 10; i++) { + urlLinkSelectQuery = await deep.select({ + type_id: Url, + to_id: payLinkId, + }); + + if (urlLinkSelectQuery.data.length > 0) { + break; + } + + await sleep(1000); } - - await sleep(1000); - } - - expect(urlLinkSelectQuery.data.length).to.greaterThan(0); - - createdLinks.push(urlLinkSelectQuery.data[0]); - - console.log('testInit-end'); - - return { - createdLinks: await deep.select(createdLinks) - }; - }; - - const testFinishAuthorize = async ( - { customerKey } = { customerKey: uniqid() } - ) => { - console.log('testFinishAuthorize-start'); - const { createdLinks } = await testInit({ customerKey }); - const urlLink = createdLinks.find((link) => link.type_id === Url); - const url = urlLink.value.value; - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, - }); - console.log('testFinishAuthorize-end'); - - return { - createdLinks: await deep.select(createdLinks) - }; - }; - - const testConfirm = async ( - { customerKey } = { customerKey: uniqid() } - ) => { - console.log('testConfirm-start'); - const { createdLinks } = await testFinishAuthorize({ customerKey }); - - const payLink = createdLinks.find((link) => link.type_id === Pay); - - var payedLinkSelectQuery; - for (let i = 0; i < 10; i++) { - payedLinkSelectQuery = await deep.select({ - type_id: Payed, - to_id: payLink.id, + + expect(urlLinkSelectQuery.data.length).to.greaterThan(0); + + createdLinkIds.push(urlLinkSelectQuery.data[0].id); + + const createdLinks = (await deep.select(createdLinkIds)).data; + console.log({createdLinks}); + + console.log('testInit-end'); + + return { + createdLinks + } + }; + + const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testFinishAuthorize-start'); + const { createdLinks } = await testInit({ customerKey }); + + const urlLink = createdLinks.find(link => link.type_id === Url); + expect(urlLink).to.not.be.equal(undefined) + + const url = urlLink.value.value; + console.log({ url }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, }); - - if(payedLinkSelectQuery.data.length > 0){ - break; + + console.log({createdLinks}); + + console.log('testFinishAuthorize-end'); + + return { + createdLinks: await deep.select(createdLinks.map(link => link.id)) } - - await sleep(1000); - } - - expect(payedLinkSelectQuery.data.length).to.greaterThan(0); - - createdLinks.push(payedLinkSelectQuery.data[0]); - - console.log('testConfirm-end'); - - return { - createdLinks: await deep.select(createdLinks) - }; - }; + }; + + const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testConfirm-start'); + const { createdLinks } = await testFinishAuthorize({ customerKey }); + + const createdLinkIds = []; + + const payLink = createdLinks.find(link => link.type_id === Pay); + expect(payLink).to.be.not.undefined(); + + var payedLinkSelectQuery; + for (let i = 0; i < 10; i++) { + payedLinkSelectQuery = await deep.select({ + type_id: Payed, + to_id: payLink.id + }); + + if (payedLinkSelectQuery.data.length > 0) { + break; + } + + await sleep(1000); + } + + expect(payedLinkSelectQuery.data.length).to.greaterThan(0); + + createdLinkIds.push(payedLinkSelectQuery.data[0].id); + + createdLinks.push(...(await deep.select(createdLinkIds)).data); + + console.log({createdLinks}); + + console.log('testConfirm-end'); + + return { + createdLinks + } + }; /* const testGetState = async () => { From cb05a6205b90714ebe90f99dfd74ccdc71049891 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:09:18 +0600 Subject: [PATCH 474/683] Select created link ids to return full links in tests --- payments-tinkoff-c2b.cjs | 305 ++++++++++++++++++++------------------- 1 file changed, 159 insertions(+), 146 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 1d19d97c..76075957 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1799,164 +1799,177 @@ async ( console.log({ productLink }); createdLinks.push(productLink); - const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testInit-start'); - - const createdLinks = []; - - const { - data: [paymentLink], - } = await deep.insert({ - type_id: Payment, - object: { data: { value: { orderId: uniqid() } } }, - from_id: deep.linkId, - to_id: storageBusinessLink.id, - in: { - data: [ + const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testInit-start'); + + const createdLinkIds = []; + + const { + data: [{id: paymentLinkId}], + } = await deep.insert({ + type_id: Payment, + object: { data: { value: { orderLinkId: uniqid() } } }, + from_id: deep.linkId, + to_id: storageBusinessLink.id, + in: { + data: [ { - type_id: Contain, - from_id: deep.linkId, + type_id: Contain, + from_id: deep.linkId, }, - ], - }, - }); - console.log({ paymentLink }); - createdLinks.push(paymentLink); - - const { - data: [sumLink], - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderLink.id, - to_id: paymentLink.id, - number: { data: { value: 150 } }, - in: { - data: [ + ], + }, + }); + console.log({ paymentLinkId }); + createdLinkIds.push(paymentLinkId); + + const { + data: [{id: sumLinkId}], + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderLink.id, + to_id: paymentLinkId, + number: { data: { value: PRICE } }, + in: { + data: [ { - type_id: Contain, - from_id: deep.linkId, + type_id: Contain, + from_id: deep.linkId, }, - ], - }, - }); - console.log({ sumLink }); - createdLinks.push(sumLink); - - const { - data: [objectLink], - } = await deep.insert({ - type_id: Object, - from_id: paymentLink.id, - to_id: productLink.id, - in: { - data: [ + ], + }, + }); + console.log({ sumLinkId }); + createdLinkIds.push(sumLinkId); + + const { + data: [{id: objectLinkId}], + } = await deep.insert({ + type_id: Object, + from_id: paymentLinkId, + to_id: productLink.id, + in: { + data: [ { - type_id: Contain, - from_id: deep.linkId, + type_id: Contain, + from_id: deep.linkId, }, - ], - }, - }); - console.log({ objectLink }); - createdLinks.push(objectLink); - - const { - data: [payLink], - } = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLink.id, - in: { - data: [ + ], + }, + }); + console.log({ objectLinkId }); + createdLinkIds.push(objectLinkId); + + const { + data: [{id: payLinkId}], + } = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumLinkId, + in: { + data: [ { - type_id: Contain, - from_id: deep.linkId, + type_id: Contain, + from_id: deep.linkId, }, - ], - }, - }); - console.log({ payLink }); - createdLinks.push(payLink); - - var urlLinkSelectQuery; - for (let i = 0; i < 10; i++) { - urlLinkSelectQuery = await deep.select({ - type_id: Url, - to_id: payLink.id, + ], + }, }); - - if(urlLinkSelectQuery.data.length > 0){ - break; + console.log({ payLinkId }); + createdLinkIds.push(payLinkId); + + var urlLinkSelectQuery; + for (let i = 0; i < 10; i++) { + urlLinkSelectQuery = await deep.select({ + type_id: Url, + to_id: payLinkId, + }); + + if (urlLinkSelectQuery.data.length > 0) { + break; + } + + await sleep(1000); } - - await sleep(1000); - } - - expect(urlLinkSelectQuery.data.length).to.greaterThan(0); - - createdLinks.push(urlLinkSelectQuery.data[0]); - - console.log('testInit-end'); - - return { - createdLinks: await deep.select(createdLinks.map(link => link.id)) - }; - }; - - const testFinishAuthorize = async ( - { customerKey } = { customerKey: uniqid() } - ) => { - console.log('testFinishAuthorize-start'); - const { createdLinks } = await testInit({ customerKey }); - const urlLink = createdLinks.find((link) => link.type_id === Url); - const url = urlLink.value.value; - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, - }); - console.log('testFinishAuthorize-end'); - - return { - createdLinks: await deep.select(createdLinks.map(link => link.id)) - }; - }; - - const testConfirm = async ( - { customerKey } = { customerKey: uniqid() } - ) => { - console.log('testConfirm-start'); - const { createdLinks } = await testFinishAuthorize({ customerKey }); - - const payLink = createdLinks.find((link) => link.type_id === Pay); - - var payedLinkSelectQuery; - for (let i = 0; i < 10; i++) { - payedLinkSelectQuery = await deep.select({ - type_id: Payed, - to_id: payLink.id, + + expect(urlLinkSelectQuery.data.length).to.greaterThan(0); + + createdLinkIds.push(urlLinkSelectQuery.data[0].id); + + const createdLinks = (await deep.select(createdLinkIds)).data; + console.log({createdLinks}); + + console.log('testInit-end'); + + return { + createdLinks + } + }; + + const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testFinishAuthorize-start'); + const { createdLinks } = await testInit({ customerKey }); + + const urlLink = createdLinks.find(link => link.type_id === Url); + expect(urlLink).to.not.be.equal(undefined) + + const url = urlLink.value.value; + console.log({ url }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, }); - - if(payedLinkSelectQuery.data.length > 0){ - break; + + console.log({createdLinks}); + + console.log('testFinishAuthorize-end'); + + return { + createdLinks: await deep.select(createdLinks.map(link => link.id)) } - - await sleep(1000); - } - - expect(payedLinkSelectQuery.data.length).to.greaterThan(0); - - createdLinks.push(payedLinkSelectQuery.data[0]); - - console.log('testConfirm-end'); - - return { - createdLinks: await deep.select(createdLinks.map(link => link.id)) - }; - }; + }; + + const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testConfirm-start'); + const { createdLinks } = await testFinishAuthorize({ customerKey }); + + const createdLinkIds = []; + + const payLink = createdLinks.find(link => link.type_id === Pay); + expect(payLink).to.be.not.undefined(); + + var payedLinkSelectQuery; + for (let i = 0; i < 10; i++) { + payedLinkSelectQuery = await deep.select({ + type_id: Payed, + to_id: payLink.id + }); + + if (payedLinkSelectQuery.data.length > 0) { + break; + } + + await sleep(1000); + } + + expect(payedLinkSelectQuery.data.length).to.greaterThan(0); + + createdLinkIds.push(payedLinkSelectQuery.data[0].id); + + createdLinks.push(...(await deep.select(createdLinkIds)).data); + + console.log({createdLinks}); + + console.log('testConfirm-end'); + + return { + createdLinks + } + }; /* const testGetState = async () => { From a89dadd5e8ef1c472b2de066d19c6176c8274f8f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:19:51 +0600 Subject: [PATCH 475/683] Get ids from inserts and put them to the createdLinkIds and then remove then after integration tests --- payments-tinkoff-c2b-cancelling.cjs | 56 ++++++++++++++--------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 1da12c9b..fd263dbd 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1392,10 +1392,10 @@ async ( const callIntegrationTests = async () => { - const createdLinks = []; + const createdLinkIds = []; const { - data: [tinkoffProviderLink], + data: [{id: tinkoffProviderLinkId}], } = await deep.insert({ type_id: TinkoffProvider, in: { @@ -1407,11 +1407,11 @@ async ( ], }, }); - console.log({ tinkoffProviderLink }); - createdLinks.push(tinkoffProviderLink); + console.log({ tinkoffProviderLinkId }); + createdLinkIds.push(tinkoffProviderLinkId); const { - data: [sumProviderLink], + data: [{id: sumProviderLinkId}], } = await deep.insert({ type_id: SumProvider, in: { @@ -1423,11 +1423,11 @@ async ( ], }, }); - console.log({ sumProviderLink }); - createdLinks.push(sumProviderLink); + console.log({ sumProviderLinkId }); + createdLinkIds.push(sumProviderLinkId); const { - data: [storageBusinessLink], + data: [{id: storageBusinessLinkId}], } = await deep.insert({ type_id: StorageBusiness, in: { @@ -1439,15 +1439,15 @@ async ( ], }, }); - console.log({ storageBusinessLink }); - createdLinks.push(storageBusinessLink); + console.log({ storageBusinessLinkId }); + createdLinkIds.push(storageBusinessLinkId); const { - data: [tokenLink], + data: [{id: tokenLinkId}], } = await deep.insert({ type_id: Token, - from_id: storageBusinessLink.id, - to_id: storageBusinessLink.id, + from_id: storageBusinessLinkId.id, + to_id: storageBusinessLinkId.id, string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, in: { data: [ @@ -1458,8 +1458,8 @@ async ( ], }, }); - console.log({ tokenLink }); - createdLinks.push(tokenLink); + console.log({ tokenLinkId }); + createdLinkIds.push(tokenLinkId); const { data: [{ id: Product }], @@ -1477,10 +1477,10 @@ async ( }, }); console.log({ Product }); - createdLinks.push(Product); + createdLinkIds.push(Product); const { - data: [productLink], + data: [{id: productLinkId}], } = await deep.insert({ type_id: Product, in: { @@ -1492,8 +1492,8 @@ async ( ], }, }); - console.log({ productLink }); - createdLinks.push(productLink); + console.log({ productLinkId }); + createdLinkIds.push(productLinkId); const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); @@ -1506,7 +1506,7 @@ async ( type_id: Payment, object: { data: { value: { orderLinkId: uniqid() } } }, from_id: deep.linkId, - to_id: storageBusinessLink.id, + to_id: storageBusinessLinkId.id, in: { data: [ { @@ -1523,7 +1523,7 @@ async ( data: [{id: sumLinkId}], } = await deep.insert({ type_id: Sum, - from_id: sumProviderLink.id, + from_id: sumProviderLinkId.id, to_id: paymentLinkId, number: { data: { value: PRICE } }, in: { @@ -1543,7 +1543,7 @@ async ( } = await deep.insert({ type_id: Object, from_id: paymentLinkId, - to_id: productLink.id, + to_id: productLinkId.id, in: { data: [ { @@ -1699,7 +1699,7 @@ async ( const sumLinkOfCancellingPaymentQuery = await deep.insert({ type_id: Sum, - from_id: sumProviderLink.id, + from_id: sumProviderLinkId.id, to_id: cancellingPaymentLinkId, number: { data: { value: PRICE } }, in: { @@ -1797,7 +1797,7 @@ async ( data: [sumLinkOfCancellingPayment] } = await deep.insert({ type_id: Sum, - from_id: sumProviderLink.id, + from_id: sumProviderLinkId.id, to_id: cancellingPaymentLinkId, number: { data: { value: Math.floor(PRICE / 3) } }, in: { @@ -1890,7 +1890,7 @@ async ( const sumLinkOfCancellingPaymentSelectQuery = await deep.insert({ type_id: Sum, - from_id: sumProviderLink.id, + from_id: sumProviderLinkId.id, to_id: cancellingPaymentLinkId, number: { data: { value: PRICE } }, in: { @@ -1970,18 +1970,16 @@ async ( console.log('testCancel-end'); return { - createdLinks + createdLinks: createdLinkIds } }; await callCancelTests(); - await deep.delete(createdLinks.map(link => link.id)); + await deep.delete(createdLinkIds); }; // await callRealizationTests(); await callIntegrationTests(); - - await deep.delete(linkIdsToDelete); }; await callTests(); From 2e86c05ef614264b58c0f8ab3ffaa85ba2380031 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:19:59 +0600 Subject: [PATCH 476/683] Get ids from inserts and put them to the createdLinkIds and then remove then after integration tests --- payments-tinkoff-c2b.cjs | 193 ++++++++++++++++++++------------------- 1 file changed, 97 insertions(+), 96 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 76075957..ee0f26ee 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1696,108 +1696,108 @@ async ( const callIntegrationTests = async () => { - const createdLinks = []; - - const { - data: [tinkoffProviderLink], - } = await deep.insert({ - type_id: TinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], + const createdLinkIds = []; + + const { + data: [{id: tinkoffProviderLinkId}], + } = await deep.insert({ + type_id: TinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, }, - }); - console.log({ tinkoffProviderLink }); - createdLinks.push(tinkoffProviderLink); - - const { - data: [{ id: sumProviderLink }], - } = await deep.insert({ - type_id: SumProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], + ], + }, + }); + console.log({ tinkoffProviderLinkId }); + createdLinkIds.push(tinkoffProviderLinkId); + + const { + data: [{id: sumProviderLinkId}], + } = await deep.insert({ + type_id: SumProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, }, - }); - console.log({ sumProviderLink }); - createdLinks.push(sumProviderLink); - - const { - data: [storageBusinessLink], - } = await deep.insert({ - type_id: StorageBusiness, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], + ], + }, + }); + console.log({ sumProviderLinkId }); + createdLinkIds.push(sumProviderLinkId); + + const { + data: [{id: storageBusinessLinkId}], + } = await deep.insert({ + type_id: StorageBusiness, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, }, - }); - console.log({ storageBusinessLink }); - createdLinks.push(storageBusinessLink.id); - - const { - data: [tokenLink], - } = await deep.insert({ - type_id: Token, - from_id: storageBusinessLink.id, - to_id: storageBusinessLink.id, - string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], + ], + }, + }); + console.log({ storageBusinessLinkId }); + createdLinkIds.push(storageBusinessLinkId); + + const { + data: [{id: tokenLinkId}], + } = await deep.insert({ + type_id: Token, + from_id: storageBusinessLinkId.id, + to_id: storageBusinessLinkId.id, + string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, }, - }); - console.log({ tokenLink }); - createdLinks.push(tokenLink); - - const { - data: [{ id: Product }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], + ], + }, + }); + console.log({ tokenLinkId }); + createdLinkIds.push(tokenLinkId); + + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, }, - }); - console.log({ Product }); - createdLinks.push(Product); - - const { - data: [productLink], - } = await deep.insert({ - type_id: Product, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], + ], + }, + }); + console.log({ Product }); + createdLinkIds.push(Product); + + const { + data: [{id: productLinkId}], + } = await deep.insert({ + type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, }, - }); - console.log({ productLink }); - createdLinks.push(productLink); + ], + }, + }); + console.log({ productLinkId }); + createdLinkIds.push(productLinkId); const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); @@ -2030,6 +2030,7 @@ async ( // await callRealizationTests(); await callIntegrationTests(); + await deep.delete(createdLinkIds); }; await callTests(); From 3bc5d05fccad4b698af8680dbbc08eee4550c129 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:24:53 +0600 Subject: [PATCH 477/683] Do not console log handlers --- payments-tinkoff-c2b-cancelling.cjs | 2 -- 1 file changed, 2 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index fd263dbd..801945f2 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -847,7 +847,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { }; `; - console.log({ payInsertHandler }); const { data: [{ id: payInsertHandlerLinkId }], @@ -973,7 +972,6 @@ async ( res.send('ok'); }; `; - console.log({ tinkoffNotificationHandler }); await deep.insert( { From 5380a828aff5d6031711699d0e74939b2794da17 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:25:22 +0600 Subject: [PATCH 478/683] Do not console log handlers --- payments-tinkoff-c2b.cjs | 2 -- 1 file changed, 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index ee0f26ee..c62854c0 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1091,7 +1091,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { return initResult; }; `; - console.log({ payInsertHandler }); const { data: [{ id: payInsertHandlerId }], @@ -1310,7 +1309,6 @@ async ( res.send('ok'); }; `; - console.log({ tinkoffNotificationHandler }); await deep.insert( { From bbaa2d50eecd6eca25cf8360adfee993bae6120f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:29:04 +0600 Subject: [PATCH 479/683] Fix typo --- payments-tinkoff-c2b.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index c62854c0..0382af7f 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1748,8 +1748,8 @@ async ( data: [{id: tokenLinkId}], } = await deep.insert({ type_id: Token, - from_id: storageBusinessLinkId.id, - to_id: storageBusinessLinkId.id, + from_id: storageBusinessLinkId, + to_id: storageBusinessLinkId, string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, in: { data: [ From c87b2a7bdabc98bea2a5abc02ce6ef80d6671fdf Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:29:22 +0600 Subject: [PATCH 480/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 801945f2..d4bdd60e 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1444,8 +1444,8 @@ async ( data: [{id: tokenLinkId}], } = await deep.insert({ type_id: Token, - from_id: storageBusinessLinkId.id, - to_id: storageBusinessLinkId.id, + from_id: storageBusinessLinkId, + to_id: storageBusinessLinkId, string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, in: { data: [ @@ -1504,7 +1504,7 @@ async ( type_id: Payment, object: { data: { value: { orderLinkId: uniqid() } } }, from_id: deep.linkId, - to_id: storageBusinessLinkId.id, + to_id: storageBusinessLinkId, in: { data: [ { @@ -1521,7 +1521,7 @@ async ( data: [{id: sumLinkId}], } = await deep.insert({ type_id: Sum, - from_id: sumProviderLinkId.id, + from_id: sumProviderLinkId, to_id: paymentLinkId, number: { data: { value: PRICE } }, in: { @@ -1541,7 +1541,7 @@ async ( } = await deep.insert({ type_id: Object, from_id: paymentLinkId, - to_id: productLinkId.id, + to_id: productLinkId, in: { data: [ { @@ -1697,7 +1697,7 @@ async ( const sumLinkOfCancellingPaymentQuery = await deep.insert({ type_id: Sum, - from_id: sumProviderLinkId.id, + from_id: sumProviderLinkId, to_id: cancellingPaymentLinkId, number: { data: { value: PRICE } }, in: { @@ -1795,7 +1795,7 @@ async ( data: [sumLinkOfCancellingPayment] } = await deep.insert({ type_id: Sum, - from_id: sumProviderLinkId.id, + from_id: sumProviderLinkId, to_id: cancellingPaymentLinkId, number: { data: { value: Math.floor(PRICE / 3) } }, in: { @@ -1888,7 +1888,7 @@ async ( const sumLinkOfCancellingPaymentSelectQuery = await deep.insert({ type_id: Sum, - from_id: sumProviderLinkId.id, + from_id: sumProviderLinkId, to_id: cancellingPaymentLinkId, number: { data: { value: PRICE } }, in: { From 38bcd186ef954d2fa9bdffa9cd76b231bf1e1c6a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:33:12 +0600 Subject: [PATCH 481/683] Fix typo --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 0382af7f..066602de 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1808,7 +1808,7 @@ async ( type_id: Payment, object: { data: { value: { orderLinkId: uniqid() } } }, from_id: deep.linkId, - to_id: storageBusinessLink.id, + to_id: storageBusinessLinkId, in: { data: [ { From 4b836c2389e232dbe9e9626bc5f6f107329839fa Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 08:35:03 +0000 Subject: [PATCH 482/683] Fix typo --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 066602de..9be7a990 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1825,7 +1825,7 @@ async ( data: [{id: sumLinkId}], } = await deep.insert({ type_id: Sum, - from_id: sumProviderLink.id, + from_id: sumProviderLinkId, to_id: paymentLinkId, number: { data: { value: PRICE } }, in: { From db6c2a7e4bffc670823d3c43b404bd20c4c76a7b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 08:37:03 +0000 Subject: [PATCH 483/683] Fix typo --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 9be7a990..b29d536c 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1845,7 +1845,7 @@ async ( } = await deep.insert({ type_id: Object, from_id: paymentLinkId, - to_id: productLink.id, + to_id: productLinkId, in: { data: [ { From c17dec4d0b70b147b6fae24c82a796bbe20d345c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 08:37:37 +0000 Subject: [PATCH 484/683] Fix typo --- payments-tinkoff-c2b.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 066602de..b29d536c 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1825,7 +1825,7 @@ async ( data: [{id: sumLinkId}], } = await deep.insert({ type_id: Sum, - from_id: sumProviderLink.id, + from_id: sumProviderLinkId, to_id: paymentLinkId, number: { data: { value: PRICE } }, in: { @@ -1845,7 +1845,7 @@ async ( } = await deep.insert({ type_id: Object, from_id: paymentLinkId, - to_id: productLink.id, + to_id: productLinkId, in: { data: [ { From 5fc6f6a1a326450d67835cd89ec025b192eec4fe Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 08:38:07 +0000 Subject: [PATCH 485/683] Fix typo --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index b29d536c..36db98fa 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1927,7 +1927,7 @@ async ( console.log('testFinishAuthorize-end'); return { - createdLinks: await deep.select(createdLinks.map(link => link.id)) + createdLinks } }; From 02a51b81dac025fb5ba061aa4313049d8f1bf3a0 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 08:40:28 +0000 Subject: [PATCH 486/683] Get id from insert query --- payments-tinkoff-c2b.cjs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 36db98fa..9a566b69 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -964,7 +964,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { type_id: TinkoffProvider }); if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; + const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ down: { @@ -1050,7 +1050,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const errorMessage = "Could not initialize the order. " + initResult.error; const {error: errorLinkInsertQueryError} = await deep.insert({ type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), - from_id: tinkoffProviderLink.id, + from_id: tinkoffProviderLinkId, to_id: payLink.id, string: { data: { value: errorMessage } }, in: { @@ -1068,7 +1068,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const {error: urlLinkInsertQueryError} = await deep.insert({ type_id: Url, - from_id: tinkoffProviderLink.id, + from_id: tinkoffProviderLinkId, to_id: payLink.id, string: { data: { value: initResult.response.PaymentURL } }, in: { @@ -1158,7 +1158,7 @@ async ( }); console.log({tinkoffProviderLinkSelectQuery}); if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; + const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; console.log({tinkoffProviderLink}); const paymentLinkSelectQuery = await deep.select({ @@ -1222,7 +1222,7 @@ async ( const errorMessage = "Could not confirm the pay. " + confirmResult.error; const {errorLinkInsertError} = await deep.insert({ type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), - from_id: tinkoffProviderLink.id, + from_id: tinkoffProviderLinkId, to_id: payLink.id, string: { data: { value: errorMessage } }, in: { @@ -1242,7 +1242,7 @@ async ( } else if (req.body.Status === 'CONFIRMED') { const payedLinkInsertQuery = await deep.insert({ type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), - from_id: tinkoffProviderLink.id, + from_id: tinkoffProviderLinkId, to_id: payLink.id, in: { data: [ From f019cd4d34125a4596ad6ad0c94d0e07094ad93c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 08:41:17 +0000 Subject: [PATCH 487/683] Fix typo --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 9a566b69..d91d2296 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1220,7 +1220,7 @@ async ( if (confirmResult.error) { const errorMessage = "Could not confirm the pay. " + confirmResult.error; - const {errorLinkInsertError} = await deep.insert({ + const {error: errorLinkInsertError} = await deep.insert({ type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), from_id: tinkoffProviderLinkId, to_id: payLink.id, From 2af46f7e478a3202e0e374aff1b679a0d4403d0c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 08:42:01 +0000 Subject: [PATCH 488/683] Console log payedLinkId --- payments-tinkoff-c2b.cjs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index d91d2296..de143dbd 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1253,8 +1253,9 @@ async ( ], }, }); - console.log({payedLinkInsertQuery}) if(payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } + const payedLinkId = payedLinkInsertQuery.data[0]; + console.log({payedLinkId}); const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); const storageClientLinkInsertQuery = await deep.insert({ From 316c0db105d08bb2d9d8e8852a533d27d9e8cf49 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 08:42:12 +0000 Subject: [PATCH 489/683] Fix typo --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index de143dbd..7f03a192 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1254,7 +1254,7 @@ async ( }, }); if(payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } - const payedLinkId = payedLinkInsertQuery.data[0]; + const payedLinkId = payedLinkInsertQuery.data[0].id; console.log({payedLinkId}); const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); From 77d9377517b93ddd31845f1edd200bc2e337fbde Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 08:42:49 +0000 Subject: [PATCH 490/683] Get id from insert query --- payments-tinkoff-c2b.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 7f03a192..b0f39558 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1272,7 +1272,7 @@ async ( }); console.log({storageClientLinkInsertQuery}); if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} - const storageClientLink = storageClientLinkInsertQuery.data[0]; + const storageClientLinkId = storageClientLinkInsertQuery.data[0].id; const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); const titleLinkInsertQuery = await deep.insert({ @@ -1294,7 +1294,7 @@ async ( const incomeLinkInsertQuery = await deep.insert({ type_id: Income, from_id: paymentLink.id, - to_id: storageClientLink.id, + to_id: storageClientLinkId, in: { data: [ { From 8f7f36fcee5d3feedea66eaf181b7ad5ab58716a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 08:43:33 +0000 Subject: [PATCH 491/683] Console log titleLinkId --- payments-tinkoff-c2b.cjs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index b0f39558..2cbe4bf0 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1287,8 +1287,9 @@ async ( ], }, }); - console.log({titleLinkInsertQuery}); if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} + const titleLinkId = titleLinkInsertQuery.data[0].id; + console.log({titleLinkId}); const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); const incomeLinkInsertQuery = await deep.insert({ From f8032081f38774ad500c9eab3cfb3f173da06011 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 08:44:28 +0000 Subject: [PATCH 492/683] Console.log incomeLinkInsertQuery --- payments-tinkoff-c2b.cjs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 2cbe4bf0..ff37b4ab 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1305,8 +1305,9 @@ async ( ], }, }); - console.log({incomeLinkInsertQuery}); if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} + const incomeLinkId = incomeLinkInsertQuery.data[0].id; + console.log({incomeLinkId}); } res.send('ok'); }; From 7b049607839c6a1bf5e48df7fcefda6c0f157002 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 08:46:15 +0000 Subject: [PATCH 493/683] Get and use storageBusinessLinkId --- payments-tinkoff-c2b.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index ff37b4ab..7d6760e4 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -998,7 +998,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { id: paymentLink.to_id }); if(storageBusinessLinkSelectQuery.error) { throw new Error(storageBusinessLinkSelectQuery.error.message); } - const storageBusinessLink = storageBusinessLinkSelectQuery.data[0]; + const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; console.log({storageBusinessLink}); const init = ${init.toString()}; @@ -1006,8 +1006,8 @@ async ({ deep, require, data: { newLink: payLink } }) => { const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); const tokenLinkSelectQuery = await deep.select({ type_id: Token, - from_id: storageBusinessLink.id, - to_id: storageBusinessLink.id + from_id: storageBusinessLinkId, + to_id: storageBusinessLinkId }); if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} const tokenLink = tokenLinkSelectQuery.data[0]; From 04e0f9f9978893e9730c08cf34e79ebc10f55beb Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 08:47:09 +0000 Subject: [PATCH 494/683] Get and use storageBusinessLinkId --- payments-tinkoff-c2b.cjs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 7d6760e4..c307fb9a 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -999,7 +999,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); if(storageBusinessLinkSelectQuery.error) { throw new Error(storageBusinessLinkSelectQuery.error.message); } const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; - console.log({storageBusinessLink}); + console.log({storageBusinessLinkId}); const init = ${init.toString()}; @@ -1193,14 +1193,14 @@ async ( }); console.log({storageBusinessLinkSelectQuery}); if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} - const storageBusinessLink = storageBusinessLinkSelectQuery.data[0]; - console.log({storageBusinessLink}); + const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; + console.log({storageBusinessLinkId}); const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); const tokenLinkSelectQuery = await deep.select({ type_id: Token, - from_id: storageBusinessLink.id, - to_id: storageBusinessLink.id + from_id: storageBusinessLinkId, + to_id: storageBusinessLinkId }); console.log({tokenLinkSelectQuery}); if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} From 791eaf25953364a83e17c0ff30fb5e54ee397b27 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 09:00:00 +0000 Subject: [PATCH 495/683] Fix typo --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index c307fb9a..055634a2 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1809,7 +1809,7 @@ async ( data: [{id: paymentLinkId}], } = await deep.insert({ type_id: Payment, - object: { data: { value: { orderLinkId: uniqid() } } }, + object: { data: { value: { orderId: uniqid() } } }, from_id: deep.linkId, to_id: storageBusinessLinkId, in: { From 3003d6cb0d2b75733a555a4b3860c4cc40bd0d36 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 09:04:11 +0000 Subject: [PATCH 496/683] Fix typo --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 055634a2..3e3085dc 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1159,7 +1159,7 @@ async ( console.log({tinkoffProviderLinkSelectQuery}); if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; - console.log({tinkoffProviderLink}); + console.log({tinkoffProviderLinkId}); const paymentLinkSelectQuery = await deep.select({ object: {value: {_contains: {orderId: req.body.OrderId}}} From ca09bdafd99ec52e4504eca86ed1159f961e01bf Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 09:06:46 +0000 Subject: [PATCH 497/683] Change expect --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 3e3085dc..abf5ab6f 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1941,7 +1941,7 @@ async ( const createdLinkIds = []; const payLink = createdLinks.find(link => link.type_id === Pay); - expect(payLink).to.be.not.undefined(); + expect(payLink).to.be.equal(undefined); var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { From 82bb1e5f120fac744de45615b3fcb639d75a1396 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 09:09:27 +0000 Subject: [PATCH 498/683] Fix typo --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index abf5ab6f..a1c6236d 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1941,7 +1941,7 @@ async ( const createdLinkIds = []; const payLink = createdLinks.find(link => link.type_id === Pay); - expect(payLink).to.be.equal(undefined); + expect(payLink).to.not.be.equal(undefined); var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { From b262efb50e3da37b11cd5ef1ed1e5c6e5cafbe83 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 09:11:17 +0000 Subject: [PATCH 499/683] Fix typo --- payments-tinkoff-c2b.cjs | 1 - 1 file changed, 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index a1c6236d..10d13065 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -2023,7 +2023,6 @@ async ( const { createdLinks } = await testConfirm(); await deep.delete(createdLinks.map((link) => link.id)); } - await deep.delete(createdLinks.map((link) => link.id)); /*await testGetState(); await testGetCardList();*/ From 3ec7e1c405bc18c61587370243f193e5bbca750d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 09:11:28 +0000 Subject: [PATCH 500/683] Format --- payments-tinkoff-c2b.cjs | 538 +++++++++++++++++++-------------------- 1 file changed, 269 insertions(+), 269 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 10d13065..3a7f73d3 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1696,336 +1696,336 @@ async ( }; const callIntegrationTests = async () => { - + const createdLinkIds = []; const { - data: [{id: tinkoffProviderLinkId}], + data: [{ id: tinkoffProviderLinkId }], } = await deep.insert({ - type_id: TinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, + type_id: TinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({ tinkoffProviderLinkId }); createdLinkIds.push(tinkoffProviderLinkId); - + const { - data: [{id: sumProviderLinkId}], + data: [{ id: sumProviderLinkId }], } = await deep.insert({ - type_id: SumProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, + type_id: SumProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({ sumProviderLinkId }); createdLinkIds.push(sumProviderLinkId); - + const { - data: [{id: storageBusinessLinkId}], + data: [{ id: storageBusinessLinkId }], } = await deep.insert({ - type_id: StorageBusiness, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, + type_id: StorageBusiness, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({ storageBusinessLinkId }); createdLinkIds.push(storageBusinessLinkId); - + const { - data: [{id: tokenLinkId}], + data: [{ id: tokenLinkId }], } = await deep.insert({ - type_id: Token, - from_id: storageBusinessLinkId, - to_id: storageBusinessLinkId, - string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, + type_id: Token, + from_id: storageBusinessLinkId, + to_id: storageBusinessLinkId, + string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({ tokenLinkId }); createdLinkIds.push(tokenLinkId); - + const { - data: [{ id: Product }], + data: [{ id: Product }], } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({ Product }); createdLinkIds.push(Product); - + const { - data: [{id: productLinkId}], + data: [{ id: productLinkId }], } = await deep.insert({ - type_id: Product, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, + type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); console.log({ productLinkId }); createdLinkIds.push(productLinkId); - const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testInit-start'); - - const createdLinkIds = []; - - const { - data: [{id: paymentLinkId}], - } = await deep.insert({ - type_id: Payment, - object: { data: { value: { orderId: uniqid() } } }, - from_id: deep.linkId, - to_id: storageBusinessLinkId, - in: { - data: [ + const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testInit-start'); + + const createdLinkIds = []; + + const { + data: [{ id: paymentLinkId }], + } = await deep.insert({ + type_id: Payment, + object: { data: { value: { orderId: uniqid() } } }, + from_id: deep.linkId, + to_id: storageBusinessLinkId, + in: { + data: [ { - type_id: Contain, - from_id: deep.linkId, + type_id: Contain, + from_id: deep.linkId, }, - ], - }, - }); - console.log({ paymentLinkId }); - createdLinkIds.push(paymentLinkId); - - const { - data: [{id: sumLinkId}], - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderLinkId, - to_id: paymentLinkId, - number: { data: { value: PRICE } }, - in: { - data: [ + ], + }, + }); + console.log({ paymentLinkId }); + createdLinkIds.push(paymentLinkId); + + const { + data: [{ id: sumLinkId }], + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderLinkId, + to_id: paymentLinkId, + number: { data: { value: PRICE } }, + in: { + data: [ { - type_id: Contain, - from_id: deep.linkId, + type_id: Contain, + from_id: deep.linkId, }, - ], - }, - }); - console.log({ sumLinkId }); - createdLinkIds.push(sumLinkId); - - const { - data: [{id: objectLinkId}], - } = await deep.insert({ - type_id: Object, - from_id: paymentLinkId, - to_id: productLinkId, - in: { - data: [ + ], + }, + }); + console.log({ sumLinkId }); + createdLinkIds.push(sumLinkId); + + const { + data: [{ id: objectLinkId }], + } = await deep.insert({ + type_id: Object, + from_id: paymentLinkId, + to_id: productLinkId, + in: { + data: [ { - type_id: Contain, - from_id: deep.linkId, + type_id: Contain, + from_id: deep.linkId, }, - ], - }, - }); - console.log({ objectLinkId }); - createdLinkIds.push(objectLinkId); - - const { - data: [{id: payLinkId}], - } = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLinkId, - in: { - data: [ + ], + }, + }); + console.log({ objectLinkId }); + createdLinkIds.push(objectLinkId); + + const { + data: [{ id: payLinkId }], + } = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumLinkId, + in: { + data: [ { - type_id: Contain, - from_id: deep.linkId, + type_id: Contain, + from_id: deep.linkId, }, - ], - }, + ], + }, + }); + console.log({ payLinkId }); + createdLinkIds.push(payLinkId); + + var urlLinkSelectQuery; + for (let i = 0; i < 10; i++) { + urlLinkSelectQuery = await deep.select({ + type_id: Url, + to_id: payLinkId, }); - console.log({ payLinkId }); - createdLinkIds.push(payLinkId); - - var urlLinkSelectQuery; - for (let i = 0; i < 10; i++) { - urlLinkSelectQuery = await deep.select({ - type_id: Url, - to_id: payLinkId, - }); - - if (urlLinkSelectQuery.data.length > 0) { - break; - } - - await sleep(1000); - } - - expect(urlLinkSelectQuery.data.length).to.greaterThan(0); - - createdLinkIds.push(urlLinkSelectQuery.data[0].id); - - const createdLinks = (await deep.select(createdLinkIds)).data; - console.log({createdLinks}); - - console.log('testInit-end'); - - return { - createdLinks + + if (urlLinkSelectQuery.data.length > 0) { + break; } - }; - - const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testFinishAuthorize-start'); - const { createdLinks } = await testInit({ customerKey }); - - const urlLink = createdLinks.find(link => link.type_id === Url); - expect(urlLink).to.not.be.equal(undefined) - - const url = urlLink.value.value; - console.log({ url }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, + + await sleep(1000); + } + + expect(urlLinkSelectQuery.data.length).to.greaterThan(0); + + createdLinkIds.push(urlLinkSelectQuery.data[0].id); + + const createdLinks = (await deep.select(createdLinkIds)).data; + console.log({ createdLinks }); + + console.log('testInit-end'); + + return { + createdLinks + } + }; + + const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testFinishAuthorize-start'); + const { createdLinks } = await testInit({ customerKey }); + + const urlLink = createdLinks.find(link => link.type_id === Url); + expect(urlLink).to.not.be.equal(undefined) + + const url = urlLink.value.value; + console.log({ url }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); + + console.log({ createdLinks }); + + console.log('testFinishAuthorize-end'); + + return { + createdLinks + } + }; + + const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testConfirm-start'); + const { createdLinks } = await testFinishAuthorize({ customerKey }); + + const createdLinkIds = []; + + const payLink = createdLinks.find(link => link.type_id === Pay); + expect(payLink).to.not.be.equal(undefined); + + var payedLinkSelectQuery; + for (let i = 0; i < 10; i++) { + payedLinkSelectQuery = await deep.select({ + type_id: Payed, + to_id: payLink.id }); - - console.log({createdLinks}); - - console.log('testFinishAuthorize-end'); - - return { - createdLinks - } - }; - - const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testConfirm-start'); - const { createdLinks } = await testFinishAuthorize({ customerKey }); - - const createdLinkIds = []; - - const payLink = createdLinks.find(link => link.type_id === Pay); - expect(payLink).to.not.be.equal(undefined); - - var payedLinkSelectQuery; - for (let i = 0; i < 10; i++) { - payedLinkSelectQuery = await deep.select({ - type_id: Payed, - to_id: payLink.id - }); - - if (payedLinkSelectQuery.data.length > 0) { - break; - } - - await sleep(1000); - } - - expect(payedLinkSelectQuery.data.length).to.greaterThan(0); - - createdLinkIds.push(payedLinkSelectQuery.data[0].id); - - createdLinks.push(...(await deep.select(createdLinkIds)).data); - - console.log({createdLinks}); - - console.log('testConfirm-end'); - - return { - createdLinks + + if (payedLinkSelectQuery.data.length > 0) { + break; } - }; + + await sleep(1000); + } + + expect(payedLinkSelectQuery.data.length).to.greaterThan(0); + + createdLinkIds.push(payedLinkSelectQuery.data[0].id); + + createdLinks.push(...(await deep.select(createdLinkIds)).data); + + console.log({ createdLinks }); + + console.log('testConfirm-end'); + + return { + createdLinks + } + }; /* - const testGetState = async () => { - console.log('testGetState-start'); - await testFinishAuthorize(); + const testGetState = async () => { + console.log('testGetState-start'); + await testFinishAuthorize(); - const { - data: [payLink], - } = await deep.select({ type_id: Pay }); + const { + data: [payLink], + } = await deep.select({ type_id: Pay }); - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - }; + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + }; - const getStateResult = await getState(getStateOptions); + const getStateResult = await getState(getStateOptions); - expect(getStateResult.error).to.equal(undefined); - console.log('testGetState-end'); - }; + expect(getStateResult.error).to.equal(undefined); + console.log('testGetState-end'); + }; - const testGetCardList = async () => { - console.log('testGetCardList-end'); - await testFinishAuthorize(); + const testGetCardList = async () => { + console.log('testGetCardList-end'); + await testFinishAuthorize(); - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; - const getCardListResult = await getCardList(getCardListOptions); + const getCardListResult = await getCardList(getCardListOptions); - expect(getCardListResult.error).to.equal(undefined); - console.log('testGetCardList-end'); - }; - */ + expect(getCardListResult.error).to.equal(undefined); + console.log('testGetCardList-end'); + }; + */ { - const { createdLinks } = await testInit(); - await deep.delete(createdLinks.map((link) => link.id)); - } + const { createdLinks } = await testInit(); + await deep.delete(createdLinks.map((link) => link.id)); + } { - const { createdLinks } = await testFinishAuthorize(); - await deep.delete(createdLinks.map((link) => link.id)); - } + const { createdLinks } = await testFinishAuthorize(); + await deep.delete(createdLinks.map((link) => link.id)); + } { - const { createdLinks } = await testConfirm(); - await deep.delete(createdLinks.map((link) => link.id)); - } + const { createdLinks } = await testConfirm(); + await deep.delete(createdLinks.map((link) => link.id)); + } /*await testGetState(); - await testGetCardList();*/ + await testGetCardList();*/ }; // await callRealizationTests(); From 2794004a605c788d2af90c6f4bb6d5c53f1e23f9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 09:17:01 +0000 Subject: [PATCH 501/683] Fix typo --- payments-tinkoff-c2b.cjs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 3a7f73d3..a1ecfc97 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -2024,13 +2024,14 @@ async ( await deep.delete(createdLinks.map((link) => link.id)); } + await deep.delete(createdLinkIds); + /*await testGetState(); await testGetCardList();*/ }; // await callRealizationTests(); await callIntegrationTests(); - await deep.delete(createdLinkIds); }; await callTests(); From 5b07f7d21e335e7611d659ab970c45b887409c83 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 09:52:18 +0000 Subject: [PATCH 502/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index d4bdd60e..7e6f9208 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -532,7 +532,7 @@ const f = async () => { const guest = await unloginedDeep.guest(); const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); const admin = await guestDeep.login({ - linkLinkId: await guestDeep.id('deep', 'admin'), + linkId: await guestDeep.id('deep', 'admin'), }); const deep = new DeepClient({ deep: guestDeep, ...admin }); From 34a9c93e01be48df3892f25cec8315756e48f86c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 10:55:42 +0000 Subject: [PATCH 503/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 7e6f9208..808dc96c 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -918,9 +918,9 @@ async ( const cancellingPaymentLinkelectQuery = await deep.select({ object: {value: {_contains: {orderLinkId: req.body.OrderLinkId}}} }); - console.log({cancellingPaymentLink}); if(cancellingPaymentLinkelectQuery.error) { throw new Error(cancellingPaymentLinkelectQuery.error.message); } const cancellingPaymentLink = cancellingPaymentLinkelectQuery.data[0]; + console.log({cancellingPaymentLink}); if(!cancellingPaymentLink) { throw new Error("The cancelling payment link associated with the order id " + req.body.OrderLinkId + " is not found."); } const {data: mpUpcancellingPaymentLink, error: mpUpcancellingPaymentLinkSelectQueryError} = await deep.select({ @@ -1623,7 +1623,7 @@ async ( console.log('testFinishAuthorize-end'); return { - createdLinks: await deep.select(createdLinks.map(link => link.id)) + createdLinks } }; From 005e745acde219ddd7087e8ae33149f35f995291 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 10:59:41 +0000 Subject: [PATCH 504/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 808dc96c..30c4dfa8 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1502,7 +1502,7 @@ async ( data: [{id: paymentLinkId}], } = await deep.insert({ type_id: Payment, - object: { data: { value: { orderLinkId: uniqid() } } }, + object: { data: { value: { orderId: uniqid() } } }, from_id: deep.linkId, to_id: storageBusinessLinkId, in: { From 668250f898271442ff5f7f9a5adc0d8dd4826f7a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 11:02:54 +0000 Subject: [PATCH 505/683] Change expect --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 30c4dfa8..30f8e08c 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1634,7 +1634,7 @@ async ( const createdLinkIds = []; const payLink = createdLinks.find(link => link.type_id === Pay); - expect(payLink).to.be.not.undefined(); + expect(payLink).to.be.not.equal(undefined); var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { From c00380721f47e6cd16ab50fb78921e52ec778887 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 11:03:12 +0000 Subject: [PATCH 506/683] Change expect --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 30f8e08c..b36b8924 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1634,7 +1634,7 @@ async ( const createdLinkIds = []; const payLink = createdLinks.find(link => link.type_id === Pay); - expect(payLink).to.be.not.equal(undefined); + expect(payLink).to.not.equal(undefined); var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { From f3e4dd464e27839a03c625591b76f43f8e107f73 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 11:12:45 +0000 Subject: [PATCH 507/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index b36b8924..ce8e54ee 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1718,7 +1718,7 @@ async ( const payLinkInsertQuery = await deep.insert({ type_id: CancellingPay, from_id: deep.linkId, - to_id: sumLinkOfCancellingPayment.id, + to_id: sumLinkIdOfCancellingPayment.id, in: { data: [ { @@ -1792,7 +1792,7 @@ async ( createdLinks.push(cancellingPaymentLinkId); const { - data: [sumLinkOfCancellingPayment] + data: [{id:sumLinkIdOfCancellingPayment}] } = await deep.insert({ type_id: Sum, from_id: sumProviderLinkId, @@ -1807,13 +1807,13 @@ async ( ], }, }); - console.log({ sumLinkOfCancellingPayment }); - createdLinks.push(sumLinkOfCancellingPayment); + console.log({ sumLinkIdOfCancellingPayment }); + createdLinks.push(sumLinkIdOfCancellingPayment); const cancellingPayLinkInsertQuery = await deep.insert({ type_id: CancellingPay, from_id: deep.linkId, - to_id: sumLinkOfCancellingPayment.id, + to_id: sumLinkIdOfCancellingPayment, in: { data: [ { @@ -1908,7 +1908,7 @@ async ( const cancellingPayLinkInsertQuery = await deep.insert({ type_id: CancellingPay, from_id: deep.linkId, - to_id: sumLinkOfCancellingPayment.id, + to_id: sumLinkIdOfCancellingPayment, in: { data: [ { From 79323eca7848bde3f539a152ff7be965eb2813ae Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 11:16:23 +0000 Subject: [PATCH 508/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index ce8e54ee..d0a7e27d 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1718,7 +1718,7 @@ async ( const payLinkInsertQuery = await deep.insert({ type_id: CancellingPay, from_id: deep.linkId, - to_id: sumLinkIdOfCancellingPayment.id, + to_id: sumLinkIdOfCancellingPayment, in: { data: [ { From 92692a279fd7972b5bd1ee19f65853ed68b87504 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 11:21:24 +0000 Subject: [PATCH 509/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index d0a7e27d..905b0d22 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -923,17 +923,17 @@ async ( console.log({cancellingPaymentLink}); if(!cancellingPaymentLink) { throw new Error("The cancelling payment link associated with the order id " + req.body.OrderLinkId + " is not found."); } - const {data: mpUpcancellingPaymentLink, error: mpUpcancellingPaymentLinkSelectQueryError} = await deep.select({ + const {data: mpUpCancellingPaymentLink, error: mpUpcancellingPaymentLinkSelectQueryError} = await deep.select({ up: { parent_id: { _eq: cancellingPaymentLink.id }, tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } } }); - console.log({mpUpcancellingPaymentLink}); + console.log({mpUpCancellingPaymentLink}); if(mpUpcancellingPaymentLinkSelectQueryError) { throw new Error(mpUpcancellingPaymentLinkSelectQueryError.message); } const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); - const payLink = mpUpcancellingPaymentLink.find(link => link.type_id === Pay); + const payLink = mpUpCancellingPaymentLink.find(link => link.type_id === Pay); console.log({payLink}); if(!payLink) { throw new Error("The pay link associated with cancelling payment link " + cancellingPaymentLink + " is not found.") } From 62c03fc4e276a5320f825d09cea303a0717e71dd Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 11:22:14 +0000 Subject: [PATCH 510/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 905b0d22..d33f7033 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -915,11 +915,11 @@ async ( if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; - const cancellingPaymentLinkelectQuery = await deep.select({ + const cancellingPaymentLinkSelectQuery = await deep.select({ object: {value: {_contains: {orderLinkId: req.body.OrderLinkId}}} }); - if(cancellingPaymentLinkelectQuery.error) { throw new Error(cancellingPaymentLinkelectQuery.error.message); } - const cancellingPaymentLink = cancellingPaymentLinkelectQuery.data[0]; + if(cancellingPaymentLinkSelectQuery.error) { throw new Error(cancellingPaymentLinkSelectQuery.error.message); } + const cancellingPaymentLink = cancellingPaymentLinkSelectQuery.data[0]; console.log({cancellingPaymentLink}); if(!cancellingPaymentLink) { throw new Error("The cancelling payment link associated with the order id " + req.body.OrderLinkId + " is not found."); } From e6139a4b007ae02a1a035bd5b53d8ce82834c45a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 11:22:48 +0000 Subject: [PATCH 511/683] Remove unused code --- payments-tinkoff-c2b-cancelling.cjs | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index d33f7033..58486c6a 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -512,23 +512,6 @@ const f = async () => { } }; - const getBankPaymentLinkId = async (orderLinkId) => { - const checkOrderOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderLinkId: orderLinkId, - }; - - const checkOrderResult = await checkOrder(checkOrderOptions); - expect(checkOrderResult.error).to.equal(undefined); - - console.log({ checkOrderResponse: checkOrderResult }); - - const { PaymentLinkId: bankPaymentLinkId } = checkOrderResult.response.Payments[0]; - - console.log({ paymentLinkId: bankPaymentLinkId }); - return bankPaymentLinkId; - }; - const guest = await unloginedDeep.guest(); const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); const admin = await guestDeep.login({ From 69bc5f93b8dd55e05fece2cafb45ff33d53ef44a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 11:23:31 +0000 Subject: [PATCH 512/683] OrderLinkId -> OrderId --- payments-tinkoff-c2b-cancelling.cjs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 58486c6a..165443cf 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -899,12 +899,12 @@ async ( const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; const cancellingPaymentLinkSelectQuery = await deep.select({ - object: {value: {_contains: {orderLinkId: req.body.OrderLinkId}}} + object: {value: {_contains: {orderId: req.body.OrderId}}} }); if(cancellingPaymentLinkSelectQuery.error) { throw new Error(cancellingPaymentLinkSelectQuery.error.message); } const cancellingPaymentLink = cancellingPaymentLinkSelectQuery.data[0]; console.log({cancellingPaymentLink}); - if(!cancellingPaymentLink) { throw new Error("The cancelling payment link associated with the order id " + req.body.OrderLinkId + " is not found."); } + if(!cancellingPaymentLink) { throw new Error("The cancelling payment link associated with the order id " + req.body.OrderId + " is not found."); } const {data: mpUpCancellingPaymentLink, error: mpUpcancellingPaymentLinkSelectQueryError} = await deep.select({ up: { @@ -1057,7 +1057,7 @@ async ( const testInit = async () => { const initOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderLinkId: uniqid(), + OrderId: uniqid(), Amount: PRICE, Description: 'Test shopping', CustomerKey: deep.linkId, @@ -1097,7 +1097,7 @@ async ( const initOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, Amount: PRICE, - OrderLinkId: uniqid(), + OrderId: uniqid(), CustomerKey: deep.linkId, PayType: 'T', // Receipt: { @@ -1143,7 +1143,7 @@ async ( console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); const initOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderLinkId: uniqid(), + OrderId: uniqid(), CustomerKey: deep.linkId, PayType: 'T', Amount: PRICE, @@ -1212,7 +1212,7 @@ async ( console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-start'); const initOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderLinkId: uniqid(), + OrderId: uniqid(), CustomerKey: deep.linkId, PayType: 'T', Amount: PRICE, From ffc12eadff58770f3c55396f86773f77ec8bef9d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 11:26:33 +0000 Subject: [PATCH 513/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 165443cf..35643885 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1814,7 +1814,7 @@ async ( for (let i = 0; i < 10; i++) { mpUpCancellingPaymentSelectQuery = await deep.select({ up: { - parent_id: { _eq: cancellingPaymentLink.id }, + parent_id: { _eq: cancellingPaymentLinkId }, tree_id: { _eq: paymentTreeLinkId } } }); From ceac6b1af59d63e29c7e4f18c93e4a7d9795a85f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:13:43 +0000 Subject: [PATCH 514/683] Return in status is not cancelled --- payments-tinkoff-c2b-cancelling.cjs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 35643885..16940443 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -889,6 +889,10 @@ async ( const reqBody = req.body; console.log({reqBody}); + if (req.body.Status !== 'CANCELLED') { + return; + } + const Contain = await deep.id("@deep-foundation/core", "Contain"); const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); @@ -921,7 +925,6 @@ async ( if(!payLink) { throw new Error("The pay link associated with cancelling payment link " + cancellingPaymentLink + " is not found.") } - if (req.body.Status === 'CANCELLED') { const bankPaymentLinkId = req.body.PaymentLinkId; const {data: mpUpPayment, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ @@ -950,7 +953,6 @@ async ( }, }); if(payedInsertLinkInsertQuery.error) {throw new Error(payedInsertLinkInsertQuery.error.message);} - } res.send('ok'); }; From 8a5c8edc29859205c599ee3009f4dc4eb086324e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:35:00 +0000 Subject: [PATCH 515/683] Log creaetd links --- payments-tinkoff-c2b-cancelling.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 16940443..bea5bd6c 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1836,6 +1836,8 @@ async ( createdLinks.push(...(await deep.select(createdLinkIds)).data) + console.log({createdLinks}); + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); return { From 2c5ca8b401e91f329493b2b590f3136b93e40993 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:35:06 +0000 Subject: [PATCH 516/683] Remove unused code --- payments-tinkoff-c2b-cancelling.cjs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index bea5bd6c..fa143761 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1953,10 +1953,6 @@ async ( } console.log('testCancel-end'); - - return { - createdLinks: createdLinkIds - } }; await callCancelTests(); From 0c9a48f136a91901d46f0e72b638cc199be41e30 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:43:39 +0000 Subject: [PATCH 517/683] Add log --- payments-tinkoff-c2b-cancelling.cjs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index fa143761..f10690a5 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1732,9 +1732,10 @@ async ( await sleep(1000); } - if (mpUpCancellingPaymentSelectQuery.error) { throw new Error(mpUpCancellingPaymentSelectQuery.error.message); } - const payedLink = mpUpCancellingPaymentSelectQuery.data.find(link => link.type_id === Payed); + const mpUpCancellingPayment = mpUpCancellingPaymentSelectQuery.data; + console.log({mpUpCancellingPayment}); + const payedLink = mpUpCancellingPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); createdLinks.push(payedLink); From b1ae629c90d99d6b5f346a6bb9862a68e6356031 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:45:34 +0000 Subject: [PATCH 518/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index f10690a5..ba687142 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1775,7 +1775,7 @@ async ( if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; console.log({ cancellingPaymentLinkId }); - createdLinks.push(cancellingPaymentLinkId); + createdLinkIds.push(cancellingPaymentLinkId); const { data: [{id:sumLinkIdOfCancellingPayment}] @@ -1794,7 +1794,7 @@ async ( }, }); console.log({ sumLinkIdOfCancellingPayment }); - createdLinks.push(sumLinkIdOfCancellingPayment); + createdLinkIds.push(sumLinkIdOfCancellingPayment); const cancellingPayLinkInsertQuery = await deep.insert({ type_id: CancellingPay, @@ -1811,7 +1811,7 @@ async ( }); console.log({ cancellingPayLinkInsertQuery }); if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } - createdLinks.push(cancellingPayLinkInsertQuery.data[0].id); + createdLinkIds.push(cancellingPayLinkInsertQuery.data[0].id); var mpUpCancellingPaymentSelectQuery; for (let i = 0; i < 10; i++) { From 3aaae195fbdd1eb02be56f6b80ab8dae038ecb23 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:48:17 +0000 Subject: [PATCH 519/683] Push to createdLinkIds, not to createdLinks --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index ba687142..fc038b51 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1891,7 +1891,7 @@ async ( if(sumLinkOfCancellingPaymentSelectQuery.error) {throw new Error(sumLinkOfCancellingPaymentSelectQuery.error.message);} const sumLinkIdOfCancellingPayment = sumLinkOfCancellingPaymentSelectQuery.data[0].id; console.log({ sumLinkIdOfCancellingPayment }); - createdLinks.push(sumLinkIdOfCancellingPayment); + createdLinkIds.push(sumLinkIdOfCancellingPayment); const cancellingPayLinkInsertQuery = await deep.insert({ type_id: CancellingPay, From e05d65d73f7d381acc08f90acb8c8d87422348e1 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:54:06 +0000 Subject: [PATCH 520/683] Get id from query --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index fc038b51..18061e32 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1870,7 +1870,7 @@ async ( }); console.log({ cancellingPaymentLinkInsertQuery }); if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0]; + const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; console.log({ cancellingPaymentLinkId }); createdLinkIds.push(cancellingPaymentLinkId); From c4c437b58a681788836b56c09d073efc5a929a14 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:54:15 +0000 Subject: [PATCH 521/683] Remove unused log --- payments-tinkoff-c2b-cancelling.cjs | 1 - 1 file changed, 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 18061e32..248ba9fa 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1868,7 +1868,6 @@ async ( ], }, }); - console.log({ cancellingPaymentLinkInsertQuery }); if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; console.log({ cancellingPaymentLinkId }); From 33b09dacf6d4a3a91ecdff6d6f54edf32b49ea6c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 18 Sep 2022 14:59:49 +0000 Subject: [PATCH 522/683] awaid -> await --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 248ba9fa..9a6329e2 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -763,7 +763,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const cancelledPaymentLink = fromLinkOfPaymentQuery.data[0]; console.log({cancelledPaymentLink}); - const Income = awaid deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); + const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); const incomeLinkInsertQuery = await deep.insert({ type_id: Income, from_id: cancellingPaymentLink.id, From 50b4f102c8a237dfa9cdaafb40782fc7ff9f2cad Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 07:19:14 +0000 Subject: [PATCH 523/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 9a6329e2..748cf113 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -760,7 +760,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { id: cancellingPaymentLink.from_id }); if(cancelledPaymentLinkSelectQuery.error) { throw new Error(cancelledPaymentLinkSelectQuery.error.message); } - const cancelledPaymentLink = fromLinkOfPaymentQuery.data[0]; + const cancelledPaymentLink = cancelledPaymentLinkSelectQuery.data[0]; console.log({cancelledPaymentLink}); const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); From cf7b452b0b046ac08532eb742592566691e97181 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 07:26:55 +0000 Subject: [PATCH 524/683] Fix typos --- payments-tinkoff-c2b-cancelling.cjs | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 748cf113..608b0c75 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -785,7 +785,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const cancelOptions = { TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", - PaymentLinkId: cancelledPaymentLink.value.value.bankPaymentLinkId, + PaymentId: cancelledPaymentLink.value.value.bankPaymentId, Amount: sumLink.value.value, }; console.log({ cancelOptions }); @@ -925,7 +925,7 @@ async ( if(!payLink) { throw new Error("The pay link associated with cancelling payment link " + cancellingPaymentLink + " is not found.") } - const bankPaymentLinkId = req.body.PaymentLinkId; + const bankPaymentId = req.body.PaymentId; const {data: mpUpPayment, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ up: { @@ -1128,7 +1128,7 @@ async ( const confirmOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentLinkId: initResult.response.PaymentLinkId, + PaymentId: initResult.response.PaymentId, }; const confirmResult = await confirm(confirmOptions); @@ -1191,11 +1191,11 @@ async ( url, }); - const bankPaymentLinkId = initResult.response.PaymentLinkId; + const bankPaymentId = initResult.response.PaymentId; const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentLinkId: bankPaymentLinkId, + PaymentId: bankPaymentId, Amount: PRICE, }; @@ -1259,11 +1259,11 @@ async ( url, }); - const bankPaymentLinkId = initResult.response.PaymentLinkId; + const bankPaymentId = initResult.response.PaymentId; const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentLinkId: bankPaymentLinkId, + PaymentId: bankPaymentId, Amount: Math.floor(PRICE / 3), }; @@ -1293,12 +1293,12 @@ async ( const confirmResult = await testConfirm(); console.log({ confirmResult }); - const bankPaymentLinkId = confirmResult.response.PaymentLinkId; - console.log({ bankPaymentLinkId }); + const bankPaymentId = confirmResult.response.PaymentId; + console.log({ bankPaymentId }); const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentLinkId: bankPaymentLinkId, + PaymentId: bankPaymentId, Amount: PRICE, }; console.log({ cancelOptions }); @@ -1314,11 +1314,11 @@ async ( console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); const confirmResult = await testConfirm(); - const bankPaymentLinkId = confirmResult.response.PaymentLinkId; + const bankPaymentId = confirmResult.response.PaymentId; const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentLinkId: bankPaymentLinkId, + PaymentId: bankPaymentId, Amount: Math.floor(PRICE / 3), }; @@ -1343,11 +1343,11 @@ async ( console.log('testCancelBeforePay-start'); const initResult = await testInit(); - const bankPaymentLinkId = initResult.response.PaymentLinkId;; + const bankPaymentId = initResult.response.PaymentId;; const cancelOptions = { TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentLinkId: bankPaymentLinkId, + PaymentId: bankPaymentId, Amount: PRICE, }; From c11a7d85d8a197c435aad4a29b728ca40adaab46 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 07:34:22 +0000 Subject: [PATCH 525/683] CANCELLED -> CANCELED --- payments-tinkoff-c2b-cancelling.cjs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 608b0c75..331a8bd9 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -889,7 +889,8 @@ async ( const reqBody = req.body; console.log({reqBody}); - if (req.body.Status !== 'CANCELLED') { + // Canceled is used instead of Cancelled because tinkoff team is not goos at english + if (req.body.Status !== 'CANCELED') { return; } From b509efbcfec8e2df979d61251c99abdee25c577e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 07:51:05 +0000 Subject: [PATCH 526/683] Log mpUpCancellingPayment --- payments-tinkoff-c2b-cancelling.cjs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 331a8bd9..9e20afaf 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1925,9 +1925,10 @@ async ( await sleep(1000); } - if (mpUpCancellingPaymentSelectQuery.error) { throw new Error(mpUpCancellingPaymentSelectQuery.error.message); } - const payedLink = mpUpCancellingPaymentSelectQuery.data.find(link => link.type_id === Payed); + const mpUpCancellingPayment = mpUpCancellingPaymentSelectQuery.data; + console.log({mpUpCancellingPayment}); + const payedLink = mpUpCancellingPayment.find(link => link.type_id === Payed); expect(payedLink).to.not.equal(undefined); createdLinks.push(payedLink); @@ -1937,7 +1938,7 @@ async ( return { createdLinks - } + }; }; { From 9570c81e134dad8e78445d9c559c2e7879a27bc3 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 07:53:11 +0000 Subject: [PATCH 527/683] Remove to_id restriction from Payed --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index a1ecfc97..b7d08766 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -738,7 +738,7 @@ const f = async () => { } = await deep.insert({ type_id: BasePayed, from_id: TinkoffProvider, - to_id: Pay, + to_id: Any, in: { data: { type_id: Contain, From 2b405e0d257cbd831c88a7534602b64fbcc0dcad Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 07:58:59 +0000 Subject: [PATCH 528/683] Fix typo --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index b7d08766..3a9743c3 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -738,7 +738,7 @@ const f = async () => { } = await deep.insert({ type_id: BasePayed, from_id: TinkoffProvider, - to_id: Any, + to_id: Any, in: { data: { type_id: Contain, From d4f1d3bb469c7c1023e6e77f95d636101adf73f7 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 13:42:46 +0000 Subject: [PATCH 529/683] Select the payed link by using the payLinkId, not a mp --- payments-tinkoff-c2b-cancelling.cjs | 76 +++++++++++++---------------- 1 file changed, 34 insertions(+), 42 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 9e20afaf..104b8020 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -963,7 +963,7 @@ async ( { type_id: await deep.id('@deep-foundation/core', 'Port'), number: { - data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, + data: { value: /*process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT */ 5238 }, }, in: { data: { @@ -1701,7 +1701,7 @@ async ( console.log({ sumLinkIdOfCancellingPayment }); createdLinkIds.push(sumLinkIdOfCancellingPayment); - const payLinkInsertQuery = await deep.insert({ + const cancellingPayLinkInsertQuery = await deep.insert({ type_id: CancellingPay, from_id: deep.linkId, to_id: sumLinkIdOfCancellingPayment, @@ -1714,29 +1714,26 @@ async ( ], }, }); - console.log({ payLinkInsertQuery }); - if (payLinkInsertQuery.error) { throw new Error(payLinkInsertQuery.error.message); } - createdLinkIds.push(payLinkInsertQuery.data[0].id); + if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } + const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; + console.log({ cancellingPayLinkId }); + createdLinkIds.push(cancellingPayLinkId); - var mpUpCancellingPaymentSelectQuery; + var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { - mpUpCancellingPaymentSelectQuery = await deep.select({ - up: { - parent_id: { _eq: cancellingPaymentLinkId }, - tree_id: { _eq: paymentTreeLinkId } - } + payedLinkSelectQuery = await deep.select({ + type_id: Payed, + to_id: cancellingPayLinkId }); - if (mpUpCancellingPaymentSelectQuery.data.length > 0) { + if (payedLinkSelectQuery.data.length > 0) { break; } await sleep(1000); } - if (mpUpCancellingPaymentSelectQuery.error) { throw new Error(mpUpCancellingPaymentSelectQuery.error.message); } - const mpUpCancellingPayment = mpUpCancellingPaymentSelectQuery.data; - console.log({mpUpCancellingPayment}); - const payedLink = mpUpCancellingPayment.find(link => link.type_id === Payed); + if (payedLinkSelectQuery.error) { throw new Error(payedLinkSelectQuery.error.message); } + const payedLink = payedLinkSelectQuery.data[0]; expect(payedLink).to.not.equal(undefined); createdLinks.push(payedLink); @@ -1810,28 +1807,26 @@ async ( ], }, }); - console.log({ cancellingPayLinkInsertQuery }); if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } - createdLinkIds.push(cancellingPayLinkInsertQuery.data[0].id); - - var mpUpCancellingPaymentSelectQuery; + const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; + console.log({ cancellingPayLinkId }); + createdLinkIds.push(cancellingPayLinkId); + + var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { - mpUpCancellingPaymentSelectQuery = await deep.select({ - up: { - parent_id: { _eq: cancellingPaymentLinkId }, - tree_id: { _eq: paymentTreeLinkId } - } + payedLinkSelectQuery = await deep.select({ + type_id: Payed, + to_id: cancellingPayLinkId }); - - if (mpUpCancellingPaymentSelectQuery.data.length > 0) { + + if (payedLinkSelectQuery.data.length > 0) { break; } - + await sleep(1000); } - - if (mpUpCancellingPaymentSelectQuery.error) { throw new Error(mpUpCancellingPaymentSelectQuery.error.message); } - const payedLink = mpUpCancellingPaymentSelectQuery.data.find(link => link.type_id === Payed); + if (payedLinkSelectQuery.error) { throw new Error(payedLinkSelectQuery.error.message); } + const payedLink = payedLinkSelectQuery.data[0]; expect(payedLink).to.not.equal(undefined); createdLinks.push(payedLink); } @@ -1908,27 +1903,24 @@ async ( }); if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; + console.log({ cancellingPayLinkId }); createdLinkIds.push(cancellingPayLinkId); - var mpUpCancellingPaymentSelectQuery; + var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { - mpUpCancellingPaymentSelectQuery = await deep.select({ - up: { - parent_id: { _eq: cancellingPaymentLinkId }, - tree_id: { _eq: paymentTreeLinkId } - } + payedLinkSelectQuery = await deep.select({ + type_id: Payed, + to_id: cancellingPayLinkId }); - if (mpUpCancellingPaymentSelectQuery.data.length > 0) { + if (payedLinkSelectQuery.data.length > 0) { break; } await sleep(1000); } - if (mpUpCancellingPaymentSelectQuery.error) { throw new Error(mpUpCancellingPaymentSelectQuery.error.message); } - const mpUpCancellingPayment = mpUpCancellingPaymentSelectQuery.data; - console.log({mpUpCancellingPayment}); - const payedLink = mpUpCancellingPayment.find(link => link.type_id === Payed); + if (payedLinkSelectQuery.error) { throw new Error(payedLinkSelectQuery.error.message); } + const payedLink = payedLinkSelectQuery.data[0]; expect(payedLink).to.not.equal(undefined); createdLinks.push(payedLink); From 1e971b90c19aa1fd978f55dedf5b9ab853afdb54 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 13:43:16 +0000 Subject: [PATCH 530/683] Format --- payments-tinkoff-c2b.cjs | 42 ++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 3a9743c3..c93c023d 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -738,7 +738,7 @@ const f = async () => { } = await deep.insert({ type_id: BasePayed, from_id: TinkoffProvider, - to_id: Any, + to_id: Any, in: { data: { type_id: Contain, @@ -1186,26 +1186,26 @@ async ( if (req.body.Status === 'AUTHORIZED') { - const confirm = ${confirm.toString()}; + const confirm = ${confirm.toString()}; - const storageBusinessLinkSelectQuery = await deep.select({ - id: paymentLink.to_id - }); - console.log({storageBusinessLinkSelectQuery}); - if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} - const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; - console.log({storageBusinessLinkId}); - - const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); - const tokenLinkSelectQuery = await deep.select({ - type_id: Token, - from_id: storageBusinessLinkId, - to_id: storageBusinessLinkId - }); - console.log({tokenLinkSelectQuery}); - if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} - const tokenLink = tokenLinkSelectQuery.data[0]; - console.log({tokenLink}); + const storageBusinessLinkSelectQuery = await deep.select({ + id: paymentLink.to_id + }); + console.log({storageBusinessLinkSelectQuery}); + if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} + const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; + console.log({storageBusinessLinkId}); + + const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); + const tokenLinkSelectQuery = await deep.select({ + type_id: Token, + from_id: storageBusinessLinkId, + to_id: storageBusinessLinkId + }); + console.log({tokenLinkSelectQuery}); + if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} + const tokenLink = tokenLinkSelectQuery.data[0]; + console.log({tokenLink}); const confirmOptions = { TerminalKey: tokenLink.value.value, @@ -1213,7 +1213,7 @@ async ( Amount: req.body.Amount, // Receipt: req.body.Receipt, }; - console.log({confirmOptions}); + console.log({confirmOptions}); const confirmResult = await confirm(confirmOptions); console.log({confirmResult}); From fccad0e5a17789630f1c03c48a42deb1a55087bd Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 13:43:43 +0000 Subject: [PATCH 531/683] Format --- payments-tinkoff-c2b-cancelling.cjs | 242 ++++++++++++++-------------- 1 file changed, 121 insertions(+), 121 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 104b8020..12650cd9 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1376,108 +1376,108 @@ async ( const callIntegrationTests = async () => { - const createdLinkIds = []; - - const { - data: [{id: tinkoffProviderLinkId}], - } = await deep.insert({ - type_id: TinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tinkoffProviderLinkId }); - createdLinkIds.push(tinkoffProviderLinkId); - - const { - data: [{id: sumProviderLinkId}], - } = await deep.insert({ - type_id: SumProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ sumProviderLinkId }); - createdLinkIds.push(sumProviderLinkId); - - const { - data: [{id: storageBusinessLinkId}], - } = await deep.insert({ - type_id: StorageBusiness, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ storageBusinessLinkId }); - createdLinkIds.push(storageBusinessLinkId); - - const { - data: [{id: tokenLinkId}], - } = await deep.insert({ - type_id: Token, - from_id: storageBusinessLinkId, - to_id: storageBusinessLinkId, - string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tokenLinkId }); - createdLinkIds.push(tokenLinkId); - - const { - data: [{ id: Product }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ Product }); - createdLinkIds.push(Product); - - const { - data: [{id: productLinkId}], - } = await deep.insert({ - type_id: Product, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ productLinkId }); - createdLinkIds.push(productLinkId); + const createdLinkIds = []; + + const { + data: [{ id: tinkoffProviderLinkId }], + } = await deep.insert({ + type_id: TinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ tinkoffProviderLinkId }); + createdLinkIds.push(tinkoffProviderLinkId); + + const { + data: [{ id: sumProviderLinkId }], + } = await deep.insert({ + type_id: SumProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ sumProviderLinkId }); + createdLinkIds.push(sumProviderLinkId); + + const { + data: [{ id: storageBusinessLinkId }], + } = await deep.insert({ + type_id: StorageBusiness, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ storageBusinessLinkId }); + createdLinkIds.push(storageBusinessLinkId); + + const { + data: [{ id: tokenLinkId }], + } = await deep.insert({ + type_id: Token, + from_id: storageBusinessLinkId, + to_id: storageBusinessLinkId, + string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ tokenLinkId }); + createdLinkIds.push(tokenLinkId); + + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ Product }); + createdLinkIds.push(Product); + + const { + data: [{ id: productLinkId }], + } = await deep.insert({ + type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ productLinkId }); + createdLinkIds.push(productLinkId); const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); @@ -1485,7 +1485,7 @@ async ( const createdLinkIds = []; const { - data: [{id: paymentLinkId}], + data: [{ id: paymentLinkId }], } = await deep.insert({ type_id: Payment, object: { data: { value: { orderId: uniqid() } } }, @@ -1504,7 +1504,7 @@ async ( createdLinkIds.push(paymentLinkId); const { - data: [{id: sumLinkId}], + data: [{ id: sumLinkId }], } = await deep.insert({ type_id: Sum, from_id: sumProviderLinkId, @@ -1523,7 +1523,7 @@ async ( createdLinkIds.push(sumLinkId); const { - data: [{id: objectLinkId}], + data: [{ id: objectLinkId }], } = await deep.insert({ type_id: Object, from_id: paymentLinkId, @@ -1541,7 +1541,7 @@ async ( createdLinkIds.push(objectLinkId); const { - data: [{id: payLinkId}], + data: [{ id: payLinkId }], } = await deep.insert({ type_id: Pay, from_id: deep.linkId, @@ -1577,7 +1577,7 @@ async ( createdLinkIds.push(urlLinkSelectQuery.data[0].id); const createdLinks = (await deep.select(createdLinkIds)).data; - console.log({createdLinks}); + console.log({ createdLinks }); console.log('testInit-end'); @@ -1604,7 +1604,7 @@ async ( url, }); - console.log({createdLinks}); + console.log({ createdLinks }); console.log('testFinishAuthorize-end'); @@ -1642,7 +1642,7 @@ async ( createdLinks.push(...(await deep.select(createdLinkIds)).data); - console.log({createdLinks}); + console.log({ createdLinks }); console.log('testConfirm-end'); @@ -1741,9 +1741,9 @@ async ( console.log('testCancelAfterPayAfterConfirmFullPrice-end'); - return { + return { createdLinks - }; + }; }; const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({ customerKey } = { customerKey: uniqid() }) => { @@ -1776,7 +1776,7 @@ async ( createdLinkIds.push(cancellingPaymentLinkId); const { - data: [{id:sumLinkIdOfCancellingPayment}] + data: [{ id: sumLinkIdOfCancellingPayment }] } = await deep.insert({ type_id: Sum, from_id: sumProviderLinkId, @@ -1811,18 +1811,18 @@ async ( const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; console.log({ cancellingPayLinkId }); createdLinkIds.push(cancellingPayLinkId); - + var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { payedLinkSelectQuery = await deep.select({ type_id: Payed, to_id: cancellingPayLinkId }); - + if (payedLinkSelectQuery.data.length > 0) { break; } - + await sleep(1000); } if (payedLinkSelectQuery.error) { throw new Error(payedLinkSelectQuery.error.message); } @@ -1833,13 +1833,13 @@ async ( createdLinks.push(...(await deep.select(createdLinkIds)).data) - console.log({createdLinks}); + console.log({ createdLinks }); console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); - return { + return { createdLinks - } + } }; const testCancelBeforePay = async ({ customerKey } = { customerKey: uniqid() }) => { @@ -1883,7 +1883,7 @@ async ( ], }, }); - if(sumLinkOfCancellingPaymentSelectQuery.error) {throw new Error(sumLinkOfCancellingPaymentSelectQuery.error.message);} + if (sumLinkOfCancellingPaymentSelectQuery.error) { throw new Error(sumLinkOfCancellingPaymentSelectQuery.error.message); } const sumLinkIdOfCancellingPayment = sumLinkOfCancellingPaymentSelectQuery.data[0].id; console.log({ sumLinkIdOfCancellingPayment }); createdLinkIds.push(sumLinkIdOfCancellingPayment); @@ -1928,9 +1928,9 @@ async ( console.log('testCancelBeforePay-end'); - return { + return { createdLinks - }; + }; }; { From 86d1be5938e085f30bbafad05952c408f080f5c9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 14:35:35 +0000 Subject: [PATCH 532/683] Do not add contain links in handlers --- payments-tinkoff-c2b-cancelling.cjs | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 12650cd9..e035b3c0 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -724,8 +724,6 @@ const f = async () => { async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} - const Contain = await deep.id("@deep-foundation/core", 'Contain'); - const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ down: { link_id: { _eq: payLink.id }, @@ -800,14 +798,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { from_id: tinkoffProviderLink.id, to_id: payLink.id, string: { data: { value: errorMessage } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, }); if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } throw new Error(errorMessage); @@ -817,14 +807,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), from_id: tinkoffProviderLink.id, to_id: payLink.id, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, }); if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError.message); } @@ -894,8 +876,6 @@ async ( return; } - const Contain = await deep.id("@deep-foundation/core", "Contain"); - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider @@ -944,14 +924,6 @@ async ( type_id: Payed, from_id: tinkoffProviderLink.id, to_id: sumLink.id, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, }); if(payedInsertLinkInsertQuery.error) {throw new Error(payedInsertLinkInsertQuery.error.message);} From 8b5fc3b9d4c5fad806a12f82a3aa19c0644cfe62 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 14:37:37 +0000 Subject: [PATCH 533/683] Do not add contain links in handlers --- payments-tinkoff-c2b.cjs | 60 ---------------------------------------- 1 file changed, 60 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index c93c023d..52d41869 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -957,8 +957,6 @@ const f = async () => { async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} - const Contain = await deep.id("@deep-foundation/core", 'Contain'); - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider @@ -1053,14 +1051,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { from_id: tinkoffProviderLinkId, to_id: payLink.id, string: { data: { value: errorMessage } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, }); if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } throw new Error(errorMessage); @@ -1071,14 +1061,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { from_id: tinkoffProviderLinkId, to_id: payLink.id, string: { data: { value: initResult.response.PaymentURL } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, }); if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } @@ -1150,8 +1132,6 @@ async ( const reqBody = req.body; console.log({reqBody}); - const Contain = await deep.id("@deep-foundation/core", 'Contain'); - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider @@ -1225,14 +1205,6 @@ async ( from_id: tinkoffProviderLinkId, to_id: payLink.id, string: { data: { value: errorMessage } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, }); if(errorLinkInsertError) { throw new Error(errorLinkInsertError); } throw new Error(errorMessage); @@ -1244,14 +1216,6 @@ async ( type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), from_id: tinkoffProviderLinkId, to_id: payLink.id, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, }); if(payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } const payedLinkId = payedLinkInsertQuery.data[0].id; @@ -1261,14 +1225,6 @@ async ( const storageClientLinkInsertQuery = await deep.insert({ type_id: StorageClient, number: {data: {value: req.body.CardId}}, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, }); console.log({storageClientLinkInsertQuery}); if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} @@ -1278,14 +1234,6 @@ async ( const titleLinkInsertQuery = await deep.insert({ type_id: Title, string: {data: {value: req.body.Pan}}, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, }); if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} const titleLinkId = titleLinkInsertQuery.data[0].id; @@ -1296,14 +1244,6 @@ async ( type_id: Income, from_id: paymentLink.id, to_id: storageClientLinkId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, }); if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} const incomeLinkId = incomeLinkInsertQuery.data[0].id; From 276d3a61e396ee82f89c3a74e6dd8e01b54a67c4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 14:38:14 +0000 Subject: [PATCH 534/683] Use spaces --- payments-tinkoff-c2b.cjs | 3386 +++++++++++++++++++------------------- 1 file changed, 1693 insertions(+), 1693 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 52d41869..4f75f703 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -7,8 +7,8 @@ const dotenvExpand = require('dotenv-expand'); const { generateApolloClient } = require('@deep-foundation/hasura/client'); const { DeepClient } = require('@deep-foundation/deeplinks/imports/client'); const { - minilinks, - Link, + minilinks, + Link, } = require('@deep-foundation/deeplinks/imports/minilinks'); const puppeteer = require('puppeteer'); const crypto = require('crypto'); @@ -17,7 +17,7 @@ const uniqid = require('uniqid'); const { expect } = require('chai'); const { get } = require('lodash'); const { - default: links, + default: links, } = require('@deep-foundation/deeplinks/imports/router/links'); var myEnv = dotenv.config(); @@ -29,921 +29,921 @@ const PRICE = 5500; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const payInBrowser = async ({ page, browser, url }) => { - await page.goto(url, { waitUntil: 'networkidle2' }); - await sleep(5000); - const oldForm = await page.evaluate(() => { - return !!document.querySelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - }); - if (oldForm) { - console.log('OLD FORM!!!!!!!'); - // Старая форма используется на тестовом сервере - const cvc1 = await page.evaluate(() => { - return !!document.querySelector( - 'button[automation-id="pay-card__submit"]' - ); - }); - if (cvc1) { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_TEST_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_TEST_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-card__submit"]'); // submit button - } else { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_E2C_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_E2C_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-wallet__submit"]'); // submit button - await sleep(300); - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(1000); - } - // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен - await sleep(1000); - } else { - console.log('NEW FORM!!!!!!!'); - await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number - await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date - await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code - await page.click('button[type=submit]'); // submit button - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(3000); - } - await browser.close(); + await page.goto(url, { waitUntil: 'networkidle2' }); + await sleep(5000); + const oldForm = await page.evaluate(() => { + return !!document.querySelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + }); + if (oldForm) { + console.log('OLD FORM!!!!!!!'); + // Старая форма используется на тестовом сервере + const cvc1 = await page.evaluate(() => { + return !!document.querySelector( + 'button[automation-id="pay-card__submit"]' + ); + }); + if (cvc1) { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_TEST_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_TEST_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-card__submit"]'); // submit button + } else { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_E2C_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_E2C_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-wallet__submit"]'); // submit button + await sleep(300); + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(1000); + } + // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен + await sleep(1000); + } else { + console.log('NEW FORM!!!!!!!'); + await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number + await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date + await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code + await page.click('button[type=submit]'); // submit button + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(3000); + } + await browser.close(); }; const f = async () => { - const apolloClient = generateApolloClient({ - path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE - ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') - ? false - : true, - // admin token in prealpha deep secret key - // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', - }); - - const unloginedDeep = new DeepClient({ apolloClient }); - - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - - const _generateToken = (dataWithPassword) => { - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => `${acc}${item}`, ''); - console.log({ dataString }); - const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - console.log({ hash }); - return hash; - }; - - const generateToken = (data) => { - const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { - ...restData, - Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, - }; - console.log({ dataWithPassword }); - return _generateToken(dataWithPassword); - }; - const generateTokenString = generateToken - .toString() - .replace( - 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', - `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` - ); - console.log({ generateTokenString }); - - const getUrl = (method) => - `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; - getUrlString = getUrl - .toString() - .replace( - '${process.env.PAYMENT_EACQ_AND_TEST_URL}', - process.env.PAYMENT_EACQ_AND_TEST_URL - ); - console.log({ getUrlString }); - - const getMarketUrl = (method) => - `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; - - const getState = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetState'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const checkOrder = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('CheckOrder'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCardList = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCardList'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode || '0'); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const init = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Init'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const resend = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Resend'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const charge = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Charge'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const addCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('AddCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const removeCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('RemoveCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getBankPaymentId = async (orderId) => { - const checkOrderOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: orderId, - }; - - const checkOrderResult = await checkOrder(checkOrderOptions); - expect(checkOrderResult.error).to.equal(undefined); - - console.log({ checkOrderResponse: checkOrderResult }); - - const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; - - console.log({ bankPaymentId }); - return bankPaymentId; - }; - - const guest = await unloginedDeep.guest(); - const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); - const admin = await guestDeep.login({ - linkId: await guestDeep.id('deep', 'admin'), - }); - const deep = new DeepClient({ deep: guestDeep, ...admin }); - - const User = await deep.id('@deep-foundation/core', 'User'); - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); - const Join = await deep.id('@deep-foundation/core', 'Join'); - const Contain = await deep.id('@deep-foundation/core', 'Contain'); - const Value = await deep.id('@deep-foundation/core', 'Value'); - const String = await deep.id('@deep-foundation/core', 'String'); - const Package = await deep.id('@deep-foundation/core', 'Package'); - - const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); - const dockerSupportsJs = await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ); - const Handler = await deep.id('@deep-foundation/core', 'Handler'); - const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); - const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); - - const Tree = await deep.id('@deep-foundation/core', 'Tree'); - const TreeIncludeNode = await deep.id( - '@deep-foundation/core', - 'TreeIncludeNode' - ); - const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); - const TreeIncludeDown = await deep.id( - '@deep-foundation/core', - 'TreeIncludeDown' - ); - - const Rule = await deep.id('@deep-foundation/core', 'Rule'); - const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); - const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); - const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); - const Selector = await deep.id('@deep-foundation/core', 'Selector'); - const SelectorInclude = await deep.id( - '@deep-foundation/core', - 'SelectorInclude' - ); - const SelectorExclude = await deep.id( - '@deep-foundation/core', - 'SelectorExclude' - ); - const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); - const containTree = await deep.id('@deep-foundation/core', 'containTree'); - const AllowInsertType = await deep.id( - '@deep-foundation/core', - 'AllowInsertType' - ); - const AllowDeleteType = await deep.id( - '@deep-foundation/core', - 'AllowDeleteType' - ); - const SelectorFilter = await deep.id( - '@deep-foundation/core', - 'SelectorFilter' - ); - const Query = await deep.id('@deep-foundation/core', 'Query'); - const usersId = await deep.id('deep', 'users'); - - const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); - const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); - const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); - const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); - const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); - const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); - const BaseError = await deep.id('@deep-foundation/payments', 'Error'); - const Storage = await deep.id('@deep-foundation/payments', 'Storage'); - - const { - data: [{ id: packageId }], - } = await deep.insert({ - type_id: Package, - string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - out: { - data: [ - { - type_id: Join, - to_id: await deep.id('deep', 'users', 'packages'), - }, - { - type_id: Join, - to_id: await deep.id('deep', 'admin'), - }, - ], - }, - }); - - console.log({ packageId }); - - const { - data: [{ id: SumProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'SumProvider' } }, - }, - }, - }); - - console.log({ SumProvider: SumProvider }); - - const { - data: [{ id: TinkoffProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'TinkoffProvider' } }, - }, - }, - }); - - console.log({ TinkoffProvider }); - - const { - data: [{ id: Payment }], - } = await deep.insert({ - type_id: BasePayment, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Payment' } }, - }, - }, - }); - - console.log({ Payment: Payment }); - - const { - data: [{ id: Object }], - } = await deep.insert({ - type_id: BaseObject, - from_id: Payment, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Object' } }, - }, - }, - }); - - console.log({ Object: Object }); - - const { - data: [{ id: Sum }], - } = await deep.insert({ - type_id: BaseSum, - from_id: SumProvider, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Sum' } }, - }, - }, - }); - - console.log({ Sum: Sum }); - - // TODO Rest restrictions - const { - data: [{ id: Pay }], - } = await deep.insert({ - type_id: BasePay, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Pay' } }, - }, - }, - }); - - console.log({ Pay: Pay }); - - const { - data: [{ id: Url }], - } = await deep.insert({ - type_id: BaseUrl, - from_id: TinkoffProvider, - to_id: Pay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Url' } }, - }, - }, - }); - - console.log({ Url: Url }); - - const { - data: [{ id: Payed }], - } = await deep.insert({ - type_id: BasePayed, - from_id: TinkoffProvider, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Payed' } }, - }, - }, - }); - - console.log({ Payed: Payed }); - - const { - data: [{ id: Error }], - } = await deep.insert({ - type_id: BaseError, - from_id: TinkoffProvider, - to_id: Pay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Error' } }, - }, - }, - }); - - console.log({ Error: Error }); - - const { - data: [{ id: paymentTreeId }], - } = await deep.insert({ - type_id: Tree, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'paymentTree' } }, - }, - }, - out: { - data: [ - { - type_id: TreeIncludeNode, - to_id: Payment, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Sum, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeDown, - to_id: Object, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Error, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Payed, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Pay, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Url, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - ], - }, - }); - - const { - data: [{ id: StorageBusiness }], - } = await deep.insert({ - type_id: Storage, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'StorageBusiness' } }, - }, - }, - }); - - const { - data: [{ id: Token }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Token' } }, - }, - }, - }); - - const { - data: [{ id: StorageClient }], - } = await deep.insert({ - type_id: Storage, - from_id: Payment, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'StorageClient' } }, - }, - }, - }); - - const { - data: [{ id: Title }], - } = await deep.insert({ - type_id: Type, - from_id: StorageClient, - to_id: SyncTextFile, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Title' } }, - }, - }, - }); - console.log({ Title }); - - const { - data: [{ id: Income }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Income' } }, - }, - }, - }); - console.log({ Income }); - - const handlersDependencies = ` + const apolloClient = generateApolloClient({ + path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE + ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') + ? false + : true, + // admin token in prealpha deep secret key + // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', + }); + + const unloginedDeep = new DeepClient({ apolloClient }); + + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + + const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + console.log({ dataString }); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + console.log({ hash }); + return hash; + }; + + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + ...restData, + Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, + }; + console.log({ dataWithPassword }); + return _generateToken(dataWithPassword); + }; + const generateTokenString = generateToken + .toString() + .replace( + 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', + `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` + ); + console.log({ generateTokenString }); + + const getUrl = (method) => + `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; + getUrlString = getUrl + .toString() + .replace( + '${process.env.PAYMENT_EACQ_AND_TEST_URL}', + process.env.PAYMENT_EACQ_AND_TEST_URL + ); + console.log({ getUrlString }); + + const getMarketUrl = (method) => + `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; + + const getState = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetState'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const checkOrder = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('CheckOrder'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getCardList = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCardList'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode || '0'); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const init = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Init'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const resend = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Resend'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const charge = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Charge'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const addCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('AddCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const removeCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('RemoveCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getBankPaymentId = async (orderId) => { + const checkOrderOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: orderId, + }; + + const checkOrderResult = await checkOrder(checkOrderOptions); + expect(checkOrderResult.error).to.equal(undefined); + + console.log({ checkOrderResponse: checkOrderResult }); + + const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; + + console.log({ bankPaymentId }); + return bankPaymentId; + }; + + const guest = await unloginedDeep.guest(); + const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); + const admin = await guestDeep.login({ + linkId: await guestDeep.id('deep', 'admin'), + }); + const deep = new DeepClient({ deep: guestDeep, ...admin }); + + const User = await deep.id('@deep-foundation/core', 'User'); + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + const Join = await deep.id('@deep-foundation/core', 'Join'); + const Contain = await deep.id('@deep-foundation/core', 'Contain'); + const Value = await deep.id('@deep-foundation/core', 'Value'); + const String = await deep.id('@deep-foundation/core', 'String'); + const Package = await deep.id('@deep-foundation/core', 'Package'); + + const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); + const dockerSupportsJs = await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ); + const Handler = await deep.id('@deep-foundation/core', 'Handler'); + const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); + const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); + + const Tree = await deep.id('@deep-foundation/core', 'Tree'); + const TreeIncludeNode = await deep.id( + '@deep-foundation/core', + 'TreeIncludeNode' + ); + const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); + const TreeIncludeDown = await deep.id( + '@deep-foundation/core', + 'TreeIncludeDown' + ); + + const Rule = await deep.id('@deep-foundation/core', 'Rule'); + const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); + const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); + const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); + const Selector = await deep.id('@deep-foundation/core', 'Selector'); + const SelectorInclude = await deep.id( + '@deep-foundation/core', + 'SelectorInclude' + ); + const SelectorExclude = await deep.id( + '@deep-foundation/core', + 'SelectorExclude' + ); + const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); + const containTree = await deep.id('@deep-foundation/core', 'containTree'); + const AllowInsertType = await deep.id( + '@deep-foundation/core', + 'AllowInsertType' + ); + const AllowDeleteType = await deep.id( + '@deep-foundation/core', + 'AllowDeleteType' + ); + const SelectorFilter = await deep.id( + '@deep-foundation/core', + 'SelectorFilter' + ); + const Query = await deep.id('@deep-foundation/core', 'Query'); + const usersId = await deep.id('deep', 'users'); + + const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); + const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); + const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); + const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); + const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); + const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); + const BaseError = await deep.id('@deep-foundation/payments', 'Error'); + const Storage = await deep.id('@deep-foundation/payments', 'Storage'); + + const { + data: [{ id: packageId }], + } = await deep.insert({ + type_id: Package, + string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + out: { + data: [ + { + type_id: Join, + to_id: await deep.id('deep', 'users', 'packages'), + }, + { + type_id: Join, + to_id: await deep.id('deep', 'admin'), + }, + ], + }, + }); + + console.log({ packageId }); + + const { + data: [{ id: SumProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'SumProvider' } }, + }, + }, + }); + + console.log({ SumProvider: SumProvider }); + + const { + data: [{ id: TinkoffProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'TinkoffProvider' } }, + }, + }, + }); + + console.log({ TinkoffProvider }); + + const { + data: [{ id: Payment }], + } = await deep.insert({ + type_id: BasePayment, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Payment' } }, + }, + }, + }); + + console.log({ Payment: Payment }); + + const { + data: [{ id: Object }], + } = await deep.insert({ + type_id: BaseObject, + from_id: Payment, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Object' } }, + }, + }, + }); + + console.log({ Object: Object }); + + const { + data: [{ id: Sum }], + } = await deep.insert({ + type_id: BaseSum, + from_id: SumProvider, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Sum' } }, + }, + }, + }); + + console.log({ Sum: Sum }); + + // TODO Rest restrictions + const { + data: [{ id: Pay }], + } = await deep.insert({ + type_id: BasePay, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Pay' } }, + }, + }, + }); + + console.log({ Pay: Pay }); + + const { + data: [{ id: Url }], + } = await deep.insert({ + type_id: BaseUrl, + from_id: TinkoffProvider, + to_id: Pay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Url' } }, + }, + }, + }); + + console.log({ Url: Url }); + + const { + data: [{ id: Payed }], + } = await deep.insert({ + type_id: BasePayed, + from_id: TinkoffProvider, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Payed' } }, + }, + }, + }); + + console.log({ Payed: Payed }); + + const { + data: [{ id: Error }], + } = await deep.insert({ + type_id: BaseError, + from_id: TinkoffProvider, + to_id: Pay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Error' } }, + }, + }, + }); + + console.log({ Error: Error }); + + const { + data: [{ id: paymentTreeId }], + } = await deep.insert({ + type_id: Tree, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'paymentTree' } }, + }, + }, + out: { + data: [ + { + type_id: TreeIncludeNode, + to_id: Payment, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Sum, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeDown, + to_id: Object, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Error, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Payed, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Pay, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Url, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + ], + }, + }); + + const { + data: [{ id: StorageBusiness }], + } = await deep.insert({ + type_id: Storage, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'StorageBusiness' } }, + }, + }, + }); + + const { + data: [{ id: Token }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Token' } }, + }, + }, + }); + + const { + data: [{ id: StorageClient }], + } = await deep.insert({ + type_id: Storage, + from_id: Payment, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'StorageClient' } }, + }, + }, + }); + + const { + data: [{ id: Title }], + } = await deep.insert({ + type_id: Type, + from_id: StorageClient, + to_id: SyncTextFile, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Title' } }, + }, + }, + }); + console.log({ Title }); + + const { + data: [{ id: Income }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Income' } }, + }, + }, + }); + console.log({ Income }); + + const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); const errorsConverter = ${JSON.stringify(errorsConverter)}; @@ -952,8 +952,8 @@ const f = async () => { const _generateToken = ${_generateToken.toString()}; const generateToken = ${generateTokenString}; `; - console.log({ handlersDependencies }); - const payInsertHandler = ` + console.log({ handlersDependencies }); + const payInsertHandler = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} @@ -1074,54 +1074,54 @@ async ({ deep, require, data: { newLink: payLink } }) => { }; `; - const { - data: [{ id: payInsertHandlerId }], - } = await deep.insert({ - type_id: SyncTextFile, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandlerFile' } }, - }, - { - from_id: dockerSupportsJs, - type_id: Handler, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandler' } }, - }, - { - type_id: HandleInsert, - from_id: Pay, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandle' } }, - }, - ], - }, - }, - ], - }, - }, - ], - }, - string: { - data: { - value: payInsertHandler, - }, - }, - }); - console.log({ payInsertHandlerId }); - - const tinkoffNotificationHandler = ` + const { + data: [{ id: payInsertHandlerId }], + } = await deep.insert({ + type_id: SyncTextFile, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandlerFile' } }, + }, + { + from_id: dockerSupportsJs, + type_id: Handler, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandler' } }, + }, + { + type_id: HandleInsert, + from_id: Pay, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandle' } }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + string: { + data: { + value: payInsertHandler, + }, + }, + }); + console.log({ payInsertHandlerId }); + + const tinkoffNotificationHandler = ` async ( req, res, @@ -1166,26 +1166,26 @@ async ( if (req.body.Status === 'AUTHORIZED') { - const confirm = ${confirm.toString()}; - - const storageBusinessLinkSelectQuery = await deep.select({ - id: paymentLink.to_id - }); - console.log({storageBusinessLinkSelectQuery}); - if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} - const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; - console.log({storageBusinessLinkId}); - - const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); - const tokenLinkSelectQuery = await deep.select({ - type_id: Token, - from_id: storageBusinessLinkId, - to_id: storageBusinessLinkId - }); - console.log({tokenLinkSelectQuery}); - if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} - const tokenLink = tokenLinkSelectQuery.data[0]; - console.log({tokenLink}); + const confirm = ${confirm.toString()}; + + const storageBusinessLinkSelectQuery = await deep.select({ + id: paymentLink.to_id + }); + console.log({storageBusinessLinkSelectQuery}); + if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} + const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; + console.log({storageBusinessLinkId}); + + const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); + const tokenLinkSelectQuery = await deep.select({ + type_id: Token, + from_id: storageBusinessLinkId, + to_id: storageBusinessLinkId + }); + console.log({tokenLinkSelectQuery}); + if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} + const tokenLink = tokenLinkSelectQuery.data[0]; + console.log({tokenLink}); const confirmOptions = { TerminalKey: tokenLink.value.value, @@ -1193,7 +1193,7 @@ async ( Amount: req.body.Amount, // Receipt: req.body.Receipt, }; - console.log({confirmOptions}); + console.log({confirmOptions}); const confirmResult = await confirm(confirmOptions); console.log({confirmResult}); @@ -1253,728 +1253,728 @@ async ( }; `; - await deep.insert( - { - type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { - data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, - }, - in: { - data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), - in: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'RouterStringUse' - ), - string: { - data: { - value: - process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, - }, - }, - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), - out: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'HandleRoute' - ), - to: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'Handler' - ), - from_id: await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ), - in: { - data: { - type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - to: { - data: { - type_id: SyncTextFile, - string: { - data: { - value: tinkoffNotificationHandler, - }, - }, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - } - ); - - const callTests = async () => { - console.log('callTests-start'); - - const callRealizationTests = async () => { - const testInit = async () => { - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - Amount: PRICE, - Description: 'Test shopping', - CustomerKey: deep.linkId, - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // }, - }; - - const initResult = await init(initOptions); - - expect(initResult.error).to.equal(undefined); - - return initResult; - }; - - const testConfirm = async () => { - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // }, - }; - - const initResult = await init(initOptions); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const confirmOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const confirmResult = await confirm(confirmOptions); - - expect(confirmResult.error).to.equal(undefined); - expect(confirmResult.response.Status).to.equal('CONFIRMED'); - - return confirmResult; - }; - - const testGetState = async () => { - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Amount: PRICE, - }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.error).to.equal(undefined); - }; - - const testGetCardList = async () => { - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - OrderId: uniqid(), - Amount: PRICE, - Recurrent: 'Y', - }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.error).to.equal(undefined); - }; - - const testResend = async () => { - console.log('testResend-start'); - const resendOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - }; - console.log({ resendOptions }); - - const resendResult = await resend(resendOptions); - console.log({ resendResult }); - - expect(resendResult.error).to.equal(undefined); - console.log('testResend-end'); - }; - - const testCharge = async () => { - console.log('testCharge-start'); - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Recurrent: 'Y', - }); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; + await deep.insert( + { + type_id: await deep.id('@deep-foundation/core', 'Port'), + number: { + data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, + }, + in: { + data: { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'RouterStringUse' + ), + string: { + data: { + value: + process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, + }, + }, + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + out: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'HandleRoute' + ), + to: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'Handler' + ), + from_id: await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ), + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + to: { + data: { + type_id: SyncTextFile, + string: { + data: { + value: tinkoffNotificationHandler, + }, + }, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + } + ); + + const callTests = async () => { + console.log('callTests-start'); + + const callRealizationTests = async () => { + const testInit = async () => { + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + Amount: PRICE, + Description: 'Test shopping', + CustomerKey: deep.linkId, + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: PRICE, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + expect(initResult.error).to.equal(undefined); + + return initResult; + }; + + const testConfirm = async () => { + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: PRICE, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const confirmOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const confirmResult = await confirm(confirmOptions); + + expect(confirmResult.error).to.equal(undefined); + expect(confirmResult.response.Status).to.equal('CONFIRMED'); + + return confirmResult; + }; + + const testGetState = async () => { + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + Amount: PRICE, + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.error).to.equal(undefined); + }; + + const testGetCardList = async () => { + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + OrderId: uniqid(), + Amount: PRICE, + Recurrent: 'Y', + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.error).to.equal(undefined); + }; + + const testResend = async () => { + console.log('testResend-start'); + const resendOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + }; + console.log({ resendOptions }); + + const resendResult = await resend(resendOptions); + console.log({ resendResult }); + + expect(resendResult.error).to.equal(undefined); + console.log('testResend-end'); + }; + + const testCharge = async () => { + console.log('testCharge-start'); + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + Recurrent: 'Y', + }); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.response[0].RebillId).to.have.length.above(0); + + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.response.Status).to.equal('AUTHORIZED'); + + const newInitResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + }); + + const newChargeOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: newInitResult.response.PaymentId, + RebillId: Number(getCardListResult.response[0].RebillId), + }; + + const chargeResult = await charge(newChargeOptions); + + expect(chargeResult.error).to.equal(undefined); + console.log('testCharge-end'); + }; + + const testAddCustomer = async () => { + console.log('testAddCustomer-start'); + + const addCustomerOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + console.log({ addCustomerOptions }); + + const addCustomerResult = await addCustomer(addCustomerOptions); + console.log({ addCustomerResult }); + + expect(addCustomerResult.error).to.equal(undefined); + console.log('testAddCustomer-end'); + }; + + const testGetCustomer = async () => { + console.log('testGetCustomer-start'); + + const customerOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + + const addCustomerDataOptions = { + ...customerOptions, + Phone: process.env.PAYMENT_TEST_PHONE, + }; + + const addResult = await addCustomer(addCustomerDataOptions); + + expect(addResult.error).to.equal(undefined); + + const getResult = await getCustomer(customerOptions); + + expect(getResult.error).to.equal(undefined); + expect(getResult.response.Phone).to.equal( + process.env.PAYMENT_TEST_PHONE + ); + + console.log('testGetCustomer-end'); + }; + + const testRemoveCustomer = async () => { + console.log('testRemoveCustomer-start'); + + const removeCustomerData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + + const newAddCustomerData = { + ...removeCustomerData, + Phone: process.env.PAYMENT_TEST_PHONE, + }; - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.response[0].RebillId).to.have.length.above(0); - - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.response.Status).to.equal('AUTHORIZED'); - - const newInitResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - }); - - const newChargeOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: newInitResult.response.PaymentId, - RebillId: Number(getCardListResult.response[0].RebillId), - }; - - const chargeResult = await charge(newChargeOptions); - - expect(chargeResult.error).to.equal(undefined); - console.log('testCharge-end'); - }; - - const testAddCustomer = async () => { - console.log('testAddCustomer-start'); - - const addCustomerOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - console.log({ addCustomerOptions }); - - const addCustomerResult = await addCustomer(addCustomerOptions); - console.log({ addCustomerResult }); - - expect(addCustomerResult.error).to.equal(undefined); - console.log('testAddCustomer-end'); - }; - - const testGetCustomer = async () => { - console.log('testGetCustomer-start'); - - const customerOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - - const addCustomerDataOptions = { - ...customerOptions, - Phone: process.env.PAYMENT_TEST_PHONE, - }; - - const addResult = await addCustomer(addCustomerDataOptions); - - expect(addResult.error).to.equal(undefined); - - const getResult = await getCustomer(customerOptions); - - expect(getResult.error).to.equal(undefined); - expect(getResult.response.Phone).to.equal( - process.env.PAYMENT_TEST_PHONE - ); - - console.log('testGetCustomer-end'); - }; - - const testRemoveCustomer = async () => { - console.log('testRemoveCustomer-start'); - - const removeCustomerData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - - const newAddCustomerData = { - ...removeCustomerData, - Phone: process.env.PAYMENT_TEST_PHONE, - }; - - const addResult = await addCustomer(newAddCustomerData); - - expect(addResult.error).to.equal(undefined); - - const removeResult = await removeCustomer(removeCustomerData); - - expect(removeResult.error).to.equal(undefined); - - console.log('testRemoveCustomer-end'); - }; - - await testInit(); - await testConfirm(); - await testGetState(); - await testGetCardList(); - await testResend(); - await testCharge(); - await testAddCustomer(); - await testGetCustomer(); - await testRemoveCustomer(); - }; - - const callIntegrationTests = async () => { - - const createdLinkIds = []; - - const { - data: [{ id: tinkoffProviderLinkId }], - } = await deep.insert({ - type_id: TinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tinkoffProviderLinkId }); - createdLinkIds.push(tinkoffProviderLinkId); - - const { - data: [{ id: sumProviderLinkId }], - } = await deep.insert({ - type_id: SumProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ sumProviderLinkId }); - createdLinkIds.push(sumProviderLinkId); - - const { - data: [{ id: storageBusinessLinkId }], - } = await deep.insert({ - type_id: StorageBusiness, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ storageBusinessLinkId }); - createdLinkIds.push(storageBusinessLinkId); - - const { - data: [{ id: tokenLinkId }], - } = await deep.insert({ - type_id: Token, - from_id: storageBusinessLinkId, - to_id: storageBusinessLinkId, - string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tokenLinkId }); - createdLinkIds.push(tokenLinkId); - - const { - data: [{ id: Product }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ Product }); - createdLinkIds.push(Product); - - const { - data: [{ id: productLinkId }], - } = await deep.insert({ - type_id: Product, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ productLinkId }); - createdLinkIds.push(productLinkId); - - const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testInit-start'); - - const createdLinkIds = []; - - const { - data: [{ id: paymentLinkId }], - } = await deep.insert({ - type_id: Payment, - object: { data: { value: { orderId: uniqid() } } }, - from_id: deep.linkId, - to_id: storageBusinessLinkId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ paymentLinkId }); - createdLinkIds.push(paymentLinkId); - - const { - data: [{ id: sumLinkId }], - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderLinkId, - to_id: paymentLinkId, - number: { data: { value: PRICE } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ sumLinkId }); - createdLinkIds.push(sumLinkId); - - const { - data: [{ id: objectLinkId }], - } = await deep.insert({ - type_id: Object, - from_id: paymentLinkId, - to_id: productLinkId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ objectLinkId }); - createdLinkIds.push(objectLinkId); - - const { - data: [{ id: payLinkId }], - } = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLinkId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ payLinkId }); - createdLinkIds.push(payLinkId); - - var urlLinkSelectQuery; - for (let i = 0; i < 10; i++) { - urlLinkSelectQuery = await deep.select({ - type_id: Url, - to_id: payLinkId, - }); - - if (urlLinkSelectQuery.data.length > 0) { - break; - } - - await sleep(1000); - } - - expect(urlLinkSelectQuery.data.length).to.greaterThan(0); - - createdLinkIds.push(urlLinkSelectQuery.data[0].id); - - const createdLinks = (await deep.select(createdLinkIds)).data; - console.log({ createdLinks }); - - console.log('testInit-end'); - - return { - createdLinks - } - }; - - const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testFinishAuthorize-start'); - const { createdLinks } = await testInit({ customerKey }); - - const urlLink = createdLinks.find(link => link.type_id === Url); - expect(urlLink).to.not.be.equal(undefined) - - const url = urlLink.value.value; - console.log({ url }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, - }); - - console.log({ createdLinks }); - - console.log('testFinishAuthorize-end'); - - return { - createdLinks - } - }; - - const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testConfirm-start'); - const { createdLinks } = await testFinishAuthorize({ customerKey }); - - const createdLinkIds = []; - - const payLink = createdLinks.find(link => link.type_id === Pay); - expect(payLink).to.not.be.equal(undefined); - - var payedLinkSelectQuery; - for (let i = 0; i < 10; i++) { - payedLinkSelectQuery = await deep.select({ - type_id: Payed, - to_id: payLink.id - }); - - if (payedLinkSelectQuery.data.length > 0) { - break; - } - - await sleep(1000); - } - - expect(payedLinkSelectQuery.data.length).to.greaterThan(0); - - createdLinkIds.push(payedLinkSelectQuery.data[0].id); - - createdLinks.push(...(await deep.select(createdLinkIds)).data); - - console.log({ createdLinks }); - - console.log('testConfirm-end'); - - return { - createdLinks - } - }; + const addResult = await addCustomer(newAddCustomerData); - /* - const testGetState = async () => { - console.log('testGetState-start'); - await testFinishAuthorize(); + expect(addResult.error).to.equal(undefined); - const { - data: [payLink], - } = await deep.select({ type_id: Pay }); + const removeResult = await removeCustomer(removeCustomerData); - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); + expect(removeResult.error).to.equal(undefined); - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - }; + console.log('testRemoveCustomer-end'); + }; - const getStateResult = await getState(getStateOptions); + await testInit(); + await testConfirm(); + await testGetState(); + await testGetCardList(); + await testResend(); + await testCharge(); + await testAddCustomer(); + await testGetCustomer(); + await testRemoveCustomer(); + }; + + const callIntegrationTests = async () => { + + const createdLinkIds = []; + + const { + data: [{ id: tinkoffProviderLinkId }], + } = await deep.insert({ + type_id: TinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ tinkoffProviderLinkId }); + createdLinkIds.push(tinkoffProviderLinkId); + + const { + data: [{ id: sumProviderLinkId }], + } = await deep.insert({ + type_id: SumProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ sumProviderLinkId }); + createdLinkIds.push(sumProviderLinkId); + + const { + data: [{ id: storageBusinessLinkId }], + } = await deep.insert({ + type_id: StorageBusiness, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ storageBusinessLinkId }); + createdLinkIds.push(storageBusinessLinkId); + + const { + data: [{ id: tokenLinkId }], + } = await deep.insert({ + type_id: Token, + from_id: storageBusinessLinkId, + to_id: storageBusinessLinkId, + string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ tokenLinkId }); + createdLinkIds.push(tokenLinkId); + + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ Product }); + createdLinkIds.push(Product); + + const { + data: [{ id: productLinkId }], + } = await deep.insert({ + type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ productLinkId }); + createdLinkIds.push(productLinkId); + + const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testInit-start'); + + const createdLinkIds = []; + + const { + data: [{ id: paymentLinkId }], + } = await deep.insert({ + type_id: Payment, + object: { data: { value: { orderId: uniqid() } } }, + from_id: deep.linkId, + to_id: storageBusinessLinkId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ paymentLinkId }); + createdLinkIds.push(paymentLinkId); + + const { + data: [{ id: sumLinkId }], + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderLinkId, + to_id: paymentLinkId, + number: { data: { value: PRICE } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ sumLinkId }); + createdLinkIds.push(sumLinkId); + + const { + data: [{ id: objectLinkId }], + } = await deep.insert({ + type_id: Object, + from_id: paymentLinkId, + to_id: productLinkId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ objectLinkId }); + createdLinkIds.push(objectLinkId); + + const { + data: [{ id: payLinkId }], + } = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumLinkId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ payLinkId }); + createdLinkIds.push(payLinkId); + + var urlLinkSelectQuery; + for (let i = 0; i < 10; i++) { + urlLinkSelectQuery = await deep.select({ + type_id: Url, + to_id: payLinkId, + }); + + if (urlLinkSelectQuery.data.length > 0) { + break; + } + + await sleep(1000); + } + + expect(urlLinkSelectQuery.data.length).to.greaterThan(0); + + createdLinkIds.push(urlLinkSelectQuery.data[0].id); + + const createdLinks = (await deep.select(createdLinkIds)).data; + console.log({ createdLinks }); + + console.log('testInit-end'); + + return { + createdLinks + } + }; + + const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testFinishAuthorize-start'); + const { createdLinks } = await testInit({ customerKey }); + + const urlLink = createdLinks.find(link => link.type_id === Url); + expect(urlLink).to.not.be.equal(undefined) + + const url = urlLink.value.value; + console.log({ url }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); + + console.log({ createdLinks }); + + console.log('testFinishAuthorize-end'); + + return { + createdLinks + } + }; + + const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testConfirm-start'); + const { createdLinks } = await testFinishAuthorize({ customerKey }); + + const createdLinkIds = []; + + const payLink = createdLinks.find(link => link.type_id === Pay); + expect(payLink).to.not.be.equal(undefined); + + var payedLinkSelectQuery; + for (let i = 0; i < 10; i++) { + payedLinkSelectQuery = await deep.select({ + type_id: Payed, + to_id: payLink.id + }); + + if (payedLinkSelectQuery.data.length > 0) { + break; + } + + await sleep(1000); + } + + expect(payedLinkSelectQuery.data.length).to.greaterThan(0); + + createdLinkIds.push(payedLinkSelectQuery.data[0].id); + + createdLinks.push(...(await deep.select(createdLinkIds)).data); + + console.log({ createdLinks }); - expect(getStateResult.error).to.equal(undefined); - console.log('testGetState-end'); - }; + console.log('testConfirm-end'); - const testGetCardList = async () => { - console.log('testGetCardList-end'); - await testFinishAuthorize(); + return { + createdLinks + } + }; - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; + /* + const testGetState = async () => { + console.log('testGetState-start'); + await testFinishAuthorize(); - const getCardListResult = await getCardList(getCardListOptions); + const { + data: [payLink], + } = await deep.select({ type_id: Pay }); - expect(getCardListResult.error).to.equal(undefined); - console.log('testGetCardList-end'); - }; - */ - { - const { createdLinks } = await testInit(); - await deep.delete(createdLinks.map((link) => link.id)); - } - { - const { createdLinks } = await testFinishAuthorize(); - await deep.delete(createdLinks.map((link) => link.id)); - } - { - const { createdLinks } = await testConfirm(); - await deep.delete(createdLinks.map((link) => link.id)); - } + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); - await deep.delete(createdLinkIds); + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.error).to.equal(undefined); + console.log('testGetState-end'); + }; + + const testGetCardList = async () => { + console.log('testGetCardList-end'); + await testFinishAuthorize(); - /*await testGetState(); - await testGetCardList();*/ - }; + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; - // await callRealizationTests(); - await callIntegrationTests(); - }; + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.error).to.equal(undefined); + console.log('testGetCardList-end'); + }; + */ + { + const { createdLinks } = await testInit(); + await deep.delete(createdLinks.map((link) => link.id)); + } + { + const { createdLinks } = await testFinishAuthorize(); + await deep.delete(createdLinks.map((link) => link.id)); + } + { + const { createdLinks } = await testConfirm(); + await deep.delete(createdLinks.map((link) => link.id)); + } + + await deep.delete(createdLinkIds); + + /*await testGetState(); + await testGetCardList();*/ + }; + + // await callRealizationTests(); + await callIntegrationTests(); + }; - await callTests(); + await callTests(); }; f(); From 2b39fa01dec1dd08310e8eceeb84b87f5badfe0d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 14:39:03 +0000 Subject: [PATCH 535/683] Use spaces, format --- payments-tinkoff-c2b.cjs | 3386 +++++++++++++++++++------------------- 1 file changed, 1693 insertions(+), 1693 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index c93c023d..50053483 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -7,8 +7,8 @@ const dotenvExpand = require('dotenv-expand'); const { generateApolloClient } = require('@deep-foundation/hasura/client'); const { DeepClient } = require('@deep-foundation/deeplinks/imports/client'); const { - minilinks, - Link, + minilinks, + Link, } = require('@deep-foundation/deeplinks/imports/minilinks'); const puppeteer = require('puppeteer'); const crypto = require('crypto'); @@ -17,7 +17,7 @@ const uniqid = require('uniqid'); const { expect } = require('chai'); const { get } = require('lodash'); const { - default: links, + default: links, } = require('@deep-foundation/deeplinks/imports/router/links'); var myEnv = dotenv.config(); @@ -29,921 +29,921 @@ const PRICE = 5500; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const payInBrowser = async ({ page, browser, url }) => { - await page.goto(url, { waitUntil: 'networkidle2' }); - await sleep(5000); - const oldForm = await page.evaluate(() => { - return !!document.querySelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - }); - if (oldForm) { - console.log('OLD FORM!!!!!!!'); - // Старая форма используется на тестовом сервере - const cvc1 = await page.evaluate(() => { - return !!document.querySelector( - 'button[automation-id="pay-card__submit"]' - ); - }); - if (cvc1) { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_TEST_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_TEST_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-card__submit"]'); // submit button - } else { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_E2C_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_E2C_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-wallet__submit"]'); // submit button - await sleep(300); - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(1000); - } - // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен - await sleep(1000); - } else { - console.log('NEW FORM!!!!!!!'); - await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number - await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date - await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code - await page.click('button[type=submit]'); // submit button - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(3000); - } - await browser.close(); + await page.goto(url, { waitUntil: 'networkidle2' }); + await sleep(5000); + const oldForm = await page.evaluate(() => { + return !!document.querySelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + }); + if (oldForm) { + console.log('OLD FORM!!!!!!!'); + // Старая форма используется на тестовом сервере + const cvc1 = await page.evaluate(() => { + return !!document.querySelector( + 'button[automation-id="pay-card__submit"]' + ); + }); + if (cvc1) { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_TEST_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_TEST_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-card__submit"]'); // submit button + } else { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_E2C_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_E2C_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-wallet__submit"]'); // submit button + await sleep(300); + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(1000); + } + // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен + await sleep(1000); + } else { + console.log('NEW FORM!!!!!!!'); + await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number + await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date + await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code + await page.click('button[type=submit]'); // submit button + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(3000); + } + await browser.close(); }; const f = async () => { - const apolloClient = generateApolloClient({ - path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE - ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') - ? false - : true, - // admin token in prealpha deep secret key - // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', - }); - - const unloginedDeep = new DeepClient({ apolloClient }); - - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - - const _generateToken = (dataWithPassword) => { - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => `${acc}${item}`, ''); - console.log({ dataString }); - const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - console.log({ hash }); - return hash; - }; - - const generateToken = (data) => { - const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { - ...restData, - Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, - }; - console.log({ dataWithPassword }); - return _generateToken(dataWithPassword); - }; - const generateTokenString = generateToken - .toString() - .replace( - 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', - `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` - ); - console.log({ generateTokenString }); - - const getUrl = (method) => - `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; - getUrlString = getUrl - .toString() - .replace( - '${process.env.PAYMENT_EACQ_AND_TEST_URL}', - process.env.PAYMENT_EACQ_AND_TEST_URL - ); - console.log({ getUrlString }); - - const getMarketUrl = (method) => - `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; - - const getState = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetState'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const checkOrder = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('CheckOrder'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCardList = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCardList'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode || '0'); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const init = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Init'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const resend = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Resend'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const charge = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Charge'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const addCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('AddCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const removeCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('RemoveCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getBankPaymentId = async (orderId) => { - const checkOrderOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: orderId, - }; - - const checkOrderResult = await checkOrder(checkOrderOptions); - expect(checkOrderResult.error).to.equal(undefined); - - console.log({ checkOrderResponse: checkOrderResult }); - - const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; - - console.log({ bankPaymentId }); - return bankPaymentId; - }; - - const guest = await unloginedDeep.guest(); - const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); - const admin = await guestDeep.login({ - linkId: await guestDeep.id('deep', 'admin'), - }); - const deep = new DeepClient({ deep: guestDeep, ...admin }); - - const User = await deep.id('@deep-foundation/core', 'User'); - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); - const Join = await deep.id('@deep-foundation/core', 'Join'); - const Contain = await deep.id('@deep-foundation/core', 'Contain'); - const Value = await deep.id('@deep-foundation/core', 'Value'); - const String = await deep.id('@deep-foundation/core', 'String'); - const Package = await deep.id('@deep-foundation/core', 'Package'); - - const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); - const dockerSupportsJs = await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ); - const Handler = await deep.id('@deep-foundation/core', 'Handler'); - const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); - const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); - - const Tree = await deep.id('@deep-foundation/core', 'Tree'); - const TreeIncludeNode = await deep.id( - '@deep-foundation/core', - 'TreeIncludeNode' - ); - const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); - const TreeIncludeDown = await deep.id( - '@deep-foundation/core', - 'TreeIncludeDown' - ); - - const Rule = await deep.id('@deep-foundation/core', 'Rule'); - const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); - const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); - const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); - const Selector = await deep.id('@deep-foundation/core', 'Selector'); - const SelectorInclude = await deep.id( - '@deep-foundation/core', - 'SelectorInclude' - ); - const SelectorExclude = await deep.id( - '@deep-foundation/core', - 'SelectorExclude' - ); - const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); - const containTree = await deep.id('@deep-foundation/core', 'containTree'); - const AllowInsertType = await deep.id( - '@deep-foundation/core', - 'AllowInsertType' - ); - const AllowDeleteType = await deep.id( - '@deep-foundation/core', - 'AllowDeleteType' - ); - const SelectorFilter = await deep.id( - '@deep-foundation/core', - 'SelectorFilter' - ); - const Query = await deep.id('@deep-foundation/core', 'Query'); - const usersId = await deep.id('deep', 'users'); - - const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); - const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); - const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); - const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); - const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); - const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); - const BaseError = await deep.id('@deep-foundation/payments', 'Error'); - const Storage = await deep.id('@deep-foundation/payments', 'Storage'); - - const { - data: [{ id: packageId }], - } = await deep.insert({ - type_id: Package, - string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - out: { - data: [ - { - type_id: Join, - to_id: await deep.id('deep', 'users', 'packages'), - }, - { - type_id: Join, - to_id: await deep.id('deep', 'admin'), - }, - ], - }, - }); - - console.log({ packageId }); - - const { - data: [{ id: SumProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'SumProvider' } }, - }, - }, - }); - - console.log({ SumProvider: SumProvider }); - - const { - data: [{ id: TinkoffProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'TinkoffProvider' } }, - }, - }, - }); - - console.log({ TinkoffProvider }); - - const { - data: [{ id: Payment }], - } = await deep.insert({ - type_id: BasePayment, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Payment' } }, - }, - }, - }); - - console.log({ Payment: Payment }); - - const { - data: [{ id: Object }], - } = await deep.insert({ - type_id: BaseObject, - from_id: Payment, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Object' } }, - }, - }, - }); - - console.log({ Object: Object }); - - const { - data: [{ id: Sum }], - } = await deep.insert({ - type_id: BaseSum, - from_id: SumProvider, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Sum' } }, - }, - }, - }); - - console.log({ Sum: Sum }); - - // TODO Rest restrictions - const { - data: [{ id: Pay }], - } = await deep.insert({ - type_id: BasePay, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Pay' } }, - }, - }, - }); - - console.log({ Pay: Pay }); - - const { - data: [{ id: Url }], - } = await deep.insert({ - type_id: BaseUrl, - from_id: TinkoffProvider, - to_id: Pay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Url' } }, - }, - }, - }); - - console.log({ Url: Url }); - - const { - data: [{ id: Payed }], - } = await deep.insert({ - type_id: BasePayed, - from_id: TinkoffProvider, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Payed' } }, - }, - }, - }); - - console.log({ Payed: Payed }); - - const { - data: [{ id: Error }], - } = await deep.insert({ - type_id: BaseError, - from_id: TinkoffProvider, - to_id: Pay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Error' } }, - }, - }, - }); - - console.log({ Error: Error }); - - const { - data: [{ id: paymentTreeId }], - } = await deep.insert({ - type_id: Tree, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'paymentTree' } }, - }, - }, - out: { - data: [ - { - type_id: TreeIncludeNode, - to_id: Payment, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Sum, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeDown, - to_id: Object, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Error, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Payed, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Pay, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - { - type_id: TreeIncludeUp, - to_id: Url, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }, - ], - }, - }); - - const { - data: [{ id: StorageBusiness }], - } = await deep.insert({ - type_id: Storage, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'StorageBusiness' } }, - }, - }, - }); - - const { - data: [{ id: Token }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Token' } }, - }, - }, - }); - - const { - data: [{ id: StorageClient }], - } = await deep.insert({ - type_id: Storage, - from_id: Payment, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'StorageClient' } }, - }, - }, - }); - - const { - data: [{ id: Title }], - } = await deep.insert({ - type_id: Type, - from_id: StorageClient, - to_id: SyncTextFile, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Title' } }, - }, - }, - }); - console.log({ Title }); - - const { - data: [{ id: Income }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Income' } }, - }, - }, - }); - console.log({ Income }); - - const handlersDependencies = ` + const apolloClient = generateApolloClient({ + path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE + ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') + ? false + : true, + // admin token in prealpha deep secret key + // token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWFsbG93ZWQtcm9sZXMiOlsibGluayJdLCJ4LWhhc3VyYS1kZWZhdWx0LXJvbGUiOiJsaW5rIiwieC1oYXN1cmEtdXNlci1pZCI6IjI2MiJ9LCJpYXQiOjE2NTYxMzYyMTl9.dmyWwtQu9GLdS7ClSLxcXgQiKxmaG-JPDjQVxRXOpxs', + }); + + const unloginedDeep = new DeepClient({ apolloClient }); + + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + + const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + console.log({ dataString }); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + console.log({ hash }); + return hash; + }; + + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + ...restData, + Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, + }; + console.log({ dataWithPassword }); + return _generateToken(dataWithPassword); + }; + const generateTokenString = generateToken + .toString() + .replace( + 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', + `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` + ); + console.log({ generateTokenString }); + + const getUrl = (method) => + `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; + getUrlString = getUrl + .toString() + .replace( + '${process.env.PAYMENT_EACQ_AND_TEST_URL}', + process.env.PAYMENT_EACQ_AND_TEST_URL + ); + console.log({ getUrlString }); + + const getMarketUrl = (method) => + `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; + + const getState = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetState'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const checkOrder = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('CheckOrder'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getCardList = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCardList'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode || '0'); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const init = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Init'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const resend = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Resend'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const charge = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Charge'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const addCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('AddCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const removeCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('RemoveCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const getBankPaymentId = async (orderId) => { + const checkOrderOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: orderId, + }; + + const checkOrderResult = await checkOrder(checkOrderOptions); + expect(checkOrderResult.error).to.equal(undefined); + + console.log({ checkOrderResponse: checkOrderResult }); + + const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; + + console.log({ bankPaymentId }); + return bankPaymentId; + }; + + const guest = await unloginedDeep.guest(); + const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); + const admin = await guestDeep.login({ + linkId: await guestDeep.id('deep', 'admin'), + }); + const deep = new DeepClient({ deep: guestDeep, ...admin }); + + const User = await deep.id('@deep-foundation/core', 'User'); + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + const Join = await deep.id('@deep-foundation/core', 'Join'); + const Contain = await deep.id('@deep-foundation/core', 'Contain'); + const Value = await deep.id('@deep-foundation/core', 'Value'); + const String = await deep.id('@deep-foundation/core', 'String'); + const Package = await deep.id('@deep-foundation/core', 'Package'); + + const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); + const dockerSupportsJs = await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ); + const Handler = await deep.id('@deep-foundation/core', 'Handler'); + const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); + const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); + + const Tree = await deep.id('@deep-foundation/core', 'Tree'); + const TreeIncludeNode = await deep.id( + '@deep-foundation/core', + 'TreeIncludeNode' + ); + const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); + const TreeIncludeDown = await deep.id( + '@deep-foundation/core', + 'TreeIncludeDown' + ); + + const Rule = await deep.id('@deep-foundation/core', 'Rule'); + const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); + const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); + const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); + const Selector = await deep.id('@deep-foundation/core', 'Selector'); + const SelectorInclude = await deep.id( + '@deep-foundation/core', + 'SelectorInclude' + ); + const SelectorExclude = await deep.id( + '@deep-foundation/core', + 'SelectorExclude' + ); + const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); + const containTree = await deep.id('@deep-foundation/core', 'containTree'); + const AllowInsertType = await deep.id( + '@deep-foundation/core', + 'AllowInsertType' + ); + const AllowDeleteType = await deep.id( + '@deep-foundation/core', + 'AllowDeleteType' + ); + const SelectorFilter = await deep.id( + '@deep-foundation/core', + 'SelectorFilter' + ); + const Query = await deep.id('@deep-foundation/core', 'Query'); + const usersId = await deep.id('deep', 'users'); + + const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); + const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); + const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); + const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); + const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); + const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); + const BaseError = await deep.id('@deep-foundation/payments', 'Error'); + const Storage = await deep.id('@deep-foundation/payments', 'Storage'); + + const { + data: [{ id: packageId }], + } = await deep.insert({ + type_id: Package, + string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + out: { + data: [ + { + type_id: Join, + to_id: await deep.id('deep', 'users', 'packages'), + }, + { + type_id: Join, + to_id: await deep.id('deep', 'admin'), + }, + ], + }, + }); + + console.log({ packageId }); + + const { + data: [{ id: SumProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'SumProvider' } }, + }, + }, + }); + + console.log({ SumProvider: SumProvider }); + + const { + data: [{ id: TinkoffProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'TinkoffProvider' } }, + }, + }, + }); + + console.log({ TinkoffProvider }); + + const { + data: [{ id: Payment }], + } = await deep.insert({ + type_id: BasePayment, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Payment' } }, + }, + }, + }); + + console.log({ Payment: Payment }); + + const { + data: [{ id: Object }], + } = await deep.insert({ + type_id: BaseObject, + from_id: Payment, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Object' } }, + }, + }, + }); + + console.log({ Object: Object }); + + const { + data: [{ id: Sum }], + } = await deep.insert({ + type_id: BaseSum, + from_id: SumProvider, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Sum' } }, + }, + }, + }); + + console.log({ Sum: Sum }); + + // TODO Rest restrictions + const { + data: [{ id: Pay }], + } = await deep.insert({ + type_id: BasePay, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Pay' } }, + }, + }, + }); + + console.log({ Pay: Pay }); + + const { + data: [{ id: Url }], + } = await deep.insert({ + type_id: BaseUrl, + from_id: TinkoffProvider, + to_id: Pay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Url' } }, + }, + }, + }); + + console.log({ Url: Url }); + + const { + data: [{ id: Payed }], + } = await deep.insert({ + type_id: BasePayed, + from_id: TinkoffProvider, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Payed' } }, + }, + }, + }); + + console.log({ Payed: Payed }); + + const { + data: [{ id: Error }], + } = await deep.insert({ + type_id: BaseError, + from_id: TinkoffProvider, + to_id: Pay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Error' } }, + }, + }, + }); + + console.log({ Error: Error }); + + const { + data: [{ id: paymentTreeId }], + } = await deep.insert({ + type_id: Tree, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'paymentTree' } }, + }, + }, + out: { + data: [ + { + type_id: TreeIncludeNode, + to_id: Payment, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Sum, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeDown, + to_id: Object, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Error, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Payed, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Pay, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + { + type_id: TreeIncludeUp, + to_id: Url, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }, + ], + }, + }); + + const { + data: [{ id: StorageBusiness }], + } = await deep.insert({ + type_id: Storage, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'StorageBusiness' } }, + }, + }, + }); + + const { + data: [{ id: Token }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Token' } }, + }, + }, + }); + + const { + data: [{ id: StorageClient }], + } = await deep.insert({ + type_id: Storage, + from_id: Payment, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'StorageClient' } }, + }, + }, + }); + + const { + data: [{ id: Title }], + } = await deep.insert({ + type_id: Type, + from_id: StorageClient, + to_id: SyncTextFile, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Title' } }, + }, + }, + }); + console.log({ Title }); + + const { + data: [{ id: Income }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Income' } }, + }, + }, + }); + console.log({ Income }); + + const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); const errorsConverter = ${JSON.stringify(errorsConverter)}; @@ -952,8 +952,8 @@ const f = async () => { const _generateToken = ${_generateToken.toString()}; const generateToken = ${generateTokenString}; `; - console.log({ handlersDependencies }); - const payInsertHandler = ` + console.log({ handlersDependencies }); + const payInsertHandler = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} @@ -1092,54 +1092,54 @@ async ({ deep, require, data: { newLink: payLink } }) => { }; `; - const { - data: [{ id: payInsertHandlerId }], - } = await deep.insert({ - type_id: SyncTextFile, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandlerFile' } }, - }, - { - from_id: dockerSupportsJs, - type_id: Handler, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandler' } }, - }, - { - type_id: HandleInsert, - from_id: Pay, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandle' } }, - }, - ], - }, - }, - ], - }, - }, - ], - }, - string: { - data: { - value: payInsertHandler, - }, - }, - }); - console.log({ payInsertHandlerId }); - - const tinkoffNotificationHandler = ` + const { + data: [{ id: payInsertHandlerId }], + } = await deep.insert({ + type_id: SyncTextFile, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandlerFile' } }, + }, + { + from_id: dockerSupportsJs, + type_id: Handler, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandler' } }, + }, + { + type_id: HandleInsert, + from_id: Pay, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandle' } }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + string: { + data: { + value: payInsertHandler, + }, + }, + }); + console.log({ payInsertHandlerId }); + + const tinkoffNotificationHandler = ` async ( req, res, @@ -1186,26 +1186,26 @@ async ( if (req.body.Status === 'AUTHORIZED') { - const confirm = ${confirm.toString()}; - - const storageBusinessLinkSelectQuery = await deep.select({ - id: paymentLink.to_id - }); - console.log({storageBusinessLinkSelectQuery}); - if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} - const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; - console.log({storageBusinessLinkId}); - - const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); - const tokenLinkSelectQuery = await deep.select({ - type_id: Token, - from_id: storageBusinessLinkId, - to_id: storageBusinessLinkId - }); - console.log({tokenLinkSelectQuery}); - if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} - const tokenLink = tokenLinkSelectQuery.data[0]; - console.log({tokenLink}); + const confirm = ${confirm.toString()}; + + const storageBusinessLinkSelectQuery = await deep.select({ + id: paymentLink.to_id + }); + console.log({storageBusinessLinkSelectQuery}); + if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} + const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; + console.log({storageBusinessLinkId}); + + const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); + const tokenLinkSelectQuery = await deep.select({ + type_id: Token, + from_id: storageBusinessLinkId, + to_id: storageBusinessLinkId + }); + console.log({tokenLinkSelectQuery}); + if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} + const tokenLink = tokenLinkSelectQuery.data[0]; + console.log({tokenLink}); const confirmOptions = { TerminalKey: tokenLink.value.value, @@ -1213,7 +1213,7 @@ async ( Amount: req.body.Amount, // Receipt: req.body.Receipt, }; - console.log({confirmOptions}); + console.log({confirmOptions}); const confirmResult = await confirm(confirmOptions); console.log({confirmResult}); @@ -1313,728 +1313,728 @@ async ( }; `; - await deep.insert( - { - type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { - data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, - }, - in: { - data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), - in: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'RouterStringUse' - ), - string: { - data: { - value: - process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, - }, - }, - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), - out: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'HandleRoute' - ), - to: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'Handler' - ), - from_id: await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ), - in: { - data: { - type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - to: { - data: { - type_id: SyncTextFile, - string: { - data: { - value: tinkoffNotificationHandler, - }, - }, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - } - ); - - const callTests = async () => { - console.log('callTests-start'); - - const callRealizationTests = async () => { - const testInit = async () => { - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - Amount: PRICE, - Description: 'Test shopping', - CustomerKey: deep.linkId, - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // }, - }; - - const initResult = await init(initOptions); - - expect(initResult.error).to.equal(undefined); - - return initResult; - }; - - const testConfirm = async () => { - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, - // Taxation: 'usn_income', - // }, - }; - - const initResult = await init(initOptions); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const confirmOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const confirmResult = await confirm(confirmOptions); - - expect(confirmResult.error).to.equal(undefined); - expect(confirmResult.response.Status).to.equal('CONFIRMED'); - - return confirmResult; - }; - - const testGetState = async () => { - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Amount: PRICE, - }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.error).to.equal(undefined); - }; - - const testGetCardList = async () => { - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - OrderId: uniqid(), - Amount: PRICE, - Recurrent: 'Y', - }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.error).to.equal(undefined); - }; - - const testResend = async () => { - console.log('testResend-start'); - const resendOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - }; - console.log({ resendOptions }); - - const resendResult = await resend(resendOptions); - console.log({ resendResult }); - - expect(resendResult.error).to.equal(undefined); - console.log('testResend-end'); - }; - - const testCharge = async () => { - console.log('testCharge-start'); - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Recurrent: 'Y', - }); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; + await deep.insert( + { + type_id: await deep.id('@deep-foundation/core', 'Port'), + number: { + data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, + }, + in: { + data: { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'RouterStringUse' + ), + string: { + data: { + value: + process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, + }, + }, + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + out: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'HandleRoute' + ), + to: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'Handler' + ), + from_id: await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ), + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + to: { + data: { + type_id: SyncTextFile, + string: { + data: { + value: tinkoffNotificationHandler, + }, + }, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + } + ); + + const callTests = async () => { + console.log('callTests-start'); + + const callRealizationTests = async () => { + const testInit = async () => { + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + Amount: PRICE, + Description: 'Test shopping', + CustomerKey: deep.linkId, + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENT_TEST_EMAIL, + Phone: process.env.PAYMENT_TEST_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: PRICE, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + expect(initResult.error).to.equal(undefined); + + return initResult; + }; + + const testConfirm = async () => { + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: PRICE, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENT_TEST_EMAIL, + // Phone: process.env.PAYMENT_TEST_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const confirmOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const confirmResult = await confirm(confirmOptions); + + expect(confirmResult.error).to.equal(undefined); + expect(confirmResult.response.Status).to.equal('CONFIRMED'); + + return confirmResult; + }; + + const testGetState = async () => { + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + Amount: PRICE, + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.error).to.equal(undefined); + }; + + const testGetCardList = async () => { + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + OrderId: uniqid(), + Amount: PRICE, + Recurrent: 'Y', + }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.error).to.equal(undefined); + }; + + const testResend = async () => { + console.log('testResend-start'); + const resendOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + }; + console.log({ resendOptions }); + + const resendResult = await resend(resendOptions); + console.log({ resendResult }); + + expect(resendResult.error).to.equal(undefined); + console.log('testResend-end'); + }; + + const testCharge = async () => { + console.log('testCharge-start'); + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + Recurrent: 'Y', + }); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.response[0].RebillId).to.have.length.above(0); + + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.response.Status).to.equal('AUTHORIZED'); + + const newInitResult = await init({ + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + }); + + const newChargeOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: newInitResult.response.PaymentId, + RebillId: Number(getCardListResult.response[0].RebillId), + }; + + const chargeResult = await charge(newChargeOptions); + + expect(chargeResult.error).to.equal(undefined); + console.log('testCharge-end'); + }; + + const testAddCustomer = async () => { + console.log('testAddCustomer-start'); + + const addCustomerOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + console.log({ addCustomerOptions }); + + const addCustomerResult = await addCustomer(addCustomerOptions); + console.log({ addCustomerResult }); + + expect(addCustomerResult.error).to.equal(undefined); + console.log('testAddCustomer-end'); + }; + + const testGetCustomer = async () => { + console.log('testGetCustomer-start'); + + const customerOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + + const addCustomerDataOptions = { + ...customerOptions, + Phone: process.env.PAYMENT_TEST_PHONE, + }; + + const addResult = await addCustomer(addCustomerDataOptions); + + expect(addResult.error).to.equal(undefined); + + const getResult = await getCustomer(customerOptions); + + expect(getResult.error).to.equal(undefined); + expect(getResult.response.Phone).to.equal( + process.env.PAYMENT_TEST_PHONE + ); + + console.log('testGetCustomer-end'); + }; + + const testRemoveCustomer = async () => { + console.log('testRemoveCustomer-start'); + + const removeCustomerData = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + + const newAddCustomerData = { + ...removeCustomerData, + Phone: process.env.PAYMENT_TEST_PHONE, + }; + + const addResult = await addCustomer(newAddCustomerData); + + expect(addResult.error).to.equal(undefined); + + const removeResult = await removeCustomer(removeCustomerData); + + expect(removeResult.error).to.equal(undefined); + + console.log('testRemoveCustomer-end'); + }; + + await testInit(); + await testConfirm(); + await testGetState(); + await testGetCardList(); + await testResend(); + await testCharge(); + await testAddCustomer(); + await testGetCustomer(); + await testRemoveCustomer(); + }; + + const callIntegrationTests = async () => { + + const createdLinkIds = []; + + const { + data: [{ id: tinkoffProviderLinkId }], + } = await deep.insert({ + type_id: TinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ tinkoffProviderLinkId }); + createdLinkIds.push(tinkoffProviderLinkId); + + const { + data: [{ id: sumProviderLinkId }], + } = await deep.insert({ + type_id: SumProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ sumProviderLinkId }); + createdLinkIds.push(sumProviderLinkId); + + const { + data: [{ id: storageBusinessLinkId }], + } = await deep.insert({ + type_id: StorageBusiness, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ storageBusinessLinkId }); + createdLinkIds.push(storageBusinessLinkId); + + const { + data: [{ id: tokenLinkId }], + } = await deep.insert({ + type_id: Token, + from_id: storageBusinessLinkId, + to_id: storageBusinessLinkId, + string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ tokenLinkId }); + createdLinkIds.push(tokenLinkId); + + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ Product }); + createdLinkIds.push(Product); + + const { + data: [{ id: productLinkId }], + } = await deep.insert({ + type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ productLinkId }); + createdLinkIds.push(productLinkId); + + const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testInit-start'); + + const createdLinkIds = []; + + const { + data: [{ id: paymentLinkId }], + } = await deep.insert({ + type_id: Payment, + object: { data: { value: { orderId: uniqid() } } }, + from_id: deep.linkId, + to_id: storageBusinessLinkId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ paymentLinkId }); + createdLinkIds.push(paymentLinkId); + + const { + data: [{ id: sumLinkId }], + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderLinkId, + to_id: paymentLinkId, + number: { data: { value: PRICE } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ sumLinkId }); + createdLinkIds.push(sumLinkId); + + const { + data: [{ id: objectLinkId }], + } = await deep.insert({ + type_id: Object, + from_id: paymentLinkId, + to_id: productLinkId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ objectLinkId }); + createdLinkIds.push(objectLinkId); + + const { + data: [{ id: payLinkId }], + } = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumLinkId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ payLinkId }); + createdLinkIds.push(payLinkId); + + var urlLinkSelectQuery; + for (let i = 0; i < 10; i++) { + urlLinkSelectQuery = await deep.select({ + type_id: Url, + to_id: payLinkId, + }); + + if (urlLinkSelectQuery.data.length > 0) { + break; + } + + await sleep(1000); + } + + expect(urlLinkSelectQuery.data.length).to.greaterThan(0); + + createdLinkIds.push(urlLinkSelectQuery.data[0].id); + + const createdLinks = (await deep.select(createdLinkIds)).data; + console.log({ createdLinks }); + + console.log('testInit-end'); + + return { + createdLinks + } + }; - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.response[0].RebillId).to.have.length.above(0); - - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.response.Status).to.equal('AUTHORIZED'); - - const newInitResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - }); - - const newChargeOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: newInitResult.response.PaymentId, - RebillId: Number(getCardListResult.response[0].RebillId), - }; - - const chargeResult = await charge(newChargeOptions); - - expect(chargeResult.error).to.equal(undefined); - console.log('testCharge-end'); - }; - - const testAddCustomer = async () => { - console.log('testAddCustomer-start'); - - const addCustomerOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - console.log({ addCustomerOptions }); - - const addCustomerResult = await addCustomer(addCustomerOptions); - console.log({ addCustomerResult }); - - expect(addCustomerResult.error).to.equal(undefined); - console.log('testAddCustomer-end'); - }; - - const testGetCustomer = async () => { - console.log('testGetCustomer-start'); - - const customerOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - - const addCustomerDataOptions = { - ...customerOptions, - Phone: process.env.PAYMENT_TEST_PHONE, - }; - - const addResult = await addCustomer(addCustomerDataOptions); - - expect(addResult.error).to.equal(undefined); - - const getResult = await getCustomer(customerOptions); - - expect(getResult.error).to.equal(undefined); - expect(getResult.response.Phone).to.equal( - process.env.PAYMENT_TEST_PHONE - ); - - console.log('testGetCustomer-end'); - }; - - const testRemoveCustomer = async () => { - console.log('testRemoveCustomer-start'); - - const removeCustomerData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - - const newAddCustomerData = { - ...removeCustomerData, - Phone: process.env.PAYMENT_TEST_PHONE, - }; - - const addResult = await addCustomer(newAddCustomerData); - - expect(addResult.error).to.equal(undefined); - - const removeResult = await removeCustomer(removeCustomerData); - - expect(removeResult.error).to.equal(undefined); - - console.log('testRemoveCustomer-end'); - }; - - await testInit(); - await testConfirm(); - await testGetState(); - await testGetCardList(); - await testResend(); - await testCharge(); - await testAddCustomer(); - await testGetCustomer(); - await testRemoveCustomer(); - }; - - const callIntegrationTests = async () => { - - const createdLinkIds = []; - - const { - data: [{ id: tinkoffProviderLinkId }], - } = await deep.insert({ - type_id: TinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tinkoffProviderLinkId }); - createdLinkIds.push(tinkoffProviderLinkId); - - const { - data: [{ id: sumProviderLinkId }], - } = await deep.insert({ - type_id: SumProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ sumProviderLinkId }); - createdLinkIds.push(sumProviderLinkId); - - const { - data: [{ id: storageBusinessLinkId }], - } = await deep.insert({ - type_id: StorageBusiness, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ storageBusinessLinkId }); - createdLinkIds.push(storageBusinessLinkId); - - const { - data: [{ id: tokenLinkId }], - } = await deep.insert({ - type_id: Token, - from_id: storageBusinessLinkId, - to_id: storageBusinessLinkId, - string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tokenLinkId }); - createdLinkIds.push(tokenLinkId); - - const { - data: [{ id: Product }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ Product }); - createdLinkIds.push(Product); - - const { - data: [{ id: productLinkId }], - } = await deep.insert({ - type_id: Product, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ productLinkId }); - createdLinkIds.push(productLinkId); - - const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testInit-start'); - - const createdLinkIds = []; - - const { - data: [{ id: paymentLinkId }], - } = await deep.insert({ - type_id: Payment, - object: { data: { value: { orderId: uniqid() } } }, - from_id: deep.linkId, - to_id: storageBusinessLinkId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ paymentLinkId }); - createdLinkIds.push(paymentLinkId); - - const { - data: [{ id: sumLinkId }], - } = await deep.insert({ - type_id: Sum, - from_id: sumProviderLinkId, - to_id: paymentLinkId, - number: { data: { value: PRICE } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ sumLinkId }); - createdLinkIds.push(sumLinkId); - - const { - data: [{ id: objectLinkId }], - } = await deep.insert({ - type_id: Object, - from_id: paymentLinkId, - to_id: productLinkId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ objectLinkId }); - createdLinkIds.push(objectLinkId); - - const { - data: [{ id: payLinkId }], - } = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLinkId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ payLinkId }); - createdLinkIds.push(payLinkId); - - var urlLinkSelectQuery; - for (let i = 0; i < 10; i++) { - urlLinkSelectQuery = await deep.select({ - type_id: Url, - to_id: payLinkId, - }); - - if (urlLinkSelectQuery.data.length > 0) { - break; - } - - await sleep(1000); - } - - expect(urlLinkSelectQuery.data.length).to.greaterThan(0); - - createdLinkIds.push(urlLinkSelectQuery.data[0].id); - - const createdLinks = (await deep.select(createdLinkIds)).data; - console.log({ createdLinks }); - - console.log('testInit-end'); - - return { - createdLinks - } - }; - - const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testFinishAuthorize-start'); - const { createdLinks } = await testInit({ customerKey }); - - const urlLink = createdLinks.find(link => link.type_id === Url); - expect(urlLink).to.not.be.equal(undefined) - - const url = urlLink.value.value; - console.log({ url }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, - }); - - console.log({ createdLinks }); - - console.log('testFinishAuthorize-end'); - - return { - createdLinks - } - }; - - const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testConfirm-start'); - const { createdLinks } = await testFinishAuthorize({ customerKey }); - - const createdLinkIds = []; - - const payLink = createdLinks.find(link => link.type_id === Pay); - expect(payLink).to.not.be.equal(undefined); - - var payedLinkSelectQuery; - for (let i = 0; i < 10; i++) { - payedLinkSelectQuery = await deep.select({ - type_id: Payed, - to_id: payLink.id - }); - - if (payedLinkSelectQuery.data.length > 0) { - break; - } - - await sleep(1000); - } - - expect(payedLinkSelectQuery.data.length).to.greaterThan(0); - - createdLinkIds.push(payedLinkSelectQuery.data[0].id); - - createdLinks.push(...(await deep.select(createdLinkIds)).data); - - console.log({ createdLinks }); - - console.log('testConfirm-end'); - - return { - createdLinks - } - }; + const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testFinishAuthorize-start'); + const { createdLinks } = await testInit({ customerKey }); - /* - const testGetState = async () => { - console.log('testGetState-start'); - await testFinishAuthorize(); + const urlLink = createdLinks.find(link => link.type_id === Url); + expect(urlLink).to.not.be.equal(undefined) - const { - data: [payLink], - } = await deep.select({ type_id: Pay }); + const url = urlLink.value.value; + console.log({ url }); - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); - const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - PaymentId: bankPaymentId, - }; + console.log({ createdLinks }); - const getStateResult = await getState(getStateOptions); + console.log('testFinishAuthorize-end'); - expect(getStateResult.error).to.equal(undefined); - console.log('testGetState-end'); - }; + return { + createdLinks + } + }; - const testGetCardList = async () => { - console.log('testGetCardList-end'); - await testFinishAuthorize(); + const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testConfirm-start'); + const { createdLinks } = await testFinishAuthorize({ customerKey }); - const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; + const createdLinkIds = []; - const getCardListResult = await getCardList(getCardListOptions); + const payLink = createdLinks.find(link => link.type_id === Pay); + expect(payLink).to.not.be.equal(undefined); - expect(getCardListResult.error).to.equal(undefined); - console.log('testGetCardList-end'); - }; - */ - { - const { createdLinks } = await testInit(); - await deep.delete(createdLinks.map((link) => link.id)); - } - { - const { createdLinks } = await testFinishAuthorize(); - await deep.delete(createdLinks.map((link) => link.id)); - } - { - const { createdLinks } = await testConfirm(); - await deep.delete(createdLinks.map((link) => link.id)); - } + var payedLinkSelectQuery; + for (let i = 0; i < 10; i++) { + payedLinkSelectQuery = await deep.select({ + type_id: Payed, + to_id: payLink.id + }); - await deep.delete(createdLinkIds); + if (payedLinkSelectQuery.data.length > 0) { + break; + } - /*await testGetState(); - await testGetCardList();*/ - }; + await sleep(1000); + } - // await callRealizationTests(); - await callIntegrationTests(); - }; + expect(payedLinkSelectQuery.data.length).to.greaterThan(0); + + createdLinkIds.push(payedLinkSelectQuery.data[0].id); + + createdLinks.push(...(await deep.select(createdLinkIds)).data); + + console.log({ createdLinks }); + + console.log('testConfirm-end'); + + return { + createdLinks + } + }; + + /* + const testGetState = async () => { + console.log('testGetState-start'); + await testFinishAuthorize(); + + const { + data: [payLink], + } = await deep.select({ type_id: Pay }); + + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); + + const getStateOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + PaymentId: bankPaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.error).to.equal(undefined); + console.log('testGetState-end'); + }; + + const testGetCardList = async () => { + console.log('testGetCardList-end'); + await testFinishAuthorize(); + + const getCardListOptions = { + TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.error).to.equal(undefined); + console.log('testGetCardList-end'); + }; + */ + { + const { createdLinks } = await testInit(); + await deep.delete(createdLinks.map((link) => link.id)); + } + { + const { createdLinks } = await testFinishAuthorize(); + await deep.delete(createdLinks.map((link) => link.id)); + } + { + const { createdLinks } = await testConfirm(); + await deep.delete(createdLinks.map((link) => link.id)); + } + + await deep.delete(createdLinkIds); + + /*await testGetState(); + await testGetCardList();*/ + }; + + // await callRealizationTests(); + await callIntegrationTests(); + }; - await callTests(); + await callTests(); }; f(); From 53e8b6526c56c7a16591533f9423d89ffa640c79 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 15:43:42 +0000 Subject: [PATCH 536/683] Update envs --- payments-tinkoff-c2b-cancelling.cjs | 75 +++++++++++++++-------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index e035b3c0..4ba760ac 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -49,21 +49,21 @@ const payInBrowser = async ({ page, browser, url }) => { await sleep(300); await page.type( 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS + process.env.PAYMENTS_C2B_CARD_NUMBER_SUCCESS ); // card number await sleep(300); await page.keyboard.press('Tab'); await sleep(300); await page.type( 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_TEST_CARD_EXPDATE + process.env.PAYMENTS_C2B_CARD_EXPDATE ); // expired date await sleep(300); await page.keyboard.press('Tab'); await sleep(300); await page.type( 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_TEST_CARD_CVC + process.env.PAYMENTS_C2B_CARD_CVC ); // CVC code await sleep(300); await page.click('button[automation-id="pay-card__submit"]'); // submit button @@ -203,24 +203,24 @@ const f = async () => { const { Receipt, DATA, Shops, ...restData } = data; const dataWithPassword = { ...restData, - Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, + Password: process.env.PAYMENTS_C2B_TERMINAL_PASSWORD, }; console.log({ dataWithPassword }); return _generateToken(dataWithPassword); }; const generateTokenString = generateToken.toString() .replace( - 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', - `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` + 'process.env.PAYMENTS_C2B_TERMINAL_PASSWORD', + `"${process.env.PAYMENTS_C2B_TERMINAL_PASSWORD}"` ); console.log({ generateTokenString }); const getUrl = (method) => - `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; + `${process.env.PAYMENTS_C2B_URL}/${method}`; getUrlString = getUrl.toString() .replace( - '${process.env.PAYMENT_EACQ_AND_TEST_URL}', - process.env.PAYMENT_EACQ_AND_TEST_URL + '${process.env.PAYMENTS_C2B_URL}', + process.env.PAYMENTS_C2B_URL ); console.log({ getUrlString }); @@ -782,9 +782,10 @@ async ({ deep, require, data: { newLink: payLink } }) => { await deep.insert({link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value}, {table: "objects"}); const cancelOptions = { - TerminalKey: "${process.env.PAYMENT_TEST_TERMINAL_KEY}", + TerminalKey: "${process.env.PAYMENTS_C2B_TERMINAL_KEY}", PaymentId: cancelledPaymentLink.value.value.bankPaymentId, Amount: sumLink.value.value, + NotificationURL: "${process.env.PAYMENTS_C2B_CANCELLING_NOTIFICATION_URL}", }; console.log({ cancelOptions }); @@ -935,7 +936,7 @@ async ( { type_id: await deep.id('@deep-foundation/core', 'Port'), number: { - data: { value: /*process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT */ 5238 }, + data: { value: process.env.PAYMENTS_C2B_CANCELLING_NOTIFICATION_PORT }, }, in: { data: { @@ -952,7 +953,7 @@ async ( string: { data: { value: - process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, + process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, }, }, from: { @@ -1031,7 +1032,7 @@ async ( const callRealizationTests = async () => { const testInit = async () => { const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, OrderId: uniqid(), Amount: PRICE, Description: 'Test shopping', @@ -1039,8 +1040,8 @@ async ( Language: 'ru', Recurrent: 'Y', DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, + Email: process.env.PAYMENTS_C2B_EMAIL, + Phone: process.env.PAYMENTS_C2B_PHONE, }, // Receipt: { // Items: [{ @@ -1052,8 +1053,8 @@ async ( // PaymentObject: 'service', // Tax: 'none', // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, + // Email: process.env.PAYMENTS_C2B_EMAIL, + // Phone: process.env.PAYMENTS_C2B_PHONE, // Taxation: 'usn_income', // }, }; @@ -1070,7 +1071,7 @@ async ( const page = await browser.newPage(); const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, Amount: PRICE, OrderId: uniqid(), CustomerKey: deep.linkId, @@ -1085,8 +1086,8 @@ async ( // PaymentObject: 'service', // Tax: 'none', // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, + // Email: process.env.PAYMENTS_C2B_EMAIL, + // Phone: process.env.PAYMENTS_C2B_PHONE, // Taxation: 'usn_income', // }, }; @@ -1100,7 +1101,7 @@ async ( }); const confirmOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, PaymentId: initResult.response.PaymentId, }; @@ -1117,7 +1118,7 @@ async ( const testCancelAfterPayBeforeConfirmFullPrice = async () => { console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, OrderId: uniqid(), CustomerKey: deep.linkId, PayType: 'T', @@ -1126,8 +1127,8 @@ async ( Language: 'ru', Recurrent: 'Y', DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, + Email: process.env.PAYMENTS_C2B_EMAIL, + Phone: process.env.PAYMENTS_C2B_PHONE, }, // Receipt: { // Items: [{ @@ -1139,8 +1140,8 @@ async ( // PaymentObject: 'service', // Tax: 'none', // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, + // Email: process.env.PAYMENTS_C2B_EMAIL, + // Phone: process.env.PAYMENTS_C2B_PHONE, // Taxation: 'usn_income', // } }; @@ -1167,7 +1168,7 @@ async ( const bankPaymentId = initResult.response.PaymentId; const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: PRICE, }; @@ -1186,7 +1187,7 @@ async ( const testCancelAfterPayBeforeConfirmCustomPriceX2 = async () => { console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-start'); const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, OrderId: uniqid(), CustomerKey: deep.linkId, PayType: 'T', @@ -1195,8 +1196,8 @@ async ( Language: 'ru', Recurrent: 'Y', DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, + Email: process.env.PAYMENTS_C2B_EMAIL, + Phone: process.env.PAYMENTS_C2B_PHONE, }, // Receipt: { // Items: [{ @@ -1208,8 +1209,8 @@ async ( // PaymentObject: 'service', // Tax: 'none', // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, + // Email: process.env.PAYMENTS_C2B_EMAIL, + // Phone: process.env.PAYMENTS_C2B_PHONE, // Taxation: 'usn_income', // } }; @@ -1235,7 +1236,7 @@ async ( const bankPaymentId = initResult.response.PaymentId; const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: Math.floor(PRICE / 3), }; @@ -1270,7 +1271,7 @@ async ( console.log({ bankPaymentId }); const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: PRICE, }; @@ -1290,7 +1291,7 @@ async ( const bankPaymentId = confirmResult.response.PaymentId; const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: Math.floor(PRICE / 3), }; @@ -1319,7 +1320,7 @@ async ( const bankPaymentId = initResult.response.PaymentId;; const cancelOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, PaymentId: bankPaymentId, Amount: PRICE, }; @@ -1404,7 +1405,7 @@ async ( type_id: Token, from_id: storageBusinessLinkId, to_id: storageBusinessLinkId, - string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, + string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, in: { data: [ { From 1df55bc59ab975aa362554965094bb3eb79f78c9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 15:44:01 +0000 Subject: [PATCH 537/683] Update envs --- payments-tinkoff-c2b.cjs | 90 ++++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 4f75f703..31ddaac4 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -51,21 +51,21 @@ const payInBrowser = async ({ page, browser, url }) => { await sleep(300); await page.type( 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_TEST_CARD_NUMBER_SUCCESS + process.env.PAYMENTS_C2B_CARD_NUMBER_SUCCESS ); // card number await sleep(300); await page.keyboard.press('Tab'); await sleep(300); await page.type( 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_TEST_CARD_EXPDATE + process.env.PAYMENTS_C2B_CARD_EXPDATE ); // expired date await sleep(300); await page.keyboard.press('Tab'); await sleep(300); await page.type( 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_TEST_CARD_CVC + process.env.PAYMENTS_C2B_CARD_CVC ); // CVC code await sleep(300); await page.click('button[automation-id="pay-card__submit"]'); // submit button @@ -205,7 +205,7 @@ const f = async () => { const { Receipt, DATA, Shops, ...restData } = data; const dataWithPassword = { ...restData, - Password: process.env.PAYMENT_TEST_TERMINAL_PASSWORD, + Password: process.env.PAYMENTS_C2B_TERMINAL_PASSWORD, }; console.log({ dataWithPassword }); return _generateToken(dataWithPassword); @@ -213,18 +213,18 @@ const f = async () => { const generateTokenString = generateToken .toString() .replace( - 'process.env.PAYMENT_TEST_TERMINAL_PASSWORD', - `"${process.env.PAYMENT_TEST_TERMINAL_PASSWORD}"` + 'process.env.PAYMENTS_C2B_TERMINAL_PASSWORD', + `"${process.env.PAYMENTS_C2B_TERMINAL_PASSWORD}"` ); console.log({ generateTokenString }); const getUrl = (method) => - `${process.env.PAYMENT_EACQ_AND_TEST_URL}/${method}`; + `${process.env.PAYMENTS_C2B_URL}/${method}`; getUrlString = getUrl .toString() .replace( - '${process.env.PAYMENT_EACQ_AND_TEST_URL}', - process.env.PAYMENT_EACQ_AND_TEST_URL + '${process.env.PAYMENTS_C2B_URL}', + process.env.PAYMENTS_C2B_URL ); console.log({ getUrlString }); @@ -494,7 +494,7 @@ const f = async () => { const getBankPaymentId = async (orderId) => { const checkOrderOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, OrderId: orderId, }; @@ -1015,15 +1015,15 @@ async ({ deep, require, data: { newLink: payLink } }) => { TerminalKey: tokenLink.value.value, OrderId: paymentLink?.value?.value.orderId ?? paymentLink.id, CustomerKey: deep.linkId, - NotificationURL: "${process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_URL}", + NotificationURL: "${process.env.PAYMENTS_C2B_NOTIFICATION_URL}", PayType: 'T', Amount: ${PRICE}, Description: 'Test shopping', Language: 'ru', Recurrent: 'Y', DATA: { - Email: "${process.env.PAYMENT_TEST_EMAIL}", - Phone: "${process.env.PAYMENT_TEST_PHONE}", + Email: "${process.env.PAYMENTS_C2B_EMAIL}", + Phone: "${process.env.PAYMENTS_C2B_PHONE}", }, // Receipt: { // Items: [{ @@ -1035,8 +1035,8 @@ async ({ deep, require, data: { newLink: payLink } }) => { // PaymentObject: 'service', // Tax: 'none', // }], - // Email: "${process.env.PAYMENT_TEST_EMAIL}", - // Phone: "${process.env.PAYMENT_TEST_PHONE}", + // Email: "${process.env.PAYMENTS_C2B_EMAIL}", + // Phone: "${process.env.PAYMENTS_C2B_PHONE}", // Taxation: 'usn_income', // } }; @@ -1257,7 +1257,7 @@ async ( { type_id: await deep.id('@deep-foundation/core', 'Port'), number: { - data: { value: process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_PORT }, + data: { value: process.env.PAYMENTS_C2B_NOTIFICATION_PORT }, }, in: { data: { @@ -1274,7 +1274,7 @@ async ( string: { data: { value: - process.env.PAYMENT_EACQ_AND_TEST_NOTIFICATION_ROUTE, + process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, }, }, from: { @@ -1353,7 +1353,7 @@ async ( const callRealizationTests = async () => { const testInit = async () => { const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, OrderId: uniqid(), Amount: PRICE, Description: 'Test shopping', @@ -1361,8 +1361,8 @@ async ( Language: 'ru', Recurrent: 'Y', DATA: { - Email: process.env.PAYMENT_TEST_EMAIL, - Phone: process.env.PAYMENT_TEST_PHONE, + Email: process.env.PAYMENTS_C2B_EMAIL, + Phone: process.env.PAYMENTS_C2B_PHONE, }, // Receipt: { // Items: [{ @@ -1374,8 +1374,8 @@ async ( // PaymentObject: 'service', // Tax: 'none', // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, + // Email: process.env.PAYMENTS_C2B_EMAIL, + // Phone: process.env.PAYMENTS_C2B_PHONE, // Taxation: 'usn_income', // }, }; @@ -1392,7 +1392,7 @@ async ( const page = await browser.newPage(); const initOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, Amount: PRICE, OrderId: uniqid(), CustomerKey: deep.linkId, @@ -1407,8 +1407,8 @@ async ( // PaymentObject: 'service', // Tax: 'none', // }], - // Email: process.env.PAYMENT_TEST_EMAIL, - // Phone: process.env.PAYMENT_TEST_PHONE, + // Email: process.env.PAYMENTS_C2B_EMAIL, + // Phone: process.env.PAYMENTS_C2B_PHONE, // Taxation: 'usn_income', // }, }; @@ -1422,7 +1422,7 @@ async ( }); const confirmOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, PaymentId: initResult.response.PaymentId, }; @@ -1436,7 +1436,7 @@ async ( const testGetState = async () => { const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, OrderId: uniqid(), CustomerKey: deep.linkId, Amount: PRICE, @@ -1451,7 +1451,7 @@ async ( }); const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, PaymentId: initResult.response.PaymentId, }; @@ -1462,7 +1462,7 @@ async ( const testGetCardList = async () => { const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, CustomerKey: deep.linkId, OrderId: uniqid(), Amount: PRICE, @@ -1478,7 +1478,7 @@ async ( }); const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, CustomerKey: deep.linkId, }; @@ -1490,7 +1490,7 @@ async ( const testResend = async () => { console.log('testResend-start'); const resendOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, }; console.log({ resendOptions }); @@ -1507,7 +1507,7 @@ async ( const page = await browser.newPage(); const initResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, Amount: PRICE, OrderId: uniqid(), CustomerKey: deep.linkId, @@ -1521,7 +1521,7 @@ async ( }); const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, CustomerKey: deep.linkId, }; @@ -1530,7 +1530,7 @@ async ( expect(getCardListResult.response[0].RebillId).to.have.length.above(0); const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, PaymentId: initResult.response.PaymentId, }; @@ -1539,14 +1539,14 @@ async ( expect(getStateResult.response.Status).to.equal('AUTHORIZED'); const newInitResult = await init({ - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, Amount: PRICE, OrderId: uniqid(), CustomerKey: deep.linkId, }); const newChargeOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, PaymentId: newInitResult.response.PaymentId, RebillId: Number(getCardListResult.response[0].RebillId), }; @@ -1561,7 +1561,7 @@ async ( console.log('testAddCustomer-start'); const addCustomerOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, CustomerKey: uniqid(), }; console.log({ addCustomerOptions }); @@ -1577,13 +1577,13 @@ async ( console.log('testGetCustomer-start'); const customerOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, CustomerKey: uniqid(), }; const addCustomerDataOptions = { ...customerOptions, - Phone: process.env.PAYMENT_TEST_PHONE, + Phone: process.env.PAYMENTS_C2B_PHONE, }; const addResult = await addCustomer(addCustomerDataOptions); @@ -1594,7 +1594,7 @@ async ( expect(getResult.error).to.equal(undefined); expect(getResult.response.Phone).to.equal( - process.env.PAYMENT_TEST_PHONE + process.env.PAYMENTS_C2B_PHONE ); console.log('testGetCustomer-end'); @@ -1604,13 +1604,13 @@ async ( console.log('testRemoveCustomer-start'); const removeCustomerData = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, CustomerKey: uniqid(), }; const newAddCustomerData = { ...removeCustomerData, - Phone: process.env.PAYMENT_TEST_PHONE, + Phone: process.env.PAYMENTS_C2B_PHONE, }; const addResult = await addCustomer(newAddCustomerData); @@ -1693,7 +1693,7 @@ async ( type_id: Token, from_id: storageBusinessLinkId, to_id: storageBusinessLinkId, - string: { data: { value: process.env.PAYMENT_TEST_TERMINAL_KEY } }, + string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, in: { data: [ { @@ -1926,7 +1926,7 @@ async ( ); const getStateOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, PaymentId: bankPaymentId, }; @@ -1941,7 +1941,7 @@ async ( await testFinishAuthorize(); const getCardListOptions = { - TerminalKey: process.env.PAYMENT_TEST_TERMINAL_KEY, + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, CustomerKey: deep.linkId, }; From 20e6f789ee7182e840c325d5ec8f1680b105ae07 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 15:59:28 +0000 Subject: [PATCH 538/683] Insert storage client only if is not created --- payments-tinkoff-c2b.cjs | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 31ddaac4..0cbc688f 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1222,13 +1222,24 @@ async ( console.log({payedLinkId}); const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - const storageClientLinkInsertQuery = await deep.insert({ + const storageClientLinkSelectQuery = await deep.select({ type_id: StorageClient, - number: {data: {value: req.body.CardId}}, + number: {value: req.body.CardId} }); - console.log({storageClientLinkInsertQuery}); - if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} - const storageClientLinkId = storageClientLinkInsertQuery.data[0].id; + console.log({storageClientLinkSelectQuery}); + if(storageClientLinkSelectQuery.error) {throw new Error(storageClientLinkSelectQuery.error.message);} + + if(storageClientLinkSelectQuery.data.length > 0) { + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + const storageClientLinkInsertQuery = await deep.insert({ + type_id: StorageClient, + number: {data: {value: req.body.CardId}}, + }); + console.log({storageClientLinkInsertQuery}); + if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} + const storageClientLinkId = storageClientLinkInsertQuery.data[0].id; + } + const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); const titleLinkInsertQuery = await deep.insert({ From 2ea866ef3c26d51a39c0d8b4018204ee29090de8 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 15:59:51 +0000 Subject: [PATCH 539/683] Create Title only if is not created --- payments-tinkoff-c2b.cjs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 0cbc688f..62f1a48f 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1238,17 +1238,16 @@ async ( console.log({storageClientLinkInsertQuery}); if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} const storageClientLinkId = storageClientLinkInsertQuery.data[0].id; - } - - const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); - const titleLinkInsertQuery = await deep.insert({ - type_id: Title, - string: {data: {value: req.body.Pan}}, - }); - if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} - const titleLinkId = titleLinkInsertQuery.data[0].id; - console.log({titleLinkId}); + const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); + const titleLinkInsertQuery = await deep.insert({ + type_id: Title, + string: {data: {value: req.body.Pan}}, + }); + if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} + const titleLinkId = titleLinkInsertQuery.data[0].id; + console.log({titleLinkId}); + } const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); const incomeLinkInsertQuery = await deep.insert({ From 7b18f265e8c7caa101f3b661bcd83184410f143d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 16:00:25 +0000 Subject: [PATCH 540/683] Use storageClientLinkId as from_id and to_id for title link --- payments-tinkoff-c2b.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 62f1a48f..93bf00ef 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1242,6 +1242,8 @@ async ( const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); const titleLinkInsertQuery = await deep.insert({ type_id: Title, + from_id: storageClientLinkId, + to_id: storageClientLinkId, string: {data: {value: req.body.Pan}}, }); if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} From 81835d90992726b788d2e428c0134731200a2569 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 16:04:51 +0000 Subject: [PATCH 541/683] Do not log queries --- payments-tinkoff-c2b-cancelling.cjs | 3 --- 1 file changed, 3 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 4ba760ac..61bee0ca 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1648,7 +1648,6 @@ async ( ], }, }); - console.log({ cancellingPaymentLinkInsertQuery }); if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; console.log({ cancellingPaymentLinkId }); @@ -1668,7 +1667,6 @@ async ( ], }, }); - console.log({ sumLinkOfCancellingPaymentQuery }); if (sumLinkOfCancellingPaymentQuery.error) { throw new Error(sumLinkOfCancellingPaymentQuery.error.message); } const sumLinkIdOfCancellingPayment = sumLinkOfCancellingPaymentQuery.data[0].id; console.log({ sumLinkIdOfCancellingPayment }); @@ -1742,7 +1740,6 @@ async ( ], }, }); - console.log({ cancellingPaymentLinkInsertQuery }); if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; console.log({ cancellingPaymentLinkId }); From f7e340af47271f8ea23eb69859afe8877fc90f09 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 19 Sep 2022 16:08:31 +0000 Subject: [PATCH 542/683] Do not log queries --- payments-tinkoff-c2b.cjs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 93bf00ef..e4925e7e 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1067,7 +1067,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log("paymentLink.value.value", paymentLink.value.value); console.log("paymentLink.value.value", paymentLink.value.value); const paymentLinkValueUpdateQuery = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); - console.log({paymentLinkValueUpdateQuery}); if(paymentLinkValueUpdateQuery.error) { throw new Error(paymentLinkValueUpdateQuery.error.message); } return initResult; @@ -1136,7 +1135,6 @@ async ( const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider }); - console.log({tinkoffProviderLinkSelectQuery}); if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; console.log({tinkoffProviderLinkId}); @@ -1144,7 +1142,6 @@ async ( const paymentLinkSelectQuery = await deep.select({ object: {value: {_contains: {orderId: req.body.OrderId}}} }); - console.log({paymentLinkSelectQuery}); if(paymentLinkSelectQuery.error) { throw new Error(paymentLinkSelectQuery.error.message); } const paymentLink = paymentLinkSelectQuery.data[0]; console.log({paymentLink}); @@ -1171,7 +1168,6 @@ async ( const storageBusinessLinkSelectQuery = await deep.select({ id: paymentLink.to_id }); - console.log({storageBusinessLinkSelectQuery}); if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; console.log({storageBusinessLinkId}); @@ -1182,7 +1178,6 @@ async ( from_id: storageBusinessLinkId, to_id: storageBusinessLinkId }); - console.log({tokenLinkSelectQuery}); if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} const tokenLink = tokenLinkSelectQuery.data[0]; console.log({tokenLink}); From ad7ff22b7d9dba0f7a8f080979a796d92a33983c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 07:15:35 +0000 Subject: [PATCH 543/683] Remove created links if the package is not installed correctly --- payments-tinkoff-c2b.cjs | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index e4925e7e..1d31929e 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -118,7 +118,9 @@ const payInBrowser = async ({ page, browser, url }) => { await browser.close(); }; -const f = async () => { +const allCreatedLinkIds = []; + +const installPackage = async () => { const apolloClient = generateApolloClient({ path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') @@ -1661,6 +1663,7 @@ async ( }); console.log({ tinkoffProviderLinkId }); createdLinkIds.push(tinkoffProviderLinkId); + allCreatedLinkIds.push(tinkoffProviderLinkId); const { data: [{ id: sumProviderLinkId }], @@ -1677,6 +1680,7 @@ async ( }); console.log({ sumProviderLinkId }); createdLinkIds.push(sumProviderLinkId); + allCreatedLinkIds.push(sumProviderLinkId); const { data: [{ id: storageBusinessLinkId }], @@ -1693,6 +1697,7 @@ async ( }); console.log({ storageBusinessLinkId }); createdLinkIds.push(storageBusinessLinkId); + allCreatedLinkIds.push(storageBusinessLinkId); const { data: [{ id: tokenLinkId }], @@ -1712,6 +1717,7 @@ async ( }); console.log({ tokenLinkId }); createdLinkIds.push(tokenLinkId); + allCreatedLinkIds.push(tokenLinkId); const { data: [{ id: Product }], @@ -1730,6 +1736,7 @@ async ( }); console.log({ Product }); createdLinkIds.push(Product); + allCreatedLinkIds.push(Product); const { data: [{ id: productLinkId }], @@ -1746,6 +1753,7 @@ async ( }); console.log({ productLinkId }); createdLinkIds.push(productLinkId); + allCreatedLinkIds.push(productLinkId); const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); @@ -1770,6 +1778,7 @@ async ( }); console.log({ paymentLinkId }); createdLinkIds.push(paymentLinkId); + allCreatedLinkIds.push(paymentLinkId); const { data: [{ id: sumLinkId }], @@ -1789,6 +1798,7 @@ async ( }); console.log({ sumLinkId }); createdLinkIds.push(sumLinkId); + allCreatedLinkIds.push(sumLinkId); const { data: [{ id: objectLinkId }], @@ -1807,6 +1817,7 @@ async ( }); console.log({ objectLinkId }); createdLinkIds.push(objectLinkId); + allCreatedLinkIds.push(objectLinkId); const { data: [{ id: payLinkId }], @@ -1825,6 +1836,7 @@ async ( }); console.log({ payLinkId }); createdLinkIds.push(payLinkId); + allCreatedLinkIds.push(payLinkId); var urlLinkSelectQuery; for (let i = 0; i < 10; i++) { @@ -1843,6 +1855,7 @@ async ( expect(urlLinkSelectQuery.data.length).to.greaterThan(0); createdLinkIds.push(urlLinkSelectQuery.data[0].id); + allCreatedLinkIds.push(urlLinkSelectQuery.data[0].id); const createdLinks = (await deep.select(createdLinkIds)).data; console.log({ createdLinks }); @@ -1907,6 +1920,7 @@ async ( expect(payedLinkSelectQuery.data.length).to.greaterThan(0); createdLinkIds.push(payedLinkSelectQuery.data[0].id); + allCreatedLinkIds.push(payedLinkSelectQuery.data[0].id); createdLinks.push(...(await deep.select(createdLinkIds)).data); @@ -1984,4 +1998,12 @@ async ( await callTests(); }; -f(); +const installPackageWithTryCatch = async () => { + try { + await installPackage(); + } catch (error) { + await deep.delete(allCreatedLinkIds); + } +} + +installPackageWithTryCatch() From d6cf986cc9598e9e445896436e2d7c88b7044267 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 07:19:12 +0000 Subject: [PATCH 544/683] Remove created links if the package is not installed correctly --- payments-tinkoff-c2b-cancelling.cjs | 35 +++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 61bee0ca..0f5601d4 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -116,7 +116,9 @@ const payInBrowser = async ({ page, browser, url }) => { await browser.close(); }; -const f = async () => { +const allCreatedLinkIds = []; + +const installPackage = async () => { const apolloClient = generateApolloClient({ path: process.env.NEXT_PUBLIC_GQL_PATH || '', // <<= HERE PATH TO UPDATE ssl: !!~process.env.NEXT_PUBLIC_GQL_PATH.indexOf('localhost') @@ -1366,6 +1368,7 @@ async ( }); console.log({ tinkoffProviderLinkId }); createdLinkIds.push(tinkoffProviderLinkId); + allCreatedLinkIds.push(tinkoffProviderLinkId); const { data: [{ id: sumProviderLinkId }], @@ -1382,6 +1385,7 @@ async ( }); console.log({ sumProviderLinkId }); createdLinkIds.push(sumProviderLinkId); + allCreatedLinkIds.push(sumProviderLinkId); const { data: [{ id: storageBusinessLinkId }], @@ -1398,6 +1402,7 @@ async ( }); console.log({ storageBusinessLinkId }); createdLinkIds.push(storageBusinessLinkId); + allCreatedLinkIds.push(storageBusinessLinkId); const { data: [{ id: tokenLinkId }], @@ -1417,6 +1422,7 @@ async ( }); console.log({ tokenLinkId }); createdLinkIds.push(tokenLinkId); + allCreatedLinkIds.push(tokenLinkId); const { data: [{ id: Product }], @@ -1435,6 +1441,7 @@ async ( }); console.log({ Product }); createdLinkIds.push(Product); + allCreatedLinkIds.push(Product); const { data: [{ id: productLinkId }], @@ -1451,6 +1458,7 @@ async ( }); console.log({ productLinkId }); createdLinkIds.push(productLinkId); + allCreatedLinkIds.push(productLinkId); const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); @@ -1475,6 +1483,7 @@ async ( }); console.log({ paymentLinkId }); createdLinkIds.push(paymentLinkId); + allCreatedLinkIds.push(paymentLinkId); const { data: [{ id: sumLinkId }], @@ -1494,6 +1503,7 @@ async ( }); console.log({ sumLinkId }); createdLinkIds.push(sumLinkId); + allCreatedLinkIds.push(sumLinkId); const { data: [{ id: objectLinkId }], @@ -1512,6 +1522,7 @@ async ( }); console.log({ objectLinkId }); createdLinkIds.push(objectLinkId); + allCreatedLinkIds.push(objectLinkId); const { data: [{ id: payLinkId }], @@ -1530,6 +1541,7 @@ async ( }); console.log({ payLinkId }); createdLinkIds.push(payLinkId); + allCreatedLinkIds.push(payLinkId); var urlLinkSelectQuery; for (let i = 0; i < 10; i++) { @@ -1548,6 +1560,7 @@ async ( expect(urlLinkSelectQuery.data.length).to.greaterThan(0); createdLinkIds.push(urlLinkSelectQuery.data[0].id); + allCreatedLinkIds.push(urlLinkSelectQuery.data[0].id); const createdLinks = (await deep.select(createdLinkIds)).data; console.log({ createdLinks }); @@ -1612,6 +1625,7 @@ async ( expect(payedLinkSelectQuery.data.length).to.greaterThan(0); createdLinkIds.push(payedLinkSelectQuery.data[0].id); + allCreatedLinkIds.push(payedLinkSelectQuery.data[0].id); createdLinks.push(...(await deep.select(createdLinkIds)).data); @@ -1652,6 +1666,7 @@ async ( const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; console.log({ cancellingPaymentLinkId }); createdLinkIds.push(cancellingPaymentLinkId); + allCreatedLinkIds.push(cancellingPaymentLinkId); const sumLinkOfCancellingPaymentQuery = await deep.insert({ type_id: Sum, @@ -1671,6 +1686,7 @@ async ( const sumLinkIdOfCancellingPayment = sumLinkOfCancellingPaymentQuery.data[0].id; console.log({ sumLinkIdOfCancellingPayment }); createdLinkIds.push(sumLinkIdOfCancellingPayment); + allCreatedLinkIds.push(sumLinkIdOfCancellingPayment); const cancellingPayLinkInsertQuery = await deep.insert({ type_id: CancellingPay, @@ -1689,6 +1705,7 @@ async ( const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; console.log({ cancellingPayLinkId }); createdLinkIds.push(cancellingPayLinkId); + allCreatedLinkIds.push(cancellingPayLinkId); var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { @@ -1744,6 +1761,7 @@ async ( const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; console.log({ cancellingPaymentLinkId }); createdLinkIds.push(cancellingPaymentLinkId); + allCreatedLinkIds.push(cancellingPaymentLinkId); const { data: [{ id: sumLinkIdOfCancellingPayment }] @@ -1763,6 +1781,7 @@ async ( }); console.log({ sumLinkIdOfCancellingPayment }); createdLinkIds.push(sumLinkIdOfCancellingPayment); + allCreatedLinkIds.push(sumLinkIdOfCancellingPayment); const cancellingPayLinkInsertQuery = await deep.insert({ type_id: CancellingPay, @@ -1781,6 +1800,7 @@ async ( const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; console.log({ cancellingPayLinkId }); createdLinkIds.push(cancellingPayLinkId); + allCreatedLinkIds.push(cancellingPayLinkId); var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { @@ -1838,6 +1858,7 @@ async ( const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; console.log({ cancellingPaymentLinkId }); createdLinkIds.push(cancellingPaymentLinkId); + allCreatedLinkIds.push(cancellingPaymentLinkId); const sumLinkOfCancellingPaymentSelectQuery = await deep.insert({ type_id: Sum, @@ -1857,6 +1878,7 @@ async ( const sumLinkIdOfCancellingPayment = sumLinkOfCancellingPaymentSelectQuery.data[0].id; console.log({ sumLinkIdOfCancellingPayment }); createdLinkIds.push(sumLinkIdOfCancellingPayment); + allCreatedLinkIds.push(sumLinkIdOfCancellingPayment); const cancellingPayLinkInsertQuery = await deep.insert({ type_id: CancellingPay, @@ -1875,6 +1897,7 @@ async ( const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; console.log({ cancellingPayLinkId }); createdLinkIds.push(cancellingPayLinkId); + allCreatedLinkIds.push(cancellingPayLinkId); var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { @@ -1930,4 +1953,12 @@ async ( await callTests(); }; -f(); \ No newline at end of file +const installPackageWithTryCatch = async () => { + try { + await installPackage(); + } catch (error) { + await deep.delete(allCreatedLinkIds); + } +} + +installPackageWithTryCatch() \ No newline at end of file From 6ccedfda833f753ae438413ab14b03aa5906cef4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 07:28:48 +0000 Subject: [PATCH 545/683] Add try catch inside installPackage --- payments-tinkoff-c2b-cancelling.cjs | 2525 +++++++++++++-------------- 1 file changed, 1262 insertions(+), 1263 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 0f5601d4..c9036518 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -129,590 +129,593 @@ const installPackage = async () => { }); const unloginedDeep = new DeepClient({ apolloClient }); + const guest = await unloginedDeep.guest(); + const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); + const admin = await guestDeep.login({ + linkId: await guestDeep.id('deep', 'admin'), + }); + const deep = new DeepClient({ deep: guestDeep, ...admin }); + + try { - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - - const _generateToken = (dataWithPassword) => { - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => `${acc}${item}`, ''); - console.log({ dataString }); - const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - console.log({ hash }); - return hash; - }; - const generateToken = (data) => { - const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { - ...restData, - Password: process.env.PAYMENTS_C2B_TERMINAL_PASSWORD, + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', }; - console.log({ dataWithPassword }); - return _generateToken(dataWithPassword); - }; - const generateTokenString = generateToken.toString() - .replace( - 'process.env.PAYMENTS_C2B_TERMINAL_PASSWORD', - `"${process.env.PAYMENTS_C2B_TERMINAL_PASSWORD}"` - ); - console.log({ generateTokenString }); - - const getUrl = (method) => - `${process.env.PAYMENTS_C2B_URL}/${method}`; - getUrlString = getUrl.toString() - .replace( - '${process.env.PAYMENTS_C2B_URL}', - process.env.PAYMENTS_C2B_URL - ); - console.log({ getUrlString }); - const getMarketUrl = (method) => - `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + + const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + console.log({ dataString }); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + console.log({ hash }); + return hash; + }; - const getState = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetState'), - data: { ...options, Token: generateToken(options) }, - }); + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + ...restData, + Password: process.env.PAYMENTS_C2B_TERMINAL_PASSWORD, + }; + console.log({ dataWithPassword }); + return _generateToken(dataWithPassword); + }; + const generateTokenString = generateToken.toString() + .replace( + 'process.env.PAYMENTS_C2B_TERMINAL_PASSWORD', + `"${process.env.PAYMENTS_C2B_TERMINAL_PASSWORD}"` + ); + console.log({ generateTokenString }); + + const getUrl = (method) => + `${process.env.PAYMENTS_C2B_URL}/${method}`; + getUrlString = getUrl.toString() + .replace( + '${process.env.PAYMENTS_C2B_URL}', + process.env.PAYMENTS_C2B_URL + ); + console.log({ getUrlString }); - const error = getError(response.data.ErrorCode); + const getMarketUrl = (method) => + `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const getState = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetState'), + data: { ...options, Token: generateToken(options) }, + }); - const checkOrder = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('CheckOrder'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); + const error = getError(response.data.ErrorCode); - const error = getError(response.data.ErrorCode); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const checkOrder = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('CheckOrder'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); - const getCardList = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCardList'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); + const error = getError(response.data.ErrorCode); - const error = getError(response.data.ErrorCode || '0'); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const getCardList = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCardList'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); - const init = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Init'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); + const error = getError(response.data.ErrorCode || '0'); - const error = getError(response.data.ErrorCode); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const init = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Init'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: { ...options, Token: generateToken(options) }, - }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const error = getError(response.data.ErrorCode); + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: { ...options, Token: generateToken(options) }, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const error = getError(response.data.ErrorCode); - const cancel = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Cancel'), - data: { ...options, Token: generateToken(options) }, - }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const error = getError(response.data.ErrorCode); + const cancel = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Cancel'), + data: { ...options, Token: generateToken(options) }, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const error = getError(response.data.ErrorCode); - const resend = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Resend'), - data: { ...options, Token: generateToken(options) }, - }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const error = getError(response.data.ErrorCode); + const resend = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Resend'), + data: { ...options, Token: generateToken(options) }, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const error = getError(response.data.ErrorCode); - const charge = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Charge'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const error = getError(response.data.ErrorCode); + const charge = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Charge'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const error = getError(response.data.ErrorCode); - const addCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('AddCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const error = getError(response.data.ErrorCode); + const addCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('AddCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const error = getError(response.data.ErrorCode); - const getCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const error = getError(response.data.ErrorCode); + const getCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const error = getError(response.data.ErrorCode); - const removeCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('RemoveCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const error = getError(response.data.ErrorCode); + const removeCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('RemoveCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const error = getError(response.data.ErrorCode); - const guest = await unloginedDeep.guest(); - const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); - const admin = await guestDeep.login({ - linkId: await guestDeep.id('deep', 'admin'), - }); - const deep = new DeepClient({ deep: guestDeep, ...admin }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const User = await deep.id('@deep-foundation/core', 'User'); - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); - const Join = await deep.id('@deep-foundation/core', 'Join'); - const Contain = await deep.id('@deep-foundation/core', 'Contain'); - const Value = await deep.id('@deep-foundation/core', 'Value'); - const String = await deep.id('@deep-foundation/core', 'String'); - const Package = await deep.id('@deep-foundation/core', 'Package'); - - const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); - const dockerSupportsJs = await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ); - const Handler = await deep.id('@deep-foundation/core', 'Handler'); - const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); - const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); - - const Tree = await deep.id('@deep-foundation/core', 'Tree'); - const TreeIncludeNode = await deep.id( - '@deep-foundation/core', - 'TreeIncludeNode' - ); - const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); - const TreeIncludeDown = await deep.id( - '@deep-foundation/core', - 'TreeIncludeDown' - ); - - const Rule = await deep.id('@deep-foundation/core', 'Rule'); - const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); - const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); - const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); - const Selector = await deep.id('@deep-foundation/core', 'Selector'); - const SelectorInclude = await deep.id( - '@deep-foundation/core', - 'SelectorInclude' - ); - const SelectorExclude = await deep.id( - '@deep-foundation/core', - 'SelectorExclude' - ); - const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); - const containTree = await deep.id('@deep-foundation/core', 'containTree'); - const AllowInsertType = await deep.id( - '@deep-foundation/core', - 'AllowInsertType' - ); - const AllowDeleteType = await deep.id( - '@deep-foundation/core', - 'AllowDeleteType' - ); - const SelectorFilter = await deep.id( - '@deep-foundation/core', - 'SelectorFilter' - ); - const Query = await deep.id('@deep-foundation/core', 'Query'); - const usersLinkId = await deep.id('deep', 'users'); - - const { - data: [{ id: packageLinkId }], - } = await deep.insert({ - type_id: Package, - string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - out: { - data: [ - { - type_id: Join, - to_id: await deep.id('deep', 'users', 'packages'), - }, - { - type_id: Join, - to_id: await deep.id('deep', 'admin'), - }, - ], - }, - }); + const User = await deep.id('@deep-foundation/core', 'User'); + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + const Join = await deep.id('@deep-foundation/core', 'Join'); + const Contain = await deep.id('@deep-foundation/core', 'Contain'); + const Value = await deep.id('@deep-foundation/core', 'Value'); + const String = await deep.id('@deep-foundation/core', 'String'); + const Package = await deep.id('@deep-foundation/core', 'Package'); + + const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); + const dockerSupportsJs = await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ); + const Handler = await deep.id('@deep-foundation/core', 'Handler'); + const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); + const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); + + const Tree = await deep.id('@deep-foundation/core', 'Tree'); + const TreeIncludeNode = await deep.id( + '@deep-foundation/core', + 'TreeIncludeNode' + ); + const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); + const TreeIncludeDown = await deep.id( + '@deep-foundation/core', + 'TreeIncludeDown' + ); + + const Rule = await deep.id('@deep-foundation/core', 'Rule'); + const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); + const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); + const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); + const Selector = await deep.id('@deep-foundation/core', 'Selector'); + const SelectorInclude = await deep.id( + '@deep-foundation/core', + 'SelectorInclude' + ); + const SelectorExclude = await deep.id( + '@deep-foundation/core', + 'SelectorExclude' + ); + const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); + const containTree = await deep.id('@deep-foundation/core', 'containTree'); + const AllowInsertType = await deep.id( + '@deep-foundation/core', + 'AllowInsertType' + ); + const AllowDeleteType = await deep.id( + '@deep-foundation/core', + 'AllowDeleteType' + ); + const SelectorFilter = await deep.id( + '@deep-foundation/core', + 'SelectorFilter' + ); + const Query = await deep.id('@deep-foundation/core', 'Query'); + const usersLinkId = await deep.id('deep', 'users'); + + const { + data: [{ id: packageLinkId }], + } = await deep.insert({ + type_id: Package, + string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + out: { + data: [ + { + type_id: Join, + to_id: await deep.id('deep', 'users', 'packages'), + }, + { + type_id: Join, + to_id: await deep.id('deep', 'admin'), + }, + ], + }, + }); - console.log({ packageLinkId }); + console.log({ packageLinkId }); - const SumProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "SumProvider"); - console.log({ SumProvider: SumProvider }); + const SumProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "SumProvider"); + console.log({ SumProvider: SumProvider }); - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - console.log({ TinkoffProvider }); + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + console.log({ TinkoffProvider }); - const Payment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); - console.log({ Payment: Payment }); + const Payment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); + console.log({ Payment: Payment }); - const Object = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Object"); - console.log({ Object: Object }); + const Object = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Object"); + console.log({ Object: Object }); - const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); - console.log({ Sum: Sum }); + const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); + console.log({ Sum: Sum }); - const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); - console.log({ Pay }); - - const { - data: [{ id: CancellingPay }], - } = await deep.insert({ - type_id: /* Pay */ Type, - from_id: User, - to_id: Sum, - in: { - data: { - type_id: Contain, - from_id: packageLinkId, - string: { data: { value: 'CancellingPay' } }, + const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + console.log({ Pay }); + + const { + data: [{ id: CancellingPay }], + } = await deep.insert({ + type_id: /* Pay */ Type, + from_id: User, + to_id: Sum, + in: { + data: { + type_id: Contain, + from_id: packageLinkId, + string: { data: { value: 'CancellingPay' } }, + }, }, - }, - }); - console.log({ CancellingPay }); + }); + console.log({ CancellingPay }); - const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); - console.log({ Url: Url }); + const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); + console.log({ Url: Url }); - const Payed = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"); - console.log({ Payed: Payed }); + const Payed = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"); + console.log({ Payed: Payed }); - const Error = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error"); - console.log({ Error: Error }); + const Error = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error"); + console.log({ Error: Error }); - const paymentTreeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree"); - console.log({ paymentTreeLinkId }); + const paymentTreeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree"); + console.log({ paymentTreeLinkId }); - const StorageBusiness = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageBusiness"); - console.log({ StorageBusiness }); + const StorageBusiness = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageBusiness"); + console.log({ StorageBusiness }); - const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); - console.log({ Token }); + const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); + console.log({ Token }); - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - console.log({ StorageClient }); + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + console.log({ StorageClient }); - const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); - console.log({ Title }); + const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); + console.log({ Title }); - const { - data: [{ id: CancellingPayment }], - } = await deep.insert({ - type_id: Type, - from_id: Payment, - to_id: User, - in: { - data: { - type_id: Contain, - from_id: packageLinkId, - string: { data: { value: 'CancellingPayment' } }, - }, - }, - }); - console.log({ CancellingPayment }); - - await deep.insert({ - type_id: TreeIncludeUp, - from_id: paymentTreeLinkId, - to_id: CancellingPayment, - in: { - data: [ - { + const { + data: [{ id: CancellingPayment }], + } = await deep.insert({ + type_id: Type, + from_id: Payment, + to_id: User, + in: { + data: { type_id: Contain, - from_id: deep.linkId, + from_id: packageLinkId, + string: { data: { value: 'CancellingPayment' } }, }, - ], - }, - }); + }, + }); + console.log({ CancellingPayment }); - await deep.insert({ - type_id: TreeIncludeUp, - from_id: paymentTreeLinkId, - to_id: CancellingPay, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); + await deep.insert({ + type_id: TreeIncludeUp, + from_id: paymentTreeLinkId, + to_id: CancellingPayment, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + + await deep.insert({ + type_id: TreeIncludeUp, + from_id: paymentTreeLinkId, + to_id: CancellingPay, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); - const handlersDependencies = ` + const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); const errorsConverter = ${JSON.stringify(errorsConverter)}; @@ -721,8 +724,8 @@ const installPackage = async () => { const _generateToken = ${_generateToken.toString()}; const generateToken = ${generateTokenString}; `; - console.log({ handlersDependencies }); - const payInsertHandler = ` + console.log({ handlersDependencies }); + const payInsertHandler = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} @@ -816,54 +819,54 @@ async ({ deep, require, data: { newLink: payLink } }) => { }; `; - const { - data: [{ id: payInsertHandlerLinkId }], - } = await deep.insert({ - type_id: SyncTextFile, - in: { - data: [ - { - type_id: Contain, - from_id: packageLinkId, // before created package - string: { data: { value: 'payInsertHandlerFile' } }, - }, - { - from_id: dockerSupportsJs, - type_id: Handler, - in: { - data: [ - { - type_id: Contain, - from_id: packageLinkId, // before created package - string: { data: { value: 'payInsertHandler' } }, - }, - { - type_id: HandleInsert, - from_id: CancellingPay, - in: { - data: [ - { - type_id: Contain, - from_id: packageLinkId, // before created package - string: { data: { value: 'payInsertHandle' } }, - }, - ], + const { + data: [{ id: payInsertHandlerLinkId }], + } = await deep.insert({ + type_id: SyncTextFile, + in: { + data: [ + { + type_id: Contain, + from_id: packageLinkId, // before created package + string: { data: { value: 'payInsertHandlerFile' } }, + }, + { + from_id: dockerSupportsJs, + type_id: Handler, + in: { + data: [ + { + type_id: Contain, + from_id: packageLinkId, // before created package + string: { data: { value: 'payInsertHandler' } }, }, - }, - ], + { + type_id: HandleInsert, + from_id: CancellingPay, + in: { + data: [ + { + type_id: Contain, + from_id: packageLinkId, // before created package + string: { data: { value: 'payInsertHandle' } }, + }, + ], + }, + }, + ], + }, }, + ], + }, + string: { + data: { + value: payInsertHandler, }, - ], - }, - string: { - data: { - value: payInsertHandler, }, - }, - }); - console.log({ payInsertHandlerLinkId }); + }); + console.log({ payInsertHandlerLinkId }); - const tinkoffNotificationHandler = ` + const tinkoffNotificationHandler = ` async ( req, res, @@ -934,76 +937,77 @@ async ( }; `; - await deep.insert( - { - type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { - data: { value: process.env.PAYMENTS_C2B_CANCELLING_NOTIFICATION_PORT }, - }, - in: { - data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), - in: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'RouterStringUse' - ), - string: { - data: { - value: - process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, - }, - }, - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), - out: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'HandleRoute' - ), - to: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'Handler' - ), - from_id: await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ), - in: { - data: { - type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', + await deep.insert( + { + type_id: await deep.id('@deep-foundation/core', 'Port'), + number: { + data: { value: process.env.PAYMENTS_C2B_CANCELLING_NOTIFICATION_PORT }, + }, + in: { + data: { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'RouterStringUse' + ), + string: { + data: { + value: + process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, + }, + }, + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + out: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'HandleRoute' + ), + to: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'Handler' + ), + from_id: await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ), + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, }, }, }, - }, - to: { - data: { - type_id: SyncTextFile, - string: { - data: { - value: tinkoffNotificationHandler, + to: { + data: { + type_id: SyncTextFile, + string: { + data: { + value: tinkoffNotificationHandler, + }, }, - }, - in: { - data: { - type_id: Contain, - from_id: packageLinkId, - string: { - data: { - value: 'tinkoffNotificationHandler', + in: { + data: { + type_id: Contain, + from_id: packageLinkId, + string: { + data: { + value: 'tinkoffNotificationHandler', + }, }, }, }, @@ -1022,110 +1026,22 @@ async ( }, }, }, - }, - { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - } - ); - - const callTests = async () => { - console.log('callTests-start'); - - const callRealizationTests = async () => { - const testInit = async () => { - const initOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - OrderId: uniqid(), - Amount: PRICE, - Description: 'Test shopping', - CustomerKey: deep.linkId, - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENTS_C2B_EMAIL, - Phone: process.env.PAYMENTS_C2B_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENTS_C2B_EMAIL, - // Phone: process.env.PAYMENTS_C2B_PHONE, - // Taxation: 'usn_income', - // }, - }; - - const initResult = await init(initOptions); - - expect(initResult.error).to.equal(undefined); - - return initResult; - }; - - const testConfirm = async () => { - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENTS_C2B_EMAIL, - // Phone: process.env.PAYMENTS_C2B_PHONE, - // Taxation: 'usn_income', - // }, - }; - - const initResult = await init(initOptions); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const confirmOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const confirmResult = await confirm(confirmOptions); - - expect(confirmResult.error).to.equal(undefined); - expect(confirmResult.response.Status).to.equal('CONFIRMED'); + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + } + ); - return confirmResult; - }; + const callTests = async () => { + console.log('callTests-start'); - const testCancel = async () => { - console.log('testCancel-start'); - const testCancelAfterPayBeforeConfirmFullPrice = async () => { - console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); + const callRealizationTests = async () => { + const testInit = async () => { const initOptions = { TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', Amount: PRICE, Description: 'Test shopping', + CustomerKey: deep.linkId, Language: 'ru', Recurrent: 'Y', DATA: { @@ -1135,7 +1051,7 @@ async ( // Receipt: { // Items: [{ // Name: 'Test item', - // Price: sum, + // Price: PRICE, // Quantity: 1, // Amount: PRICE, // PaymentMethod: 'prepayment', @@ -1145,66 +1061,30 @@ async ( // Email: process.env.PAYMENTS_C2B_EMAIL, // Phone: process.env.PAYMENTS_C2B_PHONE, // Taxation: 'usn_income', - // } + // }, }; - console.log({ options: initOptions }); - - let initResult = await init(initOptions); - - console.log({ initResult }); + const initResult = await init(initOptions); expect(initResult.error).to.equal(undefined); - const url = initResult.response.PaymentURL; + return initResult; + }; + const testConfirm = async () => { const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, - }); - - const bankPaymentId = initResult.response.PaymentId; - - const cancelOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, - }; - - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - - console.log({ cancelResponse: cancelResult }); - - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('REVERSED'); - console.log('testCanselAfterPayBeforeConfirmFullPrice-end'); - }; - - const testCancelAfterPayBeforeConfirmCustomPriceX2 = async () => { - console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-start'); const initOptions = { TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + Amount: PRICE, OrderId: uniqid(), CustomerKey: deep.linkId, PayType: 'T', - Amount: PRICE, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENTS_C2B_EMAIL, - Phone: process.env.PAYMENTS_C2B_PHONE, - }, // Receipt: { // Items: [{ // Name: 'Test item', - // Price: sum, + // Price: PRICE, // Quantity: 1, // Amount: PRICE, // PaymentMethod: 'prepayment', @@ -1214,264 +1094,272 @@ async ( // Email: process.env.PAYMENTS_C2B_EMAIL, // Phone: process.env.PAYMENTS_C2B_PHONE, // Taxation: 'usn_income', - // } + // }, }; - console.log({ options: initOptions }); - - let initResult = await init(initOptions); - - console.log({ initResult }); - - expect(initResult.error).to.equal(undefined); - - const url = initResult.response.PaymentURL; + const initResult = await init(initOptions); - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); await payInBrowser({ browser, page, - url, + url: initResult.response.PaymentURL, }); - const bankPaymentId = initResult.response.PaymentId; - - const cancelOptions = { + const confirmOptions = { TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: Math.floor(PRICE / 3), + PaymentId: initResult.response.PaymentId, }; - console.log({ cancelOptions }); + const confirmResult = await confirm(confirmOptions); - { - const cancelResult = await cancel(cancelOptions); + expect(confirmResult.error).to.equal(undefined); + expect(confirmResult.response.Status).to.equal('CONFIRMED'); - console.log({ cancelResponse: cancelResult }); + return confirmResult; + }; + + const testCancel = async () => { + console.log('testCancel-start'); + const testCancelAfterPayBeforeConfirmFullPrice = async () => { + console.log('testCanselAfterPayBeforeConfirmFullPrice-start'); + const initOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + Amount: PRICE, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENTS_C2B_EMAIL, + Phone: process.env.PAYMENTS_C2B_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENTS_C2B_EMAIL, + // Phone: process.env.PAYMENTS_C2B_PHONE, + // Taxation: 'usn_income', + // } + }; + + console.log({ options: initOptions }); + + let initResult = await init(initOptions); + + console.log({ initResult }); + + expect(initResult.error).to.equal(undefined); + + const url = initResult.response.PaymentURL; + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + await payInBrowser({ + browser, + page, + url, + }); + + const bankPaymentId = initResult.response.PaymentId; + + const cancelOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; + + console.log({ cancelOptions }); - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); - } - { const cancelResult = await cancel(cancelOptions); console.log({ cancelResponse: cancelResult }); expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); - } - console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-end'); - }; + expect(cancelResult.response.Status).to.equal('REVERSED'); + console.log('testCanselAfterPayBeforeConfirmFullPrice-end'); + }; - const testCancelAfterPayAfterConfirmFullPrice = async () => { - console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - const confirmResult = await testConfirm(); - console.log({ confirmResult }); + const testCancelAfterPayBeforeConfirmCustomPriceX2 = async () => { + console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-start'); + const initOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + Amount: PRICE, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENTS_C2B_EMAIL, + Phone: process.env.PAYMENTS_C2B_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENTS_C2B_EMAIL, + // Phone: process.env.PAYMENTS_C2B_PHONE, + // Taxation: 'usn_income', + // } + }; + + console.log({ options: initOptions }); + + let initResult = await init(initOptions); + + console.log({ initResult }); + + expect(initResult.error).to.equal(undefined); + + const url = initResult.response.PaymentURL; + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); - const bankPaymentId = confirmResult.response.PaymentId; - console.log({ bankPaymentId }); + const bankPaymentId = initResult.response.PaymentId; - const cancelOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, - }; - console.log({ cancelOptions }); + const cancelOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: Math.floor(PRICE / 3), + }; - const cancelResult = await cancel(cancelOptions); + console.log({ cancelOptions }); - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('REFUNDED'); - console.log('testCancelAfterPayAfterConfirmFullPrice-end'); - }; + { + const cancelResult = await cancel(cancelOptions); - const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); - const confirmResult = await testConfirm(); + console.log({ cancelResponse: cancelResult }); - const bankPaymentId = confirmResult.response.PaymentId; + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); + } + { + const cancelResult = await cancel(cancelOptions); - const cancelOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: Math.floor(PRICE / 3), + console.log({ cancelResponse: cancelResult }); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); + } + console.log('testCanselAfterPayBeforeConfirmCustomPriceX2-end'); }; - console.log({ cancelOptions }); + const testCancelAfterPayAfterConfirmFullPrice = async () => { + console.log('testCancelAfterPayAfterConfirmFullPrice-start'); + const confirmResult = await testConfirm(); + console.log({ confirmResult }); - { - const cancelResult = await cancel(cancelOptions); + const bankPaymentId = confirmResult.response.PaymentId; + console.log({ bankPaymentId }); + + const cancelOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; + console.log({ cancelOptions }); - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); - } - { const cancelResult = await cancel(cancelOptions); expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); - } - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); - }; + expect(cancelResult.response.Status).to.equal('REFUNDED'); + console.log('testCancelAfterPayAfterConfirmFullPrice-end'); + }; - const testCancelBeforePay = async () => { - console.log('testCancelBeforePay-start'); - const initResult = await testInit(); + const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); + const confirmResult = await testConfirm(); - const bankPaymentId = initResult.response.PaymentId;; + const bankPaymentId = confirmResult.response.PaymentId; - const cancelOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - PaymentId: bankPaymentId, - Amount: PRICE, + const cancelOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: Math.floor(PRICE / 3), + }; + + console.log({ cancelOptions }); + + { + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); + } + { + const cancelResult = await cancel(cancelOptions); + + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('PARTIAL_REFUNDED'); + } + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); }; - console.log({ cancelOptions }); + const testCancelBeforePay = async () => { + console.log('testCancelBeforePay-start'); + const initResult = await testInit(); - const cancelResult = await cancel(cancelOptions); + const bankPaymentId = initResult.response.PaymentId;; - expect(cancelResult.error).to.equal(undefined); - expect(cancelResult.response.Status).to.equal('CANCELED'); - console.log('testCancelBeforePay-end'); - }; - await testCancelAfterPayBeforeConfirmFullPrice(); - await testCancelAfterPayBeforeConfirmCustomPriceX2(); - await testCancelAfterPayAfterConfirmFullPrice(); - await testCancelAfterPayAfterConfirmCustomPriceX2(); - await testCancelBeforePay(); + const cancelOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + PaymentId: bankPaymentId, + Amount: PRICE, + }; - console.log('testCancel-end'); - }; + console.log({ cancelOptions }); - await testInit(); - await testConfirm(); - await testCancel(); - }; + const cancelResult = await cancel(cancelOptions); - const callIntegrationTests = async () => { + expect(cancelResult.error).to.equal(undefined); + expect(cancelResult.response.Status).to.equal('CANCELED'); + console.log('testCancelBeforePay-end'); + }; + await testCancelAfterPayBeforeConfirmFullPrice(); + await testCancelAfterPayBeforeConfirmCustomPriceX2(); + await testCancelAfterPayAfterConfirmFullPrice(); + await testCancelAfterPayAfterConfirmCustomPriceX2(); + await testCancelBeforePay(); - const createdLinkIds = []; + console.log('testCancel-end'); + }; - const { - data: [{ id: tinkoffProviderLinkId }], - } = await deep.insert({ - type_id: TinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tinkoffProviderLinkId }); - createdLinkIds.push(tinkoffProviderLinkId); - allCreatedLinkIds.push(tinkoffProviderLinkId); - - const { - data: [{ id: sumProviderLinkId }], - } = await deep.insert({ - type_id: SumProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ sumProviderLinkId }); - createdLinkIds.push(sumProviderLinkId); - allCreatedLinkIds.push(sumProviderLinkId); - - const { - data: [{ id: storageBusinessLinkId }], - } = await deep.insert({ - type_id: StorageBusiness, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ storageBusinessLinkId }); - createdLinkIds.push(storageBusinessLinkId); - allCreatedLinkIds.push(storageBusinessLinkId); - - const { - data: [{ id: tokenLinkId }], - } = await deep.insert({ - type_id: Token, - from_id: storageBusinessLinkId, - to_id: storageBusinessLinkId, - string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tokenLinkId }); - createdLinkIds.push(tokenLinkId); - allCreatedLinkIds.push(tokenLinkId); - - const { - data: [{ id: Product }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ Product }); - createdLinkIds.push(Product); - allCreatedLinkIds.push(Product); - - const { - data: [{ id: productLinkId }], - } = await deep.insert({ - type_id: Product, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ productLinkId }); - createdLinkIds.push(productLinkId); - allCreatedLinkIds.push(productLinkId); + await testInit(); + await testConfirm(); + await testCancel(); + }; - const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testInit-start'); + const callIntegrationTests = async () => { const createdLinkIds = []; const { - data: [{ id: paymentLinkId }], + data: [{ id: tinkoffProviderLinkId }], } = await deep.insert({ - type_id: Payment, - object: { data: { value: { orderId: uniqid() } } }, - from_id: deep.linkId, - to_id: storageBusinessLinkId, + type_id: TinkoffProvider, in: { data: [ { @@ -1481,17 +1369,14 @@ async ( ], }, }); - console.log({ paymentLinkId }); - createdLinkIds.push(paymentLinkId); - allCreatedLinkIds.push(paymentLinkId); + console.log({ tinkoffProviderLinkId }); + createdLinkIds.push(tinkoffProviderLinkId); + allCreatedLinkIds.push(tinkoffProviderLinkId); const { - data: [{ id: sumLinkId }], + data: [{ id: sumProviderLinkId }], } = await deep.insert({ - type_id: Sum, - from_id: sumProviderLinkId, - to_id: paymentLinkId, - number: { data: { value: PRICE } }, + type_id: SumProvider, in: { data: [ { @@ -1501,16 +1386,14 @@ async ( ], }, }); - console.log({ sumLinkId }); - createdLinkIds.push(sumLinkId); - allCreatedLinkIds.push(sumLinkId); + console.log({ sumProviderLinkId }); + createdLinkIds.push(sumProviderLinkId); + allCreatedLinkIds.push(sumProviderLinkId); const { - data: [{ id: objectLinkId }], + data: [{ id: storageBusinessLinkId }], } = await deep.insert({ - type_id: Object, - from_id: paymentLinkId, - to_id: productLinkId, + type_id: StorageBusiness, in: { data: [ { @@ -1520,16 +1403,17 @@ async ( ], }, }); - console.log({ objectLinkId }); - createdLinkIds.push(objectLinkId); - allCreatedLinkIds.push(objectLinkId); + console.log({ storageBusinessLinkId }); + createdLinkIds.push(storageBusinessLinkId); + allCreatedLinkIds.push(storageBusinessLinkId); const { - data: [{ id: payLinkId }], + data: [{ id: tokenLinkId }], } = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLinkId, + type_id: Token, + from_id: storageBusinessLinkId, + to_id: storageBusinessLinkId, + string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, in: { data: [ { @@ -1539,120 +1423,58 @@ async ( ], }, }); - console.log({ payLinkId }); - createdLinkIds.push(payLinkId); - allCreatedLinkIds.push(payLinkId); - - var urlLinkSelectQuery; - for (let i = 0; i < 10; i++) { - urlLinkSelectQuery = await deep.select({ - type_id: Url, - to_id: payLinkId, - }); - - if (urlLinkSelectQuery.data.length > 0) { - break; - } - - await sleep(1000); - } + console.log({ tokenLinkId }); + createdLinkIds.push(tokenLinkId); + allCreatedLinkIds.push(tokenLinkId); - expect(urlLinkSelectQuery.data.length).to.greaterThan(0); - - createdLinkIds.push(urlLinkSelectQuery.data[0].id); - allCreatedLinkIds.push(urlLinkSelectQuery.data[0].id); - - const createdLinks = (await deep.select(createdLinkIds)).data; - console.log({ createdLinks }); - - console.log('testInit-end'); - - return { - createdLinks - } - }; - - const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testFinishAuthorize-start'); - const { createdLinks } = await testInit({ customerKey }); - - const urlLink = createdLinks.find(link => link.type_id === Url); - expect(urlLink).to.not.be.equal(undefined) - - const url = urlLink.value.value; - console.log({ url }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, + const { + data: [{ id: Product }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); + console.log({ Product }); + createdLinkIds.push(Product); + allCreatedLinkIds.push(Product); - console.log({ createdLinks }); - - console.log('testFinishAuthorize-end'); - - return { - createdLinks - } - }; - - const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testConfirm-start'); - const { createdLinks } = await testFinishAuthorize({ customerKey }); - - const createdLinkIds = []; - - const payLink = createdLinks.find(link => link.type_id === Pay); - expect(payLink).to.not.equal(undefined); - - var payedLinkSelectQuery; - for (let i = 0; i < 10; i++) { - payedLinkSelectQuery = await deep.select({ - type_id: Payed, - to_id: payLink.id - }); - - if (payedLinkSelectQuery.data.length > 0) { - break; - } - - await sleep(1000); - } - - expect(payedLinkSelectQuery.data.length).to.greaterThan(0); - - createdLinkIds.push(payedLinkSelectQuery.data[0].id); - allCreatedLinkIds.push(payedLinkSelectQuery.data[0].id); - - createdLinks.push(...(await deep.select(createdLinkIds)).data); - - console.log({ createdLinks }); - - console.log('testConfirm-end'); - - return { - createdLinks - } - }; + const { + data: [{ id: productLinkId }], + } = await deep.insert({ + type_id: Product, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ productLinkId }); + createdLinkIds.push(productLinkId); + allCreatedLinkIds.push(productLinkId); - const callCancelTests = async () => { - console.log('testCancel-start'); - const testCancelAfterPayAfterConfirmFullPrice = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - const { createdLinks } = await testConfirm({ customerKey }); + const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testInit-start'); const createdLinkIds = []; - const paymentLink = createdLinks.find(link => link.type_id === Payment); - console.log({ paymentLink }); - - const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: CancellingPayment, - from_id: paymentLink.id, - to_id: deep.linkId, + const { + data: [{ id: paymentLinkId }], + } = await deep.insert({ + type_id: Payment, + object: { data: { value: { orderId: uniqid() } } }, + from_id: deep.linkId, + to_id: storageBusinessLinkId, in: { data: [ { @@ -1662,16 +1484,16 @@ async ( ], }, }); - if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; - console.log({ cancellingPaymentLinkId }); - createdLinkIds.push(cancellingPaymentLinkId); - allCreatedLinkIds.push(cancellingPaymentLinkId); + console.log({ paymentLinkId }); + createdLinkIds.push(paymentLinkId); + allCreatedLinkIds.push(paymentLinkId); - const sumLinkOfCancellingPaymentQuery = await deep.insert({ + const { + data: [{ id: sumLinkId }], + } = await deep.insert({ type_id: Sum, from_id: sumProviderLinkId, - to_id: cancellingPaymentLinkId, + to_id: paymentLinkId, number: { data: { value: PRICE } }, in: { data: [ @@ -1682,16 +1504,35 @@ async ( ], }, }); - if (sumLinkOfCancellingPaymentQuery.error) { throw new Error(sumLinkOfCancellingPaymentQuery.error.message); } - const sumLinkIdOfCancellingPayment = sumLinkOfCancellingPaymentQuery.data[0].id; - console.log({ sumLinkIdOfCancellingPayment }); - createdLinkIds.push(sumLinkIdOfCancellingPayment); - allCreatedLinkIds.push(sumLinkIdOfCancellingPayment); - - const cancellingPayLinkInsertQuery = await deep.insert({ - type_id: CancellingPay, + console.log({ sumLinkId }); + createdLinkIds.push(sumLinkId); + allCreatedLinkIds.push(sumLinkId); + + const { + data: [{ id: objectLinkId }], + } = await deep.insert({ + type_id: Object, + from_id: paymentLinkId, + to_id: productLinkId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ objectLinkId }); + createdLinkIds.push(objectLinkId); + allCreatedLinkIds.push(objectLinkId); + + const { + data: [{ id: payLinkId }], + } = await deep.insert({ + type_id: Pay, from_id: deep.linkId, - to_id: sumLinkIdOfCancellingPayment, + to_id: sumLinkId, in: { data: [ { @@ -1701,17 +1542,80 @@ async ( ], }, }); - if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } - const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; - console.log({ cancellingPayLinkId }); - createdLinkIds.push(cancellingPayLinkId); - allCreatedLinkIds.push(cancellingPayLinkId); + console.log({ payLinkId }); + createdLinkIds.push(payLinkId); + allCreatedLinkIds.push(payLinkId); + + var urlLinkSelectQuery; + for (let i = 0; i < 10; i++) { + urlLinkSelectQuery = await deep.select({ + type_id: Url, + to_id: payLinkId, + }); + + if (urlLinkSelectQuery.data.length > 0) { + break; + } + + await sleep(1000); + } + + expect(urlLinkSelectQuery.data.length).to.greaterThan(0); + + createdLinkIds.push(urlLinkSelectQuery.data[0].id); + allCreatedLinkIds.push(urlLinkSelectQuery.data[0].id); + + const createdLinks = (await deep.select(createdLinkIds)).data; + console.log({ createdLinks }); + + console.log('testInit-end'); + + return { + createdLinks + } + }; + + const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testFinishAuthorize-start'); + const { createdLinks } = await testInit({ customerKey }); + + const urlLink = createdLinks.find(link => link.type_id === Url); + expect(urlLink).to.not.be.equal(undefined) + + const url = urlLink.value.value; + console.log({ url }); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); + + console.log({ createdLinks }); + + console.log('testFinishAuthorize-end'); + + return { + createdLinks + } + }; + + const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testConfirm-start'); + const { createdLinks } = await testFinishAuthorize({ customerKey }); + + const createdLinkIds = []; + + const payLink = createdLinks.find(link => link.type_id === Pay); + expect(payLink).to.not.equal(undefined); var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { payedLinkSelectQuery = await deep.select({ type_id: Payed, - to_id: cancellingPayLinkId + to_id: payLink.id }); if (payedLinkSelectQuery.data.length > 0) { @@ -1720,30 +1624,34 @@ async ( await sleep(1000); } - if (payedLinkSelectQuery.error) { throw new Error(payedLinkSelectQuery.error.message); } - const payedLink = payedLinkSelectQuery.data[0]; - expect(payedLink).to.not.equal(undefined); - createdLinks.push(payedLink); - createdLinks.push(...(await deep.select(createdLinkIds)).data) + expect(payedLinkSelectQuery.data.length).to.greaterThan(0); - console.log('testCancelAfterPayAfterConfirmFullPrice-end'); + createdLinkIds.push(payedLinkSelectQuery.data[0].id); + allCreatedLinkIds.push(payedLinkSelectQuery.data[0].id); + + createdLinks.push(...(await deep.select(createdLinkIds)).data); + + console.log({ createdLinks }); + + console.log('testConfirm-end'); return { createdLinks - }; + } }; - const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); - const { createdLinks } = await testConfirm({ customerKey }); + const callCancelTests = async () => { + console.log('testCancel-start'); + const testCancelAfterPayAfterConfirmFullPrice = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testCancelAfterPayAfterConfirmFullPrice-start'); + const { createdLinks } = await testConfirm({ customerKey }); - const createdLinkIds = []; + const createdLinkIds = []; - const paymentLink = createdLinks.find(link => link.type_id === Payment); - console.log({ paymentLink }); + const paymentLink = createdLinks.find(link => link.type_id === Payment); + console.log({ paymentLink }); - for (let i = 0; i < 2; i++) { const cancellingPaymentLinkInsertQuery = await deep.insert({ type_id: CancellingPayment, from_id: paymentLink.id, @@ -1763,13 +1671,11 @@ async ( createdLinkIds.push(cancellingPaymentLinkId); allCreatedLinkIds.push(cancellingPaymentLinkId); - const { - data: [{ id: sumLinkIdOfCancellingPayment }] - } = await deep.insert({ + const sumLinkOfCancellingPaymentQuery = await deep.insert({ type_id: Sum, from_id: sumProviderLinkId, to_id: cancellingPaymentLinkId, - number: { data: { value: Math.floor(PRICE / 3) } }, + number: { data: { value: PRICE } }, in: { data: [ { @@ -1779,6 +1685,8 @@ async ( ], }, }); + if (sumLinkOfCancellingPaymentQuery.error) { throw new Error(sumLinkOfCancellingPaymentQuery.error.message); } + const sumLinkIdOfCancellingPayment = sumLinkOfCancellingPaymentQuery.data[0].id; console.log({ sumLinkIdOfCancellingPayment }); createdLinkIds.push(sumLinkIdOfCancellingPayment); allCreatedLinkIds.push(sumLinkIdOfCancellingPayment); @@ -1819,146 +1727,237 @@ async ( const payedLink = payedLinkSelectQuery.data[0]; expect(payedLink).to.not.equal(undefined); createdLinks.push(payedLink); - } - createdLinks.push(...(await deep.select(createdLinkIds)).data) + createdLinks.push(...(await deep.select(createdLinkIds)).data) - console.log({ createdLinks }); + console.log('testCancelAfterPayAfterConfirmFullPrice-end'); - console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); - - return { - createdLinks - } - }; + return { + createdLinks + }; + }; - const testCancelBeforePay = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testCancelBeforePay-start'); - const { createdLinks } = await testInit({ customerKey }); + const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); + const { createdLinks } = await testConfirm({ customerKey }); - const createdLinkIds = []; + const createdLinkIds = []; - const paymentLink = createdLinks.find(link => link.type_id === Payment); - console.log({ paymentLink }); + const paymentLink = createdLinks.find(link => link.type_id === Payment); + console.log({ paymentLink }); - const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: CancellingPayment, - from_id: paymentLink.id, - to_id: deep.linkId, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, + for (let i = 0; i < 2; i++) { + const cancellingPaymentLinkInsertQuery = await deep.insert({ + type_id: CancellingPayment, + from_id: paymentLink.id, + to_id: deep.linkId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], }, - ], - }, - }); - if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; - console.log({ cancellingPaymentLinkId }); - createdLinkIds.push(cancellingPaymentLinkId); - allCreatedLinkIds.push(cancellingPaymentLinkId); - - const sumLinkOfCancellingPaymentSelectQuery = await deep.insert({ - type_id: Sum, - from_id: sumProviderLinkId, - to_id: cancellingPaymentLinkId, - number: { data: { value: PRICE } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, + }); + if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; + console.log({ cancellingPaymentLinkId }); + createdLinkIds.push(cancellingPaymentLinkId); + allCreatedLinkIds.push(cancellingPaymentLinkId); + + const { + data: [{ id: sumLinkIdOfCancellingPayment }] + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderLinkId, + to_id: cancellingPaymentLinkId, + number: { data: { value: Math.floor(PRICE / 3) } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], }, - ], - }, - }); - if (sumLinkOfCancellingPaymentSelectQuery.error) { throw new Error(sumLinkOfCancellingPaymentSelectQuery.error.message); } - const sumLinkIdOfCancellingPayment = sumLinkOfCancellingPaymentSelectQuery.data[0].id; - console.log({ sumLinkIdOfCancellingPayment }); - createdLinkIds.push(sumLinkIdOfCancellingPayment); - allCreatedLinkIds.push(sumLinkIdOfCancellingPayment); - - const cancellingPayLinkInsertQuery = await deep.insert({ - type_id: CancellingPay, - from_id: deep.linkId, - to_id: sumLinkIdOfCancellingPayment, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, + }); + console.log({ sumLinkIdOfCancellingPayment }); + createdLinkIds.push(sumLinkIdOfCancellingPayment); + allCreatedLinkIds.push(sumLinkIdOfCancellingPayment); + + const cancellingPayLinkInsertQuery = await deep.insert({ + type_id: CancellingPay, + from_id: deep.linkId, + to_id: sumLinkIdOfCancellingPayment, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], }, - ], - }, - }); - if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } - const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; - console.log({ cancellingPayLinkId }); - createdLinkIds.push(cancellingPayLinkId); - allCreatedLinkIds.push(cancellingPayLinkId); + }); + if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } + const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; + console.log({ cancellingPayLinkId }); + createdLinkIds.push(cancellingPayLinkId); + allCreatedLinkIds.push(cancellingPayLinkId); + + var payedLinkSelectQuery; + for (let i = 0; i < 10; i++) { + payedLinkSelectQuery = await deep.select({ + type_id: Payed, + to_id: cancellingPayLinkId + }); + + if (payedLinkSelectQuery.data.length > 0) { + break; + } + + await sleep(1000); + } + if (payedLinkSelectQuery.error) { throw new Error(payedLinkSelectQuery.error.message); } + const payedLink = payedLinkSelectQuery.data[0]; + expect(payedLink).to.not.equal(undefined); + createdLinks.push(payedLink); + } - var payedLinkSelectQuery; - for (let i = 0; i < 10; i++) { - payedLinkSelectQuery = await deep.select({ - type_id: Payed, - to_id: cancellingPayLinkId - }); + createdLinks.push(...(await deep.select(createdLinkIds)).data) - if (payedLinkSelectQuery.data.length > 0) { - break; + console.log({ createdLinks }); + + console.log('testCancelAfterPayAfterConfirmCustomPriceX2-end'); + + return { + createdLinks } + }; - await sleep(1000); - } - if (payedLinkSelectQuery.error) { throw new Error(payedLinkSelectQuery.error.message); } - const payedLink = payedLinkSelectQuery.data[0]; - expect(payedLink).to.not.equal(undefined); - createdLinks.push(payedLink); + const testCancelBeforePay = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testCancelBeforePay-start'); + const { createdLinks } = await testInit({ customerKey }); - createdLinks.push(...(await deep.select(createdLinkIds)).data) + const createdLinkIds = []; - console.log('testCancelBeforePay-end'); + const paymentLink = createdLinks.find(link => link.type_id === Payment); + console.log({ paymentLink }); - return { - createdLinks + const cancellingPaymentLinkInsertQuery = await deep.insert({ + type_id: CancellingPayment, + from_id: paymentLink.id, + to_id: deep.linkId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; + console.log({ cancellingPaymentLinkId }); + createdLinkIds.push(cancellingPaymentLinkId); + allCreatedLinkIds.push(cancellingPaymentLinkId); + + const sumLinkOfCancellingPaymentSelectQuery = await deep.insert({ + type_id: Sum, + from_id: sumProviderLinkId, + to_id: cancellingPaymentLinkId, + number: { data: { value: PRICE } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + if (sumLinkOfCancellingPaymentSelectQuery.error) { throw new Error(sumLinkOfCancellingPaymentSelectQuery.error.message); } + const sumLinkIdOfCancellingPayment = sumLinkOfCancellingPaymentSelectQuery.data[0].id; + console.log({ sumLinkIdOfCancellingPayment }); + createdLinkIds.push(sumLinkIdOfCancellingPayment); + allCreatedLinkIds.push(sumLinkIdOfCancellingPayment); + + const cancellingPayLinkInsertQuery = await deep.insert({ + type_id: CancellingPay, + from_id: deep.linkId, + to_id: sumLinkIdOfCancellingPayment, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } + const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; + console.log({ cancellingPayLinkId }); + createdLinkIds.push(cancellingPayLinkId); + allCreatedLinkIds.push(cancellingPayLinkId); + + var payedLinkSelectQuery; + for (let i = 0; i < 10; i++) { + payedLinkSelectQuery = await deep.select({ + type_id: Payed, + to_id: cancellingPayLinkId + }); + + if (payedLinkSelectQuery.data.length > 0) { + break; + } + + await sleep(1000); + } + if (payedLinkSelectQuery.error) { throw new Error(payedLinkSelectQuery.error.message); } + const payedLink = payedLinkSelectQuery.data[0]; + expect(payedLink).to.not.equal(undefined); + createdLinks.push(payedLink); + + createdLinks.push(...(await deep.select(createdLinkIds)).data) + + console.log('testCancelBeforePay-end'); + + return { + createdLinks + }; }; + + { + const { createdLinks } = await testCancelAfterPayAfterConfirmFullPrice(); + await deep.delete(createdLinks.map(link => link.id)); + } + { + const { createdLinks } = await testCancelAfterPayAfterConfirmCustomPriceX2(); + await deep.delete(createdLinks.map(link => link.id)); + } + { + const { createdLinks } = await testCancelBeforePay(); + await deep.delete(createdLinks.map(link => link.id)); + } + + console.log('testCancel-end'); }; - { - const { createdLinks } = await testCancelAfterPayAfterConfirmFullPrice(); - await deep.delete(createdLinks.map(link => link.id)); - } - { - const { createdLinks } = await testCancelAfterPayAfterConfirmCustomPriceX2(); - await deep.delete(createdLinks.map(link => link.id)); - } - { - const { createdLinks } = await testCancelBeforePay(); - await deep.delete(createdLinks.map(link => link.id)); - } - - console.log('testCancel-end'); + await callCancelTests(); + await deep.delete(createdLinkIds); }; - await callCancelTests(); - await deep.delete(createdLinkIds); + // await callRealizationTests(); + await callIntegrationTests(); }; - // await callRealizationTests(); - await callIntegrationTests(); - }; - - await callTests(); -}; + await callTests(); -const installPackageWithTryCatch = async () => { - try { - await installPackage(); } catch (error) { await deep.delete(allCreatedLinkIds); } -} +}; -installPackageWithTryCatch() \ No newline at end of file +installPackage(); \ No newline at end of file From 9983463908abed2f3fc3669d865b69ec0936869e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 07:30:10 +0000 Subject: [PATCH 546/683] Add try catch inside installPackage --- payments-tinkoff-c2b.cjs | 2699 +++++++++++++++++++------------------- 1 file changed, 1348 insertions(+), 1351 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 1d31929e..4c360bbb 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -131,821 +131,822 @@ const installPackage = async () => { }); const unloginedDeep = new DeepClient({ apolloClient }); + const guest = await unloginedDeep.guest(); + const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); + const admin = await guestDeep.login({ + linkId: await guestDeep.id('deep', 'admin'), + }); + const deep = new DeepClient({ deep: guestDeep, ...admin }); - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; + try { - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - - const _generateToken = (dataWithPassword) => { - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => `${acc}${item}`, ''); - console.log({ dataString }); - const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - console.log({ hash }); - return hash; - }; + const errorsConverter = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; - const generateToken = (data) => { - const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { - ...restData, - Password: process.env.PAYMENTS_C2B_TERMINAL_PASSWORD, + const getError = (errorCode) => + errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; + + const _generateToken = (dataWithPassword) => { + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + console.log({ dataString }); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + console.log({ hash }); + return hash; }; - console.log({ dataWithPassword }); - return _generateToken(dataWithPassword); - }; - const generateTokenString = generateToken - .toString() - .replace( - 'process.env.PAYMENTS_C2B_TERMINAL_PASSWORD', - `"${process.env.PAYMENTS_C2B_TERMINAL_PASSWORD}"` - ); - console.log({ generateTokenString }); - - const getUrl = (method) => - `${process.env.PAYMENTS_C2B_URL}/${method}`; - getUrlString = getUrl - .toString() - .replace( - '${process.env.PAYMENTS_C2B_URL}', - process.env.PAYMENTS_C2B_URL - ); - console.log({ getUrlString }); - const getMarketUrl = (method) => - `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + ...restData, + Password: process.env.PAYMENTS_C2B_TERMINAL_PASSWORD, + }; + console.log({ dataWithPassword }); + return _generateToken(dataWithPassword); + }; + const generateTokenString = generateToken + .toString() + .replace( + 'process.env.PAYMENTS_C2B_TERMINAL_PASSWORD', + `"${process.env.PAYMENTS_C2B_TERMINAL_PASSWORD}"` + ); + console.log({ generateTokenString }); + + const getUrl = (method) => + `${process.env.PAYMENTS_C2B_URL}/${method}`; + getUrlString = getUrl + .toString() + .replace( + '${process.env.PAYMENTS_C2B_URL}', + process.env.PAYMENTS_C2B_URL + ); + console.log({ getUrlString }); - const getState = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetState'), - data: { ...options, Token: generateToken(options) }, - }); + const getMarketUrl = (method) => + `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; - const error = getError(response.data.ErrorCode); + const getState = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetState'), + data: { ...options, Token: generateToken(options) }, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const error = getError(response.data.ErrorCode); - const checkOrder = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('CheckOrder'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const error = getError(response.data.ErrorCode); + const checkOrder = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('CheckOrder'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const error = getError(response.data.ErrorCode); - const getCardList = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCardList'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const error = getError(response.data.ErrorCode || '0'); + const getCardList = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCardList'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const error = getError(response.data.ErrorCode || '0'); - const init = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Init'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const error = getError(response.data.ErrorCode); + const init = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Init'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const error = getError(response.data.ErrorCode); - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: { ...options, Token: generateToken(options) }, - }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const error = getError(response.data.ErrorCode); + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: { ...options, Token: generateToken(options) }, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const error = getError(response.data.ErrorCode); - const resend = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Resend'), - data: { ...options, Token: generateToken(options) }, - }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const error = getError(response.data.ErrorCode); + const resend = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Resend'), + data: { ...options, Token: generateToken(options) }, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const error = getError(response.data.ErrorCode); - const charge = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Charge'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const error = getError(response.data.ErrorCode); + const charge = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Charge'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const error = getError(response.data.ErrorCode); - const addCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('AddCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const error = getError(response.data.ErrorCode); + const addCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('AddCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const error = getError(response.data.ErrorCode); - const getCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const error = getError(response.data.ErrorCode); + const getCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const error = getError(response.data.ErrorCode); - const removeCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('RemoveCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; - const error = getError(response.data.ErrorCode); + const removeCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('RemoveCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; + const error = getError(response.data.ErrorCode); - const getBankPaymentId = async (orderId) => { - const checkOrderOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - OrderId: orderId, + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } }; - const checkOrderResult = await checkOrder(checkOrderOptions); - expect(checkOrderResult.error).to.equal(undefined); + const getBankPaymentId = async (orderId) => { + const checkOrderOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + OrderId: orderId, + }; - console.log({ checkOrderResponse: checkOrderResult }); + const checkOrderResult = await checkOrder(checkOrderOptions); + expect(checkOrderResult.error).to.equal(undefined); - const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; + console.log({ checkOrderResponse: checkOrderResult }); - console.log({ bankPaymentId }); - return bankPaymentId; - }; + const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; - const guest = await unloginedDeep.guest(); - const guestDeep = new DeepClient({ deep: unloginedDeep, ...guest }); - const admin = await guestDeep.login({ - linkId: await guestDeep.id('deep', 'admin'), - }); - const deep = new DeepClient({ deep: guestDeep, ...admin }); + console.log({ bankPaymentId }); + return bankPaymentId; + }; - const User = await deep.id('@deep-foundation/core', 'User'); - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); - const Join = await deep.id('@deep-foundation/core', 'Join'); - const Contain = await deep.id('@deep-foundation/core', 'Contain'); - const Value = await deep.id('@deep-foundation/core', 'Value'); - const String = await deep.id('@deep-foundation/core', 'String'); - const Package = await deep.id('@deep-foundation/core', 'Package'); - - const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); - const dockerSupportsJs = await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ); - const Handler = await deep.id('@deep-foundation/core', 'Handler'); - const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); - const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); - - const Tree = await deep.id('@deep-foundation/core', 'Tree'); - const TreeIncludeNode = await deep.id( - '@deep-foundation/core', - 'TreeIncludeNode' - ); - const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); - const TreeIncludeDown = await deep.id( - '@deep-foundation/core', - 'TreeIncludeDown' - ); - - const Rule = await deep.id('@deep-foundation/core', 'Rule'); - const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); - const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); - const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); - const Selector = await deep.id('@deep-foundation/core', 'Selector'); - const SelectorInclude = await deep.id( - '@deep-foundation/core', - 'SelectorInclude' - ); - const SelectorExclude = await deep.id( - '@deep-foundation/core', - 'SelectorExclude' - ); - const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); - const containTree = await deep.id('@deep-foundation/core', 'containTree'); - const AllowInsertType = await deep.id( - '@deep-foundation/core', - 'AllowInsertType' - ); - const AllowDeleteType = await deep.id( - '@deep-foundation/core', - 'AllowDeleteType' - ); - const SelectorFilter = await deep.id( - '@deep-foundation/core', - 'SelectorFilter' - ); - const Query = await deep.id('@deep-foundation/core', 'Query'); - const usersId = await deep.id('deep', 'users'); - - const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); - const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); - const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); - const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); - const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); - const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); - const BaseError = await deep.id('@deep-foundation/payments', 'Error'); - const Storage = await deep.id('@deep-foundation/payments', 'Storage'); - - const { - data: [{ id: packageId }], - } = await deep.insert({ - type_id: Package, - string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, - in: { - data: [ - { + const User = await deep.id('@deep-foundation/core', 'User'); + const Type = await deep.id('@deep-foundation/core', 'Type'); + const Any = await deep.id('@deep-foundation/core', 'Any'); + const Join = await deep.id('@deep-foundation/core', 'Join'); + const Contain = await deep.id('@deep-foundation/core', 'Contain'); + const Value = await deep.id('@deep-foundation/core', 'Value'); + const String = await deep.id('@deep-foundation/core', 'String'); + const Package = await deep.id('@deep-foundation/core', 'Package'); + + const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); + const dockerSupportsJs = await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ); + const Handler = await deep.id('@deep-foundation/core', 'Handler'); + const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); + const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); + + const Tree = await deep.id('@deep-foundation/core', 'Tree'); + const TreeIncludeNode = await deep.id( + '@deep-foundation/core', + 'TreeIncludeNode' + ); + const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); + const TreeIncludeDown = await deep.id( + '@deep-foundation/core', + 'TreeIncludeDown' + ); + + const Rule = await deep.id('@deep-foundation/core', 'Rule'); + const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); + const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); + const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); + const Selector = await deep.id('@deep-foundation/core', 'Selector'); + const SelectorInclude = await deep.id( + '@deep-foundation/core', + 'SelectorInclude' + ); + const SelectorExclude = await deep.id( + '@deep-foundation/core', + 'SelectorExclude' + ); + const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); + const containTree = await deep.id('@deep-foundation/core', 'containTree'); + const AllowInsertType = await deep.id( + '@deep-foundation/core', + 'AllowInsertType' + ); + const AllowDeleteType = await deep.id( + '@deep-foundation/core', + 'AllowDeleteType' + ); + const SelectorFilter = await deep.id( + '@deep-foundation/core', + 'SelectorFilter' + ); + const Query = await deep.id('@deep-foundation/core', 'Query'); + const usersId = await deep.id('deep', 'users'); + + const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); + const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); + const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); + const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); + const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); + const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); + const BaseError = await deep.id('@deep-foundation/payments', 'Error'); + const Storage = await deep.id('@deep-foundation/payments', 'Storage'); + + const { + data: [{ id: packageId }], + } = await deep.insert({ + type_id: Package, + string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + out: { + data: [ + { + type_id: Join, + to_id: await deep.id('deep', 'users', 'packages'), + }, + { + type_id: Join, + to_id: await deep.id('deep', 'admin'), + }, + ], + }, + }); + + console.log({ packageId }); + + const { + data: [{ id: SumProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - out: { - data: [ - { - type_id: Join, - to_id: await deep.id('deep', 'users', 'packages'), - }, - { - type_id: Join, - to_id: await deep.id('deep', 'admin'), + from_id: packageId, + string: { data: { value: 'SumProvider' } }, }, - ], - }, - }); - - console.log({ packageId }); - - const { - data: [{ id: SumProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'SumProvider' } }, }, - }, - }); + }); + + console.log({ SumProvider: SumProvider }); - console.log({ SumProvider: SumProvider }); - - const { - data: [{ id: TinkoffProvider }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'TinkoffProvider' } }, + const { + data: [{ id: TinkoffProvider }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'TinkoffProvider' } }, + }, }, - }, - }); + }); + + console.log({ TinkoffProvider }); - console.log({ TinkoffProvider }); - - const { - data: [{ id: Payment }], - } = await deep.insert({ - type_id: BasePayment, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Payment' } }, + const { + data: [{ id: Payment }], + } = await deep.insert({ + type_id: BasePayment, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Payment' } }, + }, }, - }, - }); + }); + + console.log({ Payment: Payment }); - console.log({ Payment: Payment }); - - const { - data: [{ id: Object }], - } = await deep.insert({ - type_id: BaseObject, - from_id: Payment, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'Object' } }, + const { + data: [{ id: Object }], + } = await deep.insert({ + type_id: BaseObject, + from_id: Payment, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'Object' } }, + }, }, - }, - }); + }); + + console.log({ Object: Object }); - console.log({ Object: Object }); - - const { - data: [{ id: Sum }], - } = await deep.insert({ - type_id: BaseSum, - from_id: SumProvider, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Sum' } }, + const { + data: [{ id: Sum }], + } = await deep.insert({ + type_id: BaseSum, + from_id: SumProvider, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Sum' } }, + }, }, - }, - }); + }); + + console.log({ Sum: Sum }); - console.log({ Sum: Sum }); - - // TODO Rest restrictions - const { - data: [{ id: Pay }], - } = await deep.insert({ - type_id: BasePay, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Pay' } }, + // TODO Rest restrictions + const { + data: [{ id: Pay }], + } = await deep.insert({ + type_id: BasePay, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Pay' } }, + }, }, - }, - }); + }); - console.log({ Pay: Pay }); - - const { - data: [{ id: Url }], - } = await deep.insert({ - type_id: BaseUrl, - from_id: TinkoffProvider, - to_id: Pay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Url' } }, + console.log({ Pay: Pay }); + + const { + data: [{ id: Url }], + } = await deep.insert({ + type_id: BaseUrl, + from_id: TinkoffProvider, + to_id: Pay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Url' } }, + }, }, - }, - }); + }); + + console.log({ Url: Url }); - console.log({ Url: Url }); - - const { - data: [{ id: Payed }], - } = await deep.insert({ - type_id: BasePayed, - from_id: TinkoffProvider, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Payed' } }, + const { + data: [{ id: Payed }], + } = await deep.insert({ + type_id: BasePayed, + from_id: TinkoffProvider, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Payed' } }, + }, }, - }, - }); + }); + + console.log({ Payed: Payed }); - console.log({ Payed: Payed }); - - const { - data: [{ id: Error }], - } = await deep.insert({ - type_id: BaseError, - from_id: TinkoffProvider, - to_id: Pay, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Error' } }, + const { + data: [{ id: Error }], + } = await deep.insert({ + type_id: BaseError, + from_id: TinkoffProvider, + to_id: Pay, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Error' } }, + }, }, - }, - }); + }); - console.log({ Error: Error }); - - const { - data: [{ id: paymentTreeId }], - } = await deep.insert({ - type_id: Tree, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { data: { value: 'paymentTree' } }, + console.log({ Error: Error }); + + const { + data: [{ id: paymentTreeId }], + } = await deep.insert({ + type_id: Tree, + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { data: { value: 'paymentTree' } }, + }, }, - }, - out: { - data: [ - { - type_id: TreeIncludeNode, - to_id: Payment, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], + out: { + data: [ + { + type_id: TreeIncludeNode, + to_id: Payment, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }, - }, - { - type_id: TreeIncludeUp, - to_id: Sum, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], + { + type_id: TreeIncludeUp, + to_id: Sum, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }, - }, - { - type_id: TreeIncludeDown, - to_id: Object, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], + { + type_id: TreeIncludeDown, + to_id: Object, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }, - }, - { - type_id: TreeIncludeUp, - to_id: Error, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], + { + type_id: TreeIncludeUp, + to_id: Error, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }, - }, - { - type_id: TreeIncludeUp, - to_id: Payed, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], + { + type_id: TreeIncludeUp, + to_id: Payed, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }, - }, - { - type_id: TreeIncludeUp, - to_id: Pay, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], + { + type_id: TreeIncludeUp, + to_id: Pay, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }, - }, - { - type_id: TreeIncludeUp, - to_id: Url, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], + { + type_id: TreeIncludeUp, + to_id: Url, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }, - }, - ], - }, - }); + ], + }, + }); - const { - data: [{ id: StorageBusiness }], - } = await deep.insert({ - type_id: Storage, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'StorageBusiness' } }, + const { + data: [{ id: StorageBusiness }], + } = await deep.insert({ + type_id: Storage, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'StorageBusiness' } }, + }, }, - }, - }); + }); - const { - data: [{ id: Token }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Token' } }, + const { + data: [{ id: Token }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Token' } }, + }, }, - }, - }); + }); - const { - data: [{ id: StorageClient }], - } = await deep.insert({ - type_id: Storage, - from_id: Payment, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'StorageClient' } }, + const { + data: [{ id: StorageClient }], + } = await deep.insert({ + type_id: Storage, + from_id: Payment, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'StorageClient' } }, + }, }, - }, - }); + }); - const { - data: [{ id: Title }], - } = await deep.insert({ - type_id: Type, - from_id: StorageClient, - to_id: SyncTextFile, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Title' } }, + const { + data: [{ id: Title }], + } = await deep.insert({ + type_id: Type, + from_id: StorageClient, + to_id: SyncTextFile, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Title' } }, + }, }, - }, - }); - console.log({ Title }); - - const { - data: [{ id: Income }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'Income' } }, + }); + console.log({ Title }); + + const { + data: [{ id: Income }], + } = await deep.insert({ + type_id: Type, + from_id: Any, + to_id: Any, + in: { + data: { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'Income' } }, + }, }, - }, - }); - console.log({ Income }); + }); + console.log({ Income }); - const handlersDependencies = ` + const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); const errorsConverter = ${JSON.stringify(errorsConverter)}; @@ -954,8 +955,8 @@ const installPackage = async () => { const _generateToken = ${_generateToken.toString()}; const generateToken = ${generateTokenString}; `; - console.log({ handlersDependencies }); - const payInsertHandler = ` + console.log({ handlersDependencies }); + const payInsertHandler = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} @@ -1075,54 +1076,54 @@ async ({ deep, require, data: { newLink: payLink } }) => { }; `; - const { - data: [{ id: payInsertHandlerId }], - } = await deep.insert({ - type_id: SyncTextFile, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandlerFile' } }, - }, - { - from_id: dockerSupportsJs, - type_id: Handler, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandler' } }, - }, - { - type_id: HandleInsert, - from_id: Pay, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandle' } }, - }, - ], + const { + data: [{ id: payInsertHandlerId }], + } = await deep.insert({ + type_id: SyncTextFile, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandlerFile' } }, + }, + { + from_id: dockerSupportsJs, + type_id: Handler, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandler' } }, }, - }, - ], + { + type_id: HandleInsert, + from_id: Pay, + in: { + data: [ + { + type_id: Contain, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandle' } }, + }, + ], + }, + }, + ], + }, }, + ], + }, + string: { + data: { + value: payInsertHandler, }, - ], - }, - string: { - data: { - value: payInsertHandler, }, - }, - }); - console.log({ payInsertHandlerId }); + }); + console.log({ payInsertHandlerId }); - const tinkoffNotificationHandler = ` + const tinkoffNotificationHandler = ` async ( req, res, @@ -1262,76 +1263,77 @@ async ( }; `; - await deep.insert( - { - type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { - data: { value: process.env.PAYMENTS_C2B_NOTIFICATION_PORT }, - }, - in: { - data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), - in: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'RouterStringUse' - ), - string: { - data: { - value: - process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, + await deep.insert( + { + type_id: await deep.id('@deep-foundation/core', 'Port'), + number: { + data: { value: process.env.PAYMENTS_C2B_NOTIFICATION_PORT }, + }, + in: { + data: { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'RouterStringUse' + ), + string: { + data: { + value: + process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, + }, }, - }, - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), - out: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'HandleRoute' - ), - to: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'Handler' - ), - from_id: await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ), - in: { - data: { - type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', + from: { + data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + out: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'HandleRoute' + ), + to: { + data: { + type_id: await deep.id( + '@deep-foundation/core', + 'Handler' + ), + from_id: await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ), + in: { + data: { + type_id: Contain, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: 'tinkoffNotificationHandler', + }, }, }, }, - }, - to: { - data: { - type_id: SyncTextFile, - string: { - data: { - value: tinkoffNotificationHandler, + to: { + data: { + type_id: SyncTextFile, + string: { + data: { + value: tinkoffNotificationHandler, + }, }, - }, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { - data: { - value: 'tinkoffNotificationHandler', + in: { + data: { + type_id: Contain, + from_id: packageId, + string: { + data: { + value: 'tinkoffNotificationHandler', + }, }, }, }, @@ -1350,423 +1352,341 @@ async ( }, }, }, - }, - { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - } - ); - - const callTests = async () => { - console.log('callTests-start'); - - const callRealizationTests = async () => { - const testInit = async () => { - const initOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - OrderId: uniqid(), - Amount: PRICE, - Description: 'Test shopping', - CustomerKey: deep.linkId, - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENTS_C2B_EMAIL, - Phone: process.env.PAYMENTS_C2B_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENTS_C2B_EMAIL, - // Phone: process.env.PAYMENTS_C2B_PHONE, - // Taxation: 'usn_income', - // }, - }; - - const initResult = await init(initOptions); + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + } + ); - expect(initResult.error).to.equal(undefined); + const callTests = async () => { + console.log('callTests-start'); + + const callRealizationTests = async () => { + const testInit = async () => { + const initOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + OrderId: uniqid(), + Amount: PRICE, + Description: 'Test shopping', + CustomerKey: deep.linkId, + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: process.env.PAYMENTS_C2B_EMAIL, + Phone: process.env.PAYMENTS_C2B_PHONE, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: PRICE, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENTS_C2B_EMAIL, + // Phone: process.env.PAYMENTS_C2B_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + expect(initResult.error).to.equal(undefined); + + return initResult; + }; - return initResult; - }; + const testConfirm = async () => { + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + PayType: 'T', + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: PRICE, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENTS_C2B_EMAIL, + // Phone: process.env.PAYMENTS_C2B_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); - const testConfirm = async () => { - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENTS_C2B_EMAIL, - // Phone: process.env.PAYMENTS_C2B_PHONE, - // Taxation: 'usn_income', - // }, - }; + const confirmOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; - const initResult = await init(initOptions); + const confirmResult = await confirm(confirmOptions); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); + expect(confirmResult.error).to.equal(undefined); + expect(confirmResult.response.Status).to.equal('CONFIRMED'); - const confirmOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, + return confirmResult; }; - const confirmResult = await confirm(confirmOptions); - - expect(confirmResult.error).to.equal(undefined); - expect(confirmResult.response.Status).to.equal('CONFIRMED'); + const testGetState = async () => { + const initResult = await init({ + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + OrderId: uniqid(), + CustomerKey: deep.linkId, + Amount: PRICE, + }); - return confirmResult; - }; + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); - const testGetState = async () => { - const initResult = await init({ - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Amount: PRICE, - }); + const getStateOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); + const getStateResult = await getState(getStateOptions); - const getStateOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, + expect(getStateResult.error).to.equal(undefined); }; - const getStateResult = await getState(getStateOptions); + const testGetCardList = async () => { + const initResult = await init({ + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + CustomerKey: deep.linkId, + OrderId: uniqid(), + Amount: PRICE, + Recurrent: 'Y', + }); - expect(getStateResult.error).to.equal(undefined); - }; + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); - const testGetCardList = async () => { - const initResult = await init({ - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - CustomerKey: deep.linkId, - OrderId: uniqid(), - Amount: PRICE, - Recurrent: 'Y', - }); + const getCardListOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); + const getCardListResult = await getCardList(getCardListOptions); - const getCardListOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - CustomerKey: deep.linkId, + expect(getCardListResult.error).to.equal(undefined); }; - const getCardListResult = await getCardList(getCardListOptions); + const testResend = async () => { + console.log('testResend-start'); + const resendOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + }; + console.log({ resendOptions }); - expect(getCardListResult.error).to.equal(undefined); - }; + const resendResult = await resend(resendOptions); + console.log({ resendResult }); - const testResend = async () => { - console.log('testResend-start'); - const resendOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + expect(resendResult.error).to.equal(undefined); + console.log('testResend-end'); }; - console.log({ resendOptions }); - - const resendResult = await resend(resendOptions); - console.log({ resendResult }); - - expect(resendResult.error).to.equal(undefined); - console.log('testResend-end'); - }; - - const testCharge = async () => { - console.log('testCharge-start'); - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initResult = await init({ - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Recurrent: 'Y', - }); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - const getCardListOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; + const testCharge = async () => { + console.log('testCharge-start'); + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initResult = await init({ + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + Recurrent: 'Y', + }); - const getCardListResult = await getCardList(getCardListOptions); + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); - expect(getCardListResult.response[0].RebillId).to.have.length.above(0); + const getCardListOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; - const getStateOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; + const getCardListResult = await getCardList(getCardListOptions); - const getStateResult = await getState(getStateOptions); + expect(getCardListResult.response[0].RebillId).to.have.length.above(0); - expect(getStateResult.response.Status).to.equal('AUTHORIZED'); + const getStateOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + PaymentId: initResult.response.PaymentId, + }; - const newInitResult = await init({ - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - }); + const getStateResult = await getState(getStateOptions); - const newChargeOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - PaymentId: newInitResult.response.PaymentId, - RebillId: Number(getCardListResult.response[0].RebillId), - }; + expect(getStateResult.response.Status).to.equal('AUTHORIZED'); - const chargeResult = await charge(newChargeOptions); + const newInitResult = await init({ + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + Amount: PRICE, + OrderId: uniqid(), + CustomerKey: deep.linkId, + }); - expect(chargeResult.error).to.equal(undefined); - console.log('testCharge-end'); - }; + const newChargeOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + PaymentId: newInitResult.response.PaymentId, + RebillId: Number(getCardListResult.response[0].RebillId), + }; - const testAddCustomer = async () => { - console.log('testAddCustomer-start'); + const chargeResult = await charge(newChargeOptions); - const addCustomerOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - CustomerKey: uniqid(), + expect(chargeResult.error).to.equal(undefined); + console.log('testCharge-end'); }; - console.log({ addCustomerOptions }); - - const addCustomerResult = await addCustomer(addCustomerOptions); - console.log({ addCustomerResult }); - expect(addCustomerResult.error).to.equal(undefined); - console.log('testAddCustomer-end'); - }; + const testAddCustomer = async () => { + console.log('testAddCustomer-start'); - const testGetCustomer = async () => { - console.log('testGetCustomer-start'); + const addCustomerOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + CustomerKey: uniqid(), + }; + console.log({ addCustomerOptions }); - const customerOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - CustomerKey: uniqid(), - }; + const addCustomerResult = await addCustomer(addCustomerOptions); + console.log({ addCustomerResult }); - const addCustomerDataOptions = { - ...customerOptions, - Phone: process.env.PAYMENTS_C2B_PHONE, + expect(addCustomerResult.error).to.equal(undefined); + console.log('testAddCustomer-end'); }; - const addResult = await addCustomer(addCustomerDataOptions); + const testGetCustomer = async () => { + console.log('testGetCustomer-start'); - expect(addResult.error).to.equal(undefined); + const customerOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + CustomerKey: uniqid(), + }; - const getResult = await getCustomer(customerOptions); + const addCustomerDataOptions = { + ...customerOptions, + Phone: process.env.PAYMENTS_C2B_PHONE, + }; - expect(getResult.error).to.equal(undefined); - expect(getResult.response.Phone).to.equal( - process.env.PAYMENTS_C2B_PHONE - ); + const addResult = await addCustomer(addCustomerDataOptions); - console.log('testGetCustomer-end'); - }; + expect(addResult.error).to.equal(undefined); - const testRemoveCustomer = async () => { - console.log('testRemoveCustomer-start'); + const getResult = await getCustomer(customerOptions); - const removeCustomerData = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - CustomerKey: uniqid(), - }; + expect(getResult.error).to.equal(undefined); + expect(getResult.response.Phone).to.equal( + process.env.PAYMENTS_C2B_PHONE + ); - const newAddCustomerData = { - ...removeCustomerData, - Phone: process.env.PAYMENTS_C2B_PHONE, + console.log('testGetCustomer-end'); }; - const addResult = await addCustomer(newAddCustomerData); - - expect(addResult.error).to.equal(undefined); + const testRemoveCustomer = async () => { + console.log('testRemoveCustomer-start'); - const removeResult = await removeCustomer(removeCustomerData); + const removeCustomerData = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + CustomerKey: uniqid(), + }; - expect(removeResult.error).to.equal(undefined); - - console.log('testRemoveCustomer-end'); - }; - - await testInit(); - await testConfirm(); - await testGetState(); - await testGetCardList(); - await testResend(); - await testCharge(); - await testAddCustomer(); - await testGetCustomer(); - await testRemoveCustomer(); - }; + const newAddCustomerData = { + ...removeCustomerData, + Phone: process.env.PAYMENTS_C2B_PHONE, + }; - const callIntegrationTests = async () => { + const addResult = await addCustomer(newAddCustomerData); - const createdLinkIds = []; + expect(addResult.error).to.equal(undefined); - const { - data: [{ id: tinkoffProviderLinkId }], - } = await deep.insert({ - type_id: TinkoffProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tinkoffProviderLinkId }); - createdLinkIds.push(tinkoffProviderLinkId); - allCreatedLinkIds.push(tinkoffProviderLinkId); + const removeResult = await removeCustomer(removeCustomerData); - const { - data: [{ id: sumProviderLinkId }], - } = await deep.insert({ - type_id: SumProvider, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ sumProviderLinkId }); - createdLinkIds.push(sumProviderLinkId); - allCreatedLinkIds.push(sumProviderLinkId); + expect(removeResult.error).to.equal(undefined); - const { - data: [{ id: storageBusinessLinkId }], - } = await deep.insert({ - type_id: StorageBusiness, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ storageBusinessLinkId }); - createdLinkIds.push(storageBusinessLinkId); - allCreatedLinkIds.push(storageBusinessLinkId); + console.log('testRemoveCustomer-end'); + }; - const { - data: [{ id: tokenLinkId }], - } = await deep.insert({ - type_id: Token, - from_id: storageBusinessLinkId, - to_id: storageBusinessLinkId, - string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ tokenLinkId }); - createdLinkIds.push(tokenLinkId); - allCreatedLinkIds.push(tokenLinkId); + await testInit(); + await testConfirm(); + await testGetState(); + await testGetCardList(); + await testResend(); + await testCharge(); + await testAddCustomer(); + await testGetCustomer(); + await testRemoveCustomer(); + }; - const { - data: [{ id: Product }], - } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ Product }); - createdLinkIds.push(Product); - allCreatedLinkIds.push(Product); + const callIntegrationTests = async () => { - const { - data: [{ id: productLinkId }], - } = await deep.insert({ - type_id: Product, - in: { - data: [ - { - type_id: Contain, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ productLinkId }); - createdLinkIds.push(productLinkId); - allCreatedLinkIds.push(productLinkId); + const createdLinkIds = []; - const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testInit-start'); + const { + data: [{ id: tinkoffProviderLinkId }], + } = await deep.insert({ + type_id: TinkoffProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ tinkoffProviderLinkId }); + createdLinkIds.push(tinkoffProviderLinkId); + allCreatedLinkIds.push(tinkoffProviderLinkId); - const createdLinkIds = []; + const { + data: [{ id: sumProviderLinkId }], + } = await deep.insert({ + type_id: SumProvider, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ sumProviderLinkId }); + createdLinkIds.push(sumProviderLinkId); + allCreatedLinkIds.push(sumProviderLinkId); const { - data: [{ id: paymentLinkId }], + data: [{ id: storageBusinessLinkId }], } = await deep.insert({ - type_id: Payment, - object: { data: { value: { orderId: uniqid() } } }, - from_id: deep.linkId, - to_id: storageBusinessLinkId, + type_id: StorageBusiness, in: { data: [ { @@ -1776,17 +1696,17 @@ async ( ], }, }); - console.log({ paymentLinkId }); - createdLinkIds.push(paymentLinkId); - allCreatedLinkIds.push(paymentLinkId); + console.log({ storageBusinessLinkId }); + createdLinkIds.push(storageBusinessLinkId); + allCreatedLinkIds.push(storageBusinessLinkId); const { - data: [{ id: sumLinkId }], + data: [{ id: tokenLinkId }], } = await deep.insert({ - type_id: Sum, - from_id: sumProviderLinkId, - to_id: paymentLinkId, - number: { data: { value: PRICE } }, + type_id: Token, + from_id: storageBusinessLinkId, + to_id: storageBusinessLinkId, + string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, in: { data: [ { @@ -1796,16 +1716,16 @@ async ( ], }, }); - console.log({ sumLinkId }); - createdLinkIds.push(sumLinkId); - allCreatedLinkIds.push(sumLinkId); + console.log({ tokenLinkId }); + createdLinkIds.push(tokenLinkId); + allCreatedLinkIds.push(tokenLinkId); const { - data: [{ id: objectLinkId }], + data: [{ id: Product }], } = await deep.insert({ - type_id: Object, - from_id: paymentLinkId, - to_id: productLinkId, + type_id: Type, + from_id: Any, + to_id: Any, in: { data: [ { @@ -1815,16 +1735,14 @@ async ( ], }, }); - console.log({ objectLinkId }); - createdLinkIds.push(objectLinkId); - allCreatedLinkIds.push(objectLinkId); + console.log({ Product }); + createdLinkIds.push(Product); + allCreatedLinkIds.push(Product); const { - data: [{ id: payLinkId }], + data: [{ id: productLinkId }], } = await deep.insert({ - type_id: Pay, - from_id: deep.linkId, - to_id: sumLinkId, + type_id: Product, in: { data: [ { @@ -1834,176 +1752,255 @@ async ( ], }, }); - console.log({ payLinkId }); - createdLinkIds.push(payLinkId); - allCreatedLinkIds.push(payLinkId); - - var urlLinkSelectQuery; - for (let i = 0; i < 10; i++) { - urlLinkSelectQuery = await deep.select({ - type_id: Url, - to_id: payLinkId, + console.log({ productLinkId }); + createdLinkIds.push(productLinkId); + allCreatedLinkIds.push(productLinkId); + + const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testInit-start'); + + const createdLinkIds = []; + + const { + data: [{ id: paymentLinkId }], + } = await deep.insert({ + type_id: Payment, + object: { data: { value: { orderId: uniqid() } } }, + from_id: deep.linkId, + to_id: storageBusinessLinkId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, }); - - if (urlLinkSelectQuery.data.length > 0) { - break; + console.log({ paymentLinkId }); + createdLinkIds.push(paymentLinkId); + allCreatedLinkIds.push(paymentLinkId); + + const { + data: [{ id: sumLinkId }], + } = await deep.insert({ + type_id: Sum, + from_id: sumProviderLinkId, + to_id: paymentLinkId, + number: { data: { value: PRICE } }, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ sumLinkId }); + createdLinkIds.push(sumLinkId); + allCreatedLinkIds.push(sumLinkId); + + const { + data: [{ id: objectLinkId }], + } = await deep.insert({ + type_id: Object, + from_id: paymentLinkId, + to_id: productLinkId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ objectLinkId }); + createdLinkIds.push(objectLinkId); + allCreatedLinkIds.push(objectLinkId); + + const { + data: [{ id: payLinkId }], + } = await deep.insert({ + type_id: Pay, + from_id: deep.linkId, + to_id: sumLinkId, + in: { + data: [ + { + type_id: Contain, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ payLinkId }); + createdLinkIds.push(payLinkId); + allCreatedLinkIds.push(payLinkId); + + var urlLinkSelectQuery; + for (let i = 0; i < 10; i++) { + urlLinkSelectQuery = await deep.select({ + type_id: Url, + to_id: payLinkId, + }); + + if (urlLinkSelectQuery.data.length > 0) { + break; + } + + await sleep(1000); } - await sleep(1000); - } + expect(urlLinkSelectQuery.data.length).to.greaterThan(0); - expect(urlLinkSelectQuery.data.length).to.greaterThan(0); + createdLinkIds.push(urlLinkSelectQuery.data[0].id); + allCreatedLinkIds.push(urlLinkSelectQuery.data[0].id); - createdLinkIds.push(urlLinkSelectQuery.data[0].id); - allCreatedLinkIds.push(urlLinkSelectQuery.data[0].id); + const createdLinks = (await deep.select(createdLinkIds)).data; + console.log({ createdLinks }); - const createdLinks = (await deep.select(createdLinkIds)).data; - console.log({ createdLinks }); + console.log('testInit-end'); - console.log('testInit-end'); + return { + createdLinks + } + }; - return { - createdLinks - } - }; + const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testFinishAuthorize-start'); + const { createdLinks } = await testInit({ customerKey }); - const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testFinishAuthorize-start'); - const { createdLinks } = await testInit({ customerKey }); + const urlLink = createdLinks.find(link => link.type_id === Url); + expect(urlLink).to.not.be.equal(undefined) - const urlLink = createdLinks.find(link => link.type_id === Url); - expect(urlLink).to.not.be.equal(undefined) + const url = urlLink.value.value; + console.log({ url }); - const url = urlLink.value.value; - console.log({ url }); + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url, + }); - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url, - }); + console.log({ createdLinks }); - console.log({ createdLinks }); + console.log('testFinishAuthorize-end'); - console.log('testFinishAuthorize-end'); + return { + createdLinks + } + }; - return { - createdLinks - } - }; + const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { + console.log('testConfirm-start'); + const { createdLinks } = await testFinishAuthorize({ customerKey }); - const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { - console.log('testConfirm-start'); - const { createdLinks } = await testFinishAuthorize({ customerKey }); + const createdLinkIds = []; - const createdLinkIds = []; + const payLink = createdLinks.find(link => link.type_id === Pay); + expect(payLink).to.not.be.equal(undefined); - const payLink = createdLinks.find(link => link.type_id === Pay); - expect(payLink).to.not.be.equal(undefined); + var payedLinkSelectQuery; + for (let i = 0; i < 10; i++) { + payedLinkSelectQuery = await deep.select({ + type_id: Payed, + to_id: payLink.id + }); - var payedLinkSelectQuery; - for (let i = 0; i < 10; i++) { - payedLinkSelectQuery = await deep.select({ - type_id: Payed, - to_id: payLink.id - }); + if (payedLinkSelectQuery.data.length > 0) { + break; + } - if (payedLinkSelectQuery.data.length > 0) { - break; + await sleep(1000); } - await sleep(1000); - } + expect(payedLinkSelectQuery.data.length).to.greaterThan(0); - expect(payedLinkSelectQuery.data.length).to.greaterThan(0); + createdLinkIds.push(payedLinkSelectQuery.data[0].id); + allCreatedLinkIds.push(payedLinkSelectQuery.data[0].id); - createdLinkIds.push(payedLinkSelectQuery.data[0].id); - allCreatedLinkIds.push(payedLinkSelectQuery.data[0].id); + createdLinks.push(...(await deep.select(createdLinkIds)).data); - createdLinks.push(...(await deep.select(createdLinkIds)).data); + console.log({ createdLinks }); - console.log({ createdLinks }); + console.log('testConfirm-end'); - console.log('testConfirm-end'); + return { + createdLinks + } + }; - return { - createdLinks - } + /* + const testGetState = async () => { + console.log('testGetState-start'); + await testFinishAuthorize(); + + const { + data: [payLink], + } = await deep.select({ type_id: Pay }); + + const bankPaymentId = await getBankPaymentId( + payLink?.value?.value ?? payLink.id + ); + + const getStateOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + PaymentId: bankPaymentId, }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.error).to.equal(undefined); + console.log('testGetState-end'); + }; + + const testGetCardList = async () => { + console.log('testGetCardList-end'); + await testFinishAuthorize(); + + const getCardListOptions = { + TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, + CustomerKey: deep.linkId, + }; + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.error).to.equal(undefined); + console.log('testGetCardList-end'); + }; + */ + { + const { createdLinks } = await testInit(); + await deep.delete(createdLinks.map((link) => link.id)); + } + { + const { createdLinks } = await testFinishAuthorize(); + await deep.delete(createdLinks.map((link) => link.id)); + } + { + const { createdLinks } = await testConfirm(); + await deep.delete(createdLinks.map((link) => link.id)); + } - /* - const testGetState = async () => { - console.log('testGetState-start'); - await testFinishAuthorize(); - - const { - data: [payLink], - } = await deep.select({ type_id: Pay }); - - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); - - const getStateOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - PaymentId: bankPaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.error).to.equal(undefined); - console.log('testGetState-end'); - }; - - const testGetCardList = async () => { - console.log('testGetCardList-end'); - await testFinishAuthorize(); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.error).to.equal(undefined); - console.log('testGetCardList-end'); - }; - */ - { - const { createdLinks } = await testInit(); - await deep.delete(createdLinks.map((link) => link.id)); - } - { - const { createdLinks } = await testFinishAuthorize(); - await deep.delete(createdLinks.map((link) => link.id)); - } - { - const { createdLinks } = await testConfirm(); - await deep.delete(createdLinks.map((link) => link.id)); - } + await deep.delete(createdLinkIds); - await deep.delete(createdLinkIds); + /*await testGetState(); + await testGetCardList();*/ + }; - /*await testGetState(); - await testGetCardList();*/ + // await callRealizationTests(); + await callIntegrationTests(); }; - // await callRealizationTests(); - await callIntegrationTests(); - }; - - await callTests(); -}; + await callTests(); -const installPackageWithTryCatch = async () => { - try { - await installPackage(); } catch (error) { await deep.delete(allCreatedLinkIds); } -} +}; -installPackageWithTryCatch() +installPackage(); \ No newline at end of file From dc4d204569a36b9e9365d93da739d16d1d39fa2c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 07:32:48 +0000 Subject: [PATCH 547/683] Throw error in catch after deleting created links --- payments-tinkoff-c2b-cancelling.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index c9036518..fca2c6ec 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -1957,6 +1957,7 @@ async ( } catch (error) { await deep.delete(allCreatedLinkIds); + throw error; } }; From 0cfb2efc55ea411f7697f10237572c0ea2dae595 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 07:33:07 +0000 Subject: [PATCH 548/683] Throw error in catch after deleting created links --- payments-tinkoff-c2b.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 4c360bbb..720d8cb5 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -2000,6 +2000,7 @@ async ( } catch (error) { await deep.delete(allCreatedLinkIds); + throw error; } }; From ed17c63ab4f940cbda8c7f9e9922aa1e5dc48577 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 08:03:03 +0000 Subject: [PATCH 549/683] Return if status is not AUTHORIZED or CONFIRMED in notification handlers --- payments-tinkoff-c2b.cjs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 720d8cb5..f23e342a 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1131,6 +1131,11 @@ async ( { deep, require, gql } ) => { ${handlersDependencies} + + if(req.body.Status !== "AUTHORIZED" || req.body.Status !== "CONFIRMED") { + return; + } + const reqBody = req.body; console.log({reqBody}); From 19f722ddeb2ec3f77e84481453012a808cb62b8b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 08:03:03 +0000 Subject: [PATCH 550/683] Return if status is not AUTHORIZED or CONFIRMED in notification handlers --- payments-tinkoff-c2b.cjs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 720d8cb5..f23e342a 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1131,6 +1131,11 @@ async ( { deep, require, gql } ) => { ${handlersDependencies} + + if(req.body.Status !== "AUTHORIZED" || req.body.Status !== "CONFIRMED") { + return; + } + const reqBody = req.body; console.log({reqBody}); From 632d70a7b1ffa493b13aa0f2c4dd8b0bcc2f764e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 10:09:16 +0000 Subject: [PATCH 551/683] Exit with code 1 if error --- payments-tinkoff-c2b-cancelling.cjs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index fca2c6ec..ae90326b 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -790,7 +790,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { TerminalKey: "${process.env.PAYMENTS_C2B_TERMINAL_KEY}", PaymentId: cancelledPaymentLink.value.value.bankPaymentId, Amount: sumLink.value.value, - NotificationURL: "${process.env.PAYMENTS_C2B_CANCELLING_NOTIFICATION_URL}", }; console.log({ cancelOptions }); @@ -879,7 +878,7 @@ async ( // Canceled is used instead of Cancelled because tinkoff team is not goos at english if (req.body.Status !== 'CANCELED') { - return; + return next(); } const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); @@ -941,7 +940,7 @@ async ( { type_id: await deep.id('@deep-foundation/core', 'Port'), number: { - data: { value: process.env.PAYMENTS_C2B_CANCELLING_NOTIFICATION_PORT }, + data: { value: process.env.PAYMENTS_C2B_NOTIFICATION_PORT }, }, in: { data: { @@ -1612,7 +1611,7 @@ async ( expect(payLink).to.not.equal(undefined); var payedLinkSelectQuery; - for (let i = 0; i < 10; i++) { + for (let i = 0; i < 30; i++) { payedLinkSelectQuery = await deep.select({ type_id: Payed, to_id: payLink.id @@ -1957,7 +1956,8 @@ async ( } catch (error) { await deep.delete(allCreatedLinkIds); - throw error; + console.log(error); + process.exit(1); } }; From 842576908394925220d1b2000f9b56cec384780f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 10:09:28 +0000 Subject: [PATCH 552/683] Exit with code 1 if error --- payments-tinkoff-c2b.cjs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index f23e342a..1ecf110a 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1133,7 +1133,7 @@ async ( ${handlersDependencies} if(req.body.Status !== "AUTHORIZED" || req.body.Status !== "CONFIRMED") { - return; + return next(); } const reqBody = req.body; @@ -2005,7 +2005,8 @@ async ( } catch (error) { await deep.delete(allCreatedLinkIds); - throw error; + console.log(error); + process.exit(1); } }; From f5301f38c85e599d95a18d2e8b3b9e299dc2b8ba Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 10:49:13 +0000 Subject: [PATCH 553/683] Temporarily do not inherit types and use Type as type_id and use Any as from_id and to_id --- payments-tinkoff-c2b.cjs | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 1ecf110a..dd52e63d 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -653,7 +653,7 @@ const installPackage = async () => { const { data: [{ id: Payment }], } = await deep.insert({ - type_id: BasePayment, + type_id: Type, from_id: Any, to_id: Any, in: { @@ -670,7 +670,7 @@ const installPackage = async () => { const { data: [{ id: Object }], } = await deep.insert({ - type_id: BaseObject, + type_id: Type, from_id: Payment, to_id: Any, in: { @@ -687,8 +687,8 @@ const installPackage = async () => { const { data: [{ id: Sum }], } = await deep.insert({ - type_id: BaseSum, - from_id: SumProvider, + type_id: Type, + from_id: Any, to_id: Any, in: { data: { @@ -705,7 +705,7 @@ const installPackage = async () => { const { data: [{ id: Pay }], } = await deep.insert({ - type_id: BasePay, + type_id: Type, from_id: Any, to_id: Any, in: { @@ -722,9 +722,9 @@ const installPackage = async () => { const { data: [{ id: Url }], } = await deep.insert({ - type_id: BaseUrl, - from_id: TinkoffProvider, - to_id: Pay, + type_id: Type, + from_id: Any, + to_id: Any, in: { data: { type_id: Contain, @@ -739,8 +739,8 @@ const installPackage = async () => { const { data: [{ id: Payed }], } = await deep.insert({ - type_id: BasePayed, - from_id: TinkoffProvider, + type_id: Type, + from_id: Any, to_id: Any, in: { data: { @@ -756,9 +756,9 @@ const installPackage = async () => { const { data: [{ id: Error }], } = await deep.insert({ - type_id: BaseError, - from_id: TinkoffProvider, - to_id: Pay, + type_id: Type, + from_id: Any, + to_id: Any, in: { data: { type_id: Contain, @@ -874,7 +874,9 @@ const installPackage = async () => { const { data: [{ id: StorageBusiness }], } = await deep.insert({ - type_id: Storage, + type_id: Type, + from_id: Any, + to_id: Any, in: { data: { type_id: Contain, @@ -902,8 +904,8 @@ const installPackage = async () => { const { data: [{ id: StorageClient }], } = await deep.insert({ - type_id: Storage, - from_id: Payment, + type_id: Type, + from_id: Any, to_id: Any, in: { data: { @@ -918,8 +920,8 @@ const installPackage = async () => { data: [{ id: Title }], } = await deep.insert({ type_id: Type, - from_id: StorageClient, - to_id: SyncTextFile, + from_id: Any, + to_id: Any, in: { data: { type_id: Contain, From 27790617782c5743a623b0d7362533cd233e3679 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 11:36:41 +0000 Subject: [PATCH 554/683] Use sumLink.value.value instead of hardcoded sumLink.value.value --- payments-tinkoff-c2b.cjs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index dd52e63d..e0988303 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -24,7 +24,6 @@ var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); console.log('Installing payments-tinkoff-c2b package'); -const PRICE = 5500; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); @@ -1022,7 +1021,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { CustomerKey: deep.linkId, NotificationURL: "${process.env.PAYMENTS_C2B_NOTIFICATION_URL}", PayType: 'T', - Amount: ${PRICE}, + Amount: sumLink.value.value, Description: 'Test shopping', Language: 'ru', Recurrent: 'Y', @@ -1035,7 +1034,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { // Name: 'Test item', // Price: sum, // Quantity: 1, - // Amount: ${PRICE}, + // Amount: sumLink.value.value, // PaymentMethod: 'prepayment', // PaymentObject: 'service', // Tax: 'none', @@ -1367,6 +1366,8 @@ async ( const callTests = async () => { console.log('callTests-start'); + const PRICE = 5500; + const callRealizationTests = async () => { const testInit = async () => { const initOptions = { From 849ee6c7d7e39184a52ba382de01ce4a3b93ea19 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 16:22:18 +0000 Subject: [PATCH 555/683] userLink -> fromLinkOfPayment --- payments-tinkoff-c2b.cjs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 1ecf110a..62147137 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -988,12 +988,12 @@ async ({ deep, require, data: { newLink: payLink } }) => { const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); - const userLinkSelectQuery = await deep.select({ + const fromLinkOfPaymentSelectQuery = await deep.select({ id: paymentLink.from_id }); - if(userLinkSelectQuery.error) { throw new Error(userLinkSelectQuery.error.message); } - const userLink = userLinkSelectQuery.data[0]; - console.log({userLink}); + if(fromLinkOfPaymentSelectQuery.error) { throw new Error(fromLinkOfPaymentSelectQuery.error.message); } + const fromLinkOfPayment = fromLinkOfPaymentSelectQuery.data[0]; + console.log({fromLinkOfPayment}); const storageBusinessLinkSelectQuery = await deep.select({ id: paymentLink.to_id From 6b9af34cee39ef0c51c23eee89718dfa12bfa5f1 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 16:22:18 +0000 Subject: [PATCH 556/683] userLink -> fromLinkOfPayment --- payments-tinkoff-c2b.cjs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index e0988303..8f80cbef 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -989,12 +989,12 @@ async ({ deep, require, data: { newLink: payLink } }) => { const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); - const userLinkSelectQuery = await deep.select({ + const fromLinkOfPaymentSelectQuery = await deep.select({ id: paymentLink.from_id }); - if(userLinkSelectQuery.error) { throw new Error(userLinkSelectQuery.error.message); } - const userLink = userLinkSelectQuery.data[0]; - console.log({userLink}); + if(fromLinkOfPaymentSelectQuery.error) { throw new Error(fromLinkOfPaymentSelectQuery.error.message); } + const fromLinkOfPayment = fromLinkOfPaymentSelectQuery.data[0]; + console.log({fromLinkOfPayment}); const storageBusinessLinkSelectQuery = await deep.select({ id: paymentLink.to_id From bb3bd11e060c579921f0e5646ab0eae2b9e9fa54 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 11:36:41 +0000 Subject: [PATCH 557/683] Use the existing storage if already created or create --- payments-tinkoff-c2b.cjs | 85 +++++++++++++++++++++------------------- 1 file changed, 45 insertions(+), 40 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 8f80cbef..00a1bafc 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1221,49 +1221,54 @@ async ( from_id: tinkoffProviderLinkId, to_id: payLink.id, }); - if(payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } - const payedLinkId = payedLinkInsertQuery.data[0].id; - console.log({payedLinkId}); - - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - const storageClientLinkSelectQuery = await deep.select({ - type_id: StorageClient, - number: {value: req.body.CardId} - }); - console.log({storageClientLinkSelectQuery}); - if(storageClientLinkSelectQuery.error) {throw new Error(storageClientLinkSelectQuery.error.message);} - - if(storageClientLinkSelectQuery.data.length > 0) { + if(payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } + const payedLinkId = payedLinkInsertQuery.data[0].id; + console.log({payedLinkId}); + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - const storageClientLinkInsertQuery = await deep.insert({ + const storageClientLinkSelectQuery = await deep.select({ type_id: StorageClient, - number: {data: {value: req.body.CardId}}, + number: {value: req.body.CardId} }); - console.log({storageClientLinkInsertQuery}); - if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} - const storageClientLinkId = storageClientLinkInsertQuery.data[0].id; - - const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); - const titleLinkInsertQuery = await deep.insert({ - type_id: Title, - from_id: storageClientLinkId, - to_id: storageClientLinkId, - string: {data: {value: req.body.Pan}}, - }); - if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} - const titleLinkId = titleLinkInsertQuery.data[0].id; - console.log({titleLinkId}); - } - - const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); - const incomeLinkInsertQuery = await deep.insert({ - type_id: Income, - from_id: paymentLink.id, - to_id: storageClientLinkId, - }); - if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} - const incomeLinkId = incomeLinkInsertQuery.data[0].id; - console.log({incomeLinkId}); + console.log({storageClientLinkSelectQuery}); + if(storageClientLinkSelectQuery.error) {throw new Error(storageClientLinkSelectQuery.error.message);} + + if(fromLinkOfPayment.type_id !== StorageClient) { + var storageClientLinkId; + if(storageClientLinkSelectQuery.data.length === 0) { + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + const storageClientLinkInsertQuery = await deep.insert({ + type_id: StorageClient, + number: {data: {value: req.body.CardId}}, + }); + console.log({storageClientLinkInsertQuery}); + if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} + storageClientLinkId = storageClientLinkInsertQuery.data[0].id; + + const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); + const titleLinkInsertQuery = await deep.insert({ + type_id: Title, + from_id: storageClientLinkId, + to_id: storageClientLinkId, + string: {data: {value: req.body.Pan}}, + }); + if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} + const titleLinkId = titleLinkInsertQuery.data[0].id; + console.log({titleLinkId}); + } else { + storageClientLinkId = storageClientLinkSelectQuery.data[0]; + } + const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); + const incomeLinkInsertQuery = await deep.insert({ + type_id: Income, + from_id: paymentLink.id, + to_id: storageClientLinkId, + }); + if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} + const incomeLinkId = incomeLinkInsertQuery.data[0].id; + console.log({incomeLinkId}); + + } } res.send('ok'); }; From f9df4baa5c7f30656d6002575611669be8031ebd Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 16:58:24 +0000 Subject: [PATCH 558/683] Add TODO --- payments-tinkoff-c2b.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 00a1bafc..c9aa6678 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1015,6 +1015,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const tokenLink = tokenLinkSelectQuery.data[0]; console.log({tokenLink}); + // TODO Add default card const options = { TerminalKey: tokenLink.value.value, OrderId: paymentLink?.value?.value.orderId ?? paymentLink.id, From 546eda5ec1081fbb5073a58c6e18897648836f1d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 16:59:15 +0000 Subject: [PATCH 559/683] Get Url type right before using it --- payments-tinkoff-c2b.cjs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index c9aa6678..9003d607 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -987,8 +987,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({sumLink}); if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); - const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); - const fromLinkOfPaymentSelectQuery = await deep.select({ id: paymentLink.from_id }); @@ -1061,6 +1059,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { throw new Error(errorMessage); } + const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); const {error: urlLinkInsertQueryError} = await deep.insert({ type_id: Url, from_id: tinkoffProviderLinkId, From 5368972bede730303225dea29efed8b8b5aace65 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 20 Sep 2022 17:22:34 +0000 Subject: [PATCH 560/683] Add and use callTest. Find error links and delete them too --- payments-tinkoff-c2b.cjs | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 9003d607..4c1346bc 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1986,22 +1986,28 @@ async ( console.log('testGetCardList-end'); }; */ - { - const { createdLinks } = await testInit(); - await deep.delete(createdLinks.map((link) => link.id)); - } - { - const { createdLinks } = await testFinishAuthorize(); - await deep.delete(createdLinks.map((link) => link.id)); - } - { - const { createdLinks } = await testConfirm(); - await deep.delete(createdLinks.map((link) => link.id)); + + const callTest = async (testFunction) => { + const { createdLinks } = await testFunction(); + for (const createdLink of createdLinks) { + if(createdLink.type_id === Pay) { + const errorLinkSelectQuery = await deep.select({ + type_id: Error, + to_id: createdLink.id + }); + createdLinks.push(...errorLinkSelectQuery.data); + } } + await deep.delete(createdLinks.map((link) => link.id)); + } + + await callTest(testInit); + await callTest(testFinishAuthorize); + await callTest(testConfirm); - await deep.delete(createdLinkIds); + await deep.delete(createdLinkIds); - /*await testGetState(); + /*await testGetState(); await testGetCardList();*/ }; From 11db99a526e939b4252866650b96cfda06f532da Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 18 Oct 2022 12:52:52 +0000 Subject: [PATCH 561/683] Format --- payments-tinkoff-c2b.cjs | 498 ++------------------------------------- 1 file changed, 16 insertions(+), 482 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 4c1346bc..f88cfa54 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -19,6 +19,19 @@ const { get } = require('lodash'); const { default: links, } = require('@deep-foundation/deeplinks/imports/router/links'); +const {payInBrowser} = require("./deep-packges/payments/tinkoff/payInBrowser.cjs"); +import {getError} from "./deep-packges/payments/tinkoff/getError.cjs"; +import { generateToken, generateTokenStringWithInsertedTerminalPassword } from "./deep-packges/payments/tinkoff/generateToken.cjs"; +import { getUrl } from "./deep-packges/payments/tinkoff/getUrl.cjs"; +import { getState } from "./deep-packges/payments/tinkoff/getState.cjs"; +import { checkOrder } from "./deep-packges/payments/tinkoff/checkOrder.cjs"; +import { getCardList } from "./deep-packges/payments/tinkoff/getCardList.cjs"; +import { init } from "./deep-packges/payments/tinkoff/init.cjs"; +import { charge } from "./deep-packges/payments/tinkoff/charge.cjs"; +import { addCustomer } from "./deep-packges/payments/tinkoff/addCustomer.cjs"; +import { getCustomer } from "./deep-packges/payments/tinkoff/getCustomer.cjs"; +import { removeCustomer } from "./deep-packges/payments/tinkoff/removeCustomer.cjs"; +import { handlersDependencies } from "./deep-packges/payments/tinkoff/handlersDependencies.cjs"; var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); @@ -27,96 +40,6 @@ console.log('Installing payments-tinkoff-c2b package'); const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); -const payInBrowser = async ({ page, browser, url }) => { - await page.goto(url, { waitUntil: 'networkidle2' }); - await sleep(5000); - const oldForm = await page.evaluate(() => { - return !!document.querySelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - }); - if (oldForm) { - console.log('OLD FORM!!!!!!!'); - // Старая форма используется на тестовом сервере - const cvc1 = await page.evaluate(() => { - return !!document.querySelector( - 'button[automation-id="pay-card__submit"]' - ); - }); - if (cvc1) { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENTS_C2B_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENTS_C2B_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENTS_C2B_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-card__submit"]'); // submit button - } else { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_E2C_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_E2C_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-wallet__submit"]'); // submit button - await sleep(300); - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(1000); - } - // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен - await sleep(1000); - } else { - console.log('NEW FORM!!!!!!!'); - await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number - await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date - await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code - await page.click('button[type=submit]'); // submit button - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(3000); - } - await browser.close(); -}; - const allCreatedLinkIds = []; const installPackage = async () => { @@ -138,386 +61,6 @@ const installPackage = async () => { const deep = new DeepClient({ deep: guestDeep, ...admin }); try { - - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - - const _generateToken = (dataWithPassword) => { - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => `${acc}${item}`, ''); - console.log({ dataString }); - const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - console.log({ hash }); - return hash; - }; - - const generateToken = (data) => { - const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { - ...restData, - Password: process.env.PAYMENTS_C2B_TERMINAL_PASSWORD, - }; - console.log({ dataWithPassword }); - return _generateToken(dataWithPassword); - }; - const generateTokenString = generateToken - .toString() - .replace( - 'process.env.PAYMENTS_C2B_TERMINAL_PASSWORD', - `"${process.env.PAYMENTS_C2B_TERMINAL_PASSWORD}"` - ); - console.log({ generateTokenString }); - - const getUrl = (method) => - `${process.env.PAYMENTS_C2B_URL}/${method}`; - getUrlString = getUrl - .toString() - .replace( - '${process.env.PAYMENTS_C2B_URL}', - process.env.PAYMENTS_C2B_URL - ); - console.log({ getUrlString }); - - const getMarketUrl = (method) => - `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; - - const getState = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetState'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const checkOrder = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('CheckOrder'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCardList = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCardList'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode || '0'); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const init = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Init'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const resend = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Resend'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const charge = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Charge'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const addCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('AddCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const removeCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('RemoveCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getBankPaymentId = async (orderId) => { - const checkOrderOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - OrderId: orderId, - }; - - const checkOrderResult = await checkOrder(checkOrderOptions); - expect(checkOrderResult.error).to.equal(undefined); - - console.log({ checkOrderResponse: checkOrderResult }); - - const { PaymentId: bankPaymentId } = checkOrderResult.response.Payments[0]; - - console.log({ bankPaymentId }); - return bankPaymentId; - }; - const User = await deep.id('@deep-foundation/core', 'User'); const Type = await deep.id('@deep-foundation/core', 'Type'); const Any = await deep.id('@deep-foundation/core', 'Any'); @@ -534,7 +77,6 @@ const installPackage = async () => { ); const Handler = await deep.id('@deep-foundation/core', 'Handler'); const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); - const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); const Tree = await deep.id('@deep-foundation/core', 'Tree'); const TreeIncludeNode = await deep.id( @@ -947,15 +489,7 @@ const installPackage = async () => { }); console.log({ Income }); - const handlersDependencies = ` - const crypto = require('crypto'); - const axios = require('axios'); - const errorsConverter = ${JSON.stringify(errorsConverter)}; - const getError = ${getError.toString()}; - const getUrl = ${getUrlString}; - const _generateToken = ${_generateToken.toString()}; - const generateToken = ${generateTokenString}; - `; + console.log({ handlersDependencies }); const payInsertHandler = ` async ({ deep, require, data: { newLink: payLink } }) => { @@ -1000,8 +534,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { if(storageBusinessLinkSelectQuery.error) { throw new Error(storageBusinessLinkSelectQuery.error.message); } const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; console.log({storageBusinessLinkId}); - - const init = ${init.toString()}; const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); const tokenLinkSelectQuery = await deep.select({ @@ -1013,6 +545,8 @@ async ({ deep, require, data: { newLink: payLink } }) => { const tokenLink = tokenLinkSelectQuery.data[0]; console.log({tokenLink}); + const init = ${init.toString()}; + // TODO Add default card const options = { TerminalKey: tokenLink.value.value, From 3fe07bcae34fd558c14f7be4e7f8d1dca7e91680 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 18 Oct 2022 12:53:29 +0000 Subject: [PATCH 562/683] Separate code --- deep-packges/payments/tinkoff/addCustomer.cjs | 33 +++++++ deep-packges/payments/tinkoff/charge.cjs | 33 +++++++ deep-packges/payments/tinkoff/checkOrder.cjs | 33 +++++++ deep-packges/payments/tinkoff/confirm.cjs | 30 ++++++ deep-packges/payments/tinkoff/errors.cjs | 63 +++++++++++++ .../payments/tinkoff/generateToken.cjs | 27 ++++++ deep-packges/payments/tinkoff/getCardList.cjs | 33 +++++++ deep-packges/payments/tinkoff/getCustomer.cjs | 33 +++++++ deep-packges/payments/tinkoff/getError.cjs | 7 ++ deep-packges/payments/tinkoff/getState.cjs | 30 ++++++ deep-packges/payments/tinkoff/getUrl.cjs | 12 +++ .../payments/tinkoff/handlersDependencies.cjs | 16 ++++ deep-packges/payments/tinkoff/init.cjs | 33 +++++++ .../payments/tinkoff/payInBrowser.cjs | 93 +++++++++++++++++++ .../payments/tinkoff/removeCustomer.cjs | 33 +++++++ deep-packges/payments/tinkoff/resend.cjs | 30 ++++++ 16 files changed, 539 insertions(+) create mode 100644 deep-packges/payments/tinkoff/addCustomer.cjs create mode 100644 deep-packges/payments/tinkoff/charge.cjs create mode 100644 deep-packges/payments/tinkoff/checkOrder.cjs create mode 100644 deep-packges/payments/tinkoff/confirm.cjs create mode 100644 deep-packges/payments/tinkoff/errors.cjs create mode 100644 deep-packges/payments/tinkoff/generateToken.cjs create mode 100644 deep-packges/payments/tinkoff/getCardList.cjs create mode 100644 deep-packges/payments/tinkoff/getCustomer.cjs create mode 100644 deep-packges/payments/tinkoff/getError.cjs create mode 100644 deep-packges/payments/tinkoff/getState.cjs create mode 100644 deep-packges/payments/tinkoff/getUrl.cjs create mode 100644 deep-packges/payments/tinkoff/handlersDependencies.cjs create mode 100644 deep-packges/payments/tinkoff/init.cjs create mode 100644 deep-packges/payments/tinkoff/payInBrowser.cjs create mode 100644 deep-packges/payments/tinkoff/removeCustomer.cjs create mode 100644 deep-packges/payments/tinkoff/resend.cjs diff --git a/deep-packges/payments/tinkoff/addCustomer.cjs b/deep-packges/payments/tinkoff/addCustomer.cjs new file mode 100644 index 00000000..8394fe6b --- /dev/null +++ b/deep-packges/payments/tinkoff/addCustomer.cjs @@ -0,0 +1,33 @@ +const axios = require('axios'); +const { generateToken } = require("./generateToken.cjs"); +const { getError } = require("./getError.cjs"); +const { getUrl } = require("./getUrl.cjs"); + +const addCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('AddCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + exports.addCustomer = addCustomer; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/charge.cjs b/deep-packges/payments/tinkoff/charge.cjs new file mode 100644 index 00000000..1eb50e0b --- /dev/null +++ b/deep-packges/payments/tinkoff/charge.cjs @@ -0,0 +1,33 @@ +const axios = require('axios'); +const { generateToken } = require("./generateToken.cjs"); +const { getError } = require("./getError.cjs"); +const { getUrl } = require("./getUrl.cjs"); + +const charge = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Charge'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + exports.charge = charge; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/checkOrder.cjs b/deep-packges/payments/tinkoff/checkOrder.cjs new file mode 100644 index 00000000..ea24d212 --- /dev/null +++ b/deep-packges/payments/tinkoff/checkOrder.cjs @@ -0,0 +1,33 @@ +const axios = require('axios'); +const { generateToken } = require("./generateToken.cjs"); +const { getError } = require("./getError.cjs"); +const { getUrl } = require("./getUrl.cjs"); + +const checkOrder = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('CheckOrder'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + exports.checkOrder = checkOrder; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/confirm.cjs b/deep-packges/payments/tinkoff/confirm.cjs new file mode 100644 index 00000000..5b3fcfe2 --- /dev/null +++ b/deep-packges/payments/tinkoff/confirm.cjs @@ -0,0 +1,30 @@ +const axios = require('axios'); +const { generateToken } = require("./generateToken.cjs"); +const { getError } = require("./getError.cjs"); +const { getUrl } = require("./getUrl.cjs"); + +const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + exports.confirm = confirm; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/errors.cjs b/deep-packges/payments/tinkoff/errors.cjs new file mode 100644 index 00000000..167bed73 --- /dev/null +++ b/deep-packges/payments/tinkoff/errors.cjs @@ -0,0 +1,63 @@ +const axios = require('axios'); +const { generateToken } = require("./generateToken.cjs"); +const { getError } = require("./getError.cjs"); +const { getUrl } = require("./getUrl.cjs"); + +const errors = { + 7: 'Покупатель не найден', + 53: 'Обратитесь к продавцу', + 99: 'Платеж отклонен', + 100: 'Повторите попытку позже', + 101: 'Не пройдена идентификация 3DS', + 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', + 103: 'Повторите попытку позже', + 119: 'Превышено кол-во запросов на авторизацию', + 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', + 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1003: 'Неверный merchant ID', + 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1005: 'Платеж отклонен банком, выпустившим карту', + 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', + 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1008: 'Платеж отклонен, необходима идентификация', + 1012: 'Такие операции запрещены для этой карты', + 1013: 'Повторите попытку позже', + 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', + 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', + 1019: 'Платеж отклонен — попробуйте снова', + 1030: 'Повторите попытку позже', + 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', + 1034: 'Попробуйте повторить попытку позже', + 1038: 'Превышено количество попыток ввода ПИН-кода', + 1039: 'Платеж отклонен — счет не найден', + 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', + 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', + 1051: 'Недостаточно средств на карте', + 1053: 'Платеж отклонен — счет не найден', + 1054: 'Истек срок действия карты', + 1055: 'Неверный ПИН', + 1057: 'Такие операции запрещены для этой карты', + 1058: 'Такие операции запрещены для этой карты', + 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1061: 'Превышен дневной лимит платежей по карте', + 1062: 'Платежи по карте ограничены', + 1063: 'Операции по карте ограничены', + 1064: 'Проверьте сумму', + 1065: 'Превышен дневной лимит транзакций', + 1075: 'Превышено число попыток ввода ПИН-кода', + 1076: 'Платеж отклонен — попробуйте снова', + 1077: 'Коды не совпадают — попробуйте снова', + 1080: 'Неверный срок действия', + 1082: 'Неверный CVV', + 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', + 1088: 'Ошибка шифрования. Попробуйте снова', + 1089: 'Попробуйте повторить попытку позже', + 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', + 1092: 'Платеж отклонен — попробуйте снова', + 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', + 1094: 'Системная ошибка', + 1096: 'Повторите попытку позже', + 9999: 'Внутренняя ошибка системы', + }; + + exports.errors = errors; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/generateToken.cjs b/deep-packges/payments/tinkoff/generateToken.cjs new file mode 100644 index 00000000..1de43c61 --- /dev/null +++ b/deep-packges/payments/tinkoff/generateToken.cjs @@ -0,0 +1,27 @@ +const crypto = require('crypto'); + + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + ...restData, + }; + console.log({ dataWithPassword }); + + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + console.log({ dataString }); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + console.log({ hash }); + return hash; + }; + const generateTokenStringWithInsertedTerminalPassword = generateToken + .toString() + .replace( + 'process.env.PAYMENTS_C2B_TERMINAL_PASSWORD', + `"${process.env.PAYMENTS_C2B_TERMINAL_PASSWORD}"` + ); + + exports.generateToken = generateToken; + exports.generateTokenStringWithInsertedTerminalPassword = generateTokenStringWithInsertedTerminalPassword; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/getCardList.cjs b/deep-packges/payments/tinkoff/getCardList.cjs new file mode 100644 index 00000000..a40e0a35 --- /dev/null +++ b/deep-packges/payments/tinkoff/getCardList.cjs @@ -0,0 +1,33 @@ +const axios = require('axios'); +const { generateToken } = require("./generateToken.cjs"); +const { getError } = require("./getError.cjs"); +const { getUrl } = require("./getUrl.cjs"); + +const getCardList = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCardList'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode || '0'); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + exports.getCardList = getCardList; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/getCustomer.cjs b/deep-packges/payments/tinkoff/getCustomer.cjs new file mode 100644 index 00000000..900b61b4 --- /dev/null +++ b/deep-packges/payments/tinkoff/getCustomer.cjs @@ -0,0 +1,33 @@ +const axios = require('axios'); +const { generateToken } = require("./generateToken.cjs"); +const { getError } = require("./getError.cjs"); +const { getUrl } = require("./getUrl.cjs"); + +const getCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + exports.getCustomer = getCustomer; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/getError.cjs b/deep-packges/payments/tinkoff/getError.cjs new file mode 100644 index 00000000..620ebfe6 --- /dev/null +++ b/deep-packges/payments/tinkoff/getError.cjs @@ -0,0 +1,7 @@ +const {errors} = require("./errors.cjs"); + +const getError = (errorCode) => + errorCode === '0' ? undefined : errors[errorCode] || 'broken'; + + +exports.getError = getError; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/getState.cjs b/deep-packges/payments/tinkoff/getState.cjs new file mode 100644 index 00000000..1196cc8e --- /dev/null +++ b/deep-packges/payments/tinkoff/getState.cjs @@ -0,0 +1,30 @@ +const axios = require('axios'); +const { generateToken } = require("./generateToken.cjs"); +const { getError } = require("./getError.cjs"); +const { getUrl } = require("./getUrl.cjs"); + +const getState = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('GetState'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + exports.getState = getState; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/getUrl.cjs b/deep-packges/payments/tinkoff/getUrl.cjs new file mode 100644 index 00000000..3354a2c0 --- /dev/null +++ b/deep-packges/payments/tinkoff/getUrl.cjs @@ -0,0 +1,12 @@ +const getUrl = (method) => + `${process.env.PAYMENTS_C2B_URL}/${method}`; + getUrlString = getUrl + .toString() + .replace( + '${process.env.PAYMENTS_C2B_URL}', + process.env.PAYMENTS_C2B_URL + ); + console.log({ getUrlString }); + + exports.getUrl = getUrl; + exports.getUrlString = getUrlString; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/handlersDependencies.cjs b/deep-packges/payments/tinkoff/handlersDependencies.cjs new file mode 100644 index 00000000..3785f64d --- /dev/null +++ b/deep-packges/payments/tinkoff/handlersDependencies.cjs @@ -0,0 +1,16 @@ +import { errors } from "./errors.cjs"; +import { getError } from "./getError.cjs"; +import { getUrlString } from "./getUrl.cjs"; +import { generateTokenStringWithInsertedTerminalPassword } from "./generateToken.cjs"; + + +const handlersDependencies = ` +const crypto = require('crypto'); +const axios = require('axios'); +const errorsConverter = ${JSON.stringify(errors)}; +const getError = ${getError.toString()}; +const getUrl = ${getUrlString}; +const generateToken = ${generateTokenStringWithInsertedTerminalPassword}; +`; + +exports.handlersDependencies = handlersDependencies; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/init.cjs b/deep-packges/payments/tinkoff/init.cjs new file mode 100644 index 00000000..8d178167 --- /dev/null +++ b/deep-packges/payments/tinkoff/init.cjs @@ -0,0 +1,33 @@ +const axios = require('axios'); +const { generateToken } = require("./generateToken.cjs"); +const { getError } = require("./getError.cjs"); +const { getUrl } = require("./getUrl.cjs"); + +const init = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Init'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + exports.init = init; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/payInBrowser.cjs b/deep-packges/payments/tinkoff/payInBrowser.cjs new file mode 100644 index 00000000..86422bd0 --- /dev/null +++ b/deep-packges/payments/tinkoff/payInBrowser.cjs @@ -0,0 +1,93 @@ + + +const payInBrowser = async ({ page, browser, url }) => { + await page.goto(url, { waitUntil: 'networkidle2' }); + await sleep(5000); + const oldForm = await page.evaluate(() => { + return !!document.querySelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + }); + if (oldForm) { + console.log('OLD FORM!!!!!!!'); + // Старая форма используется на тестовом сервере + const cvc1 = await page.evaluate(() => { + return !!document.querySelector( + 'button[automation-id="pay-card__submit"]' + ); + }); + if (cvc1) { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENTS_C2B_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENTS_C2B_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENTS_C2B_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-card__submit"]'); // submit button + } else { + await page.waitForSelector( + 'input[automation-id="tui-input-card-grouped__card"]' + ); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__card"]', + process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS + ); // card number + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__expire"]', + process.env.PAYMENT_E2C_CARD_EXPDATE + ); // expired date + await sleep(300); + await page.keyboard.press('Tab'); + await sleep(300); + await page.type( + 'input[automation-id="tui-input-card-grouped__cvc"]', + process.env.PAYMENT_E2C_CARD_CVC + ); // CVC code + await sleep(300); + await page.click('button[automation-id="pay-wallet__submit"]'); // submit button + await sleep(300); + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(1000); + } + // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен + await sleep(1000); + } else { + console.log('NEW FORM!!!!!!!'); + await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number + await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date + await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code + await page.click('button[type=submit]'); // submit button + await page.waitForSelector('input[name="password"]'); + const code = prompt('enter code '); + console.log('code', code); + await page.type('input[name="password"]', code); + await sleep(3000); + } + await browser.close(); + }; + + exports.payInBrowser = payInBrowser; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/removeCustomer.cjs b/deep-packges/payments/tinkoff/removeCustomer.cjs new file mode 100644 index 00000000..b2057487 --- /dev/null +++ b/deep-packges/payments/tinkoff/removeCustomer.cjs @@ -0,0 +1,33 @@ +const axios = require('axios'); +const { generateToken } = require("./generateToken.cjs"); +const { getError } = require("./getError.cjs"); +const { getUrl } = require("./getUrl.cjs"); + +const removeCustomer = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('RemoveCustomer'), + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + exports.removeCustomer = removeCustomer; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/resend.cjs b/deep-packges/payments/tinkoff/resend.cjs new file mode 100644 index 00000000..eb7a0338 --- /dev/null +++ b/deep-packges/payments/tinkoff/resend.cjs @@ -0,0 +1,30 @@ +const axios = require('axios'); +const { generateToken } = require("./generateToken.cjs"); +const { getError } = require("./getError.cjs"); +const { getUrl } = require("./getUrl.cjs"); + +const resend = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Resend'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + exports.resend = resend; \ No newline at end of file From 7ae1b056c7c53740d24db5e8169eb48964c7abb5 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 18 Oct 2022 13:57:02 +0000 Subject: [PATCH 563/683] Separate code --- deep-packges/payments/tinkoff/cancel.cjs | 30 ++ payments-tinkoff-c2b-cancelling.cjs | 493 +---------------------- 2 files changed, 36 insertions(+), 487 deletions(-) create mode 100644 deep-packges/payments/tinkoff/cancel.cjs diff --git a/deep-packges/payments/tinkoff/cancel.cjs b/deep-packges/payments/tinkoff/cancel.cjs new file mode 100644 index 00000000..c954bf24 --- /dev/null +++ b/deep-packges/payments/tinkoff/cancel.cjs @@ -0,0 +1,30 @@ +const axios = require('axios'); +const { generateToken } = require("./generateToken.cjs"); +const { getError } = require("./getError.cjs"); +const { getUrl } = require("./getUrl.cjs"); + +const cancel = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Cancel'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + exports.cancel = cancel; \ No newline at end of file diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index ae90326b..9f6698f3 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -15,7 +15,12 @@ const crypto = require('crypto'); const axios = require('axios'); const uniqid = require('uniqid'); const { expect } = require('chai'); -const { get } = require('lodash'); +const {payInBrowser} = require("./deep-packges/payments/tinkoff/payInBrowser.cjs"); +import {getError} from "./deep-packges/payments/tinkoff/getError.cjs"; + +import { init } from "./deep-packges/payments/tinkoff/init.cjs"; +import { cancel } from "./deep-packges/payments/tinkoff/cancel.cjs"; +import { handlersDependencies } from "./deep-packges/payments/tinkoff/handlersDependencies.cjs"; var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); @@ -26,96 +31,6 @@ const PRICE = 5500; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); -const payInBrowser = async ({ page, browser, url }) => { - await page.goto(url, { waitUntil: 'networkidle2' }); - await sleep(5000); - const oldForm = await page.evaluate(() => { - return !!document.querySelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - }); - if (oldForm) { - console.log('OLD FORM!!!!!!!'); - // Старая форма используется на тестовом сервере - const cvc1 = await page.evaluate(() => { - return !!document.querySelector( - 'button[automation-id="pay-card__submit"]' - ); - }); - if (cvc1) { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENTS_C2B_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENTS_C2B_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENTS_C2B_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-card__submit"]'); // submit button - } else { - await page.waitForSelector( - 'input[automation-id="tui-input-card-grouped__card"]' - ); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS - ); // card number - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_E2C_CARD_EXPDATE - ); // expired date - await sleep(300); - await page.keyboard.press('Tab'); - await sleep(300); - await page.type( - 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_E2C_CARD_CVC - ); // CVC code - await sleep(300); - await page.click('button[automation-id="pay-wallet__submit"]'); // submit button - await sleep(300); - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(1000); - } - // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен - await sleep(1000); - } else { - console.log('NEW FORM!!!!!!!'); - await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number - await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date - await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code - await page.click('button[type=submit]'); // submit button - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(3000); - } - await browser.close(); -}; - const allCreatedLinkIds = []; const installPackage = async () => { @@ -138,392 +53,6 @@ const installPackage = async () => { try { - - - const errorsConverter = { - 7: 'Покупатель не найден', - 53: 'Обратитесь к продавцу', - 99: 'Платеж отклонен', - 100: 'Повторите попытку позже', - 101: 'Не пройдена идентификация 3DS', - 102: 'Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой', - 103: 'Повторите попытку позже', - 119: 'Превышено кол-во запросов на авторизацию', - 191: 'Некорректный статус договора, обратитесь к вашему менеджеру', - 1001: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1003: 'Неверный merchant ID', - 1004: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1005: 'Платеж отклонен банком, выпустившим карту', - 1006: 'Свяжитесь с банком, выпустившим карту, чтобы провести платеж', - 1007: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1008: 'Платеж отклонен, необходима идентификация', - 1012: 'Такие операции запрещены для этой карты', - 1013: 'Повторите попытку позже', - 1014: 'Карта недействительна. Свяжитесь с банком, выпустившим карту', - 1015: 'Попробуйте снова или свяжитесь с банком, выпустившим карту', - 1019: 'Платеж отклонен — попробуйте снова', - 1030: 'Повторите попытку позже', - 1033: 'Истек срок действия карты. Свяжитесь с банком, выпустившим карту', - 1034: 'Попробуйте повторить попытку позже', - 1038: 'Превышено количество попыток ввода ПИН-кода', - 1039: 'Платеж отклонен — счет не найден', - 1041: 'Карта утеряна. Свяжитесь с банком, выпустившим карту', - 1043: 'Карта украдена. Свяжитесь с банком, выпустившим карту', - 1051: 'Недостаточно средств на карте', - 1053: 'Платеж отклонен — счет не найден', - 1054: 'Истек срок действия карты', - 1055: 'Неверный ПИН', - 1057: 'Такие операции запрещены для этой карты', - 1058: 'Такие операции запрещены для этой карты', - 1059: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1061: 'Превышен дневной лимит платежей по карте', - 1062: 'Платежи по карте ограничены', - 1063: 'Операции по карте ограничены', - 1064: 'Проверьте сумму', - 1065: 'Превышен дневной лимит транзакций', - 1075: 'Превышено число попыток ввода ПИН-кода', - 1076: 'Платеж отклонен — попробуйте снова', - 1077: 'Коды не совпадают — попробуйте снова', - 1080: 'Неверный срок действия', - 1082: 'Неверный CVV', - 1086: 'Платеж отклонен — не получилось подтвердить ПИН-код', - 1088: 'Ошибка шифрования. Попробуйте снова', - 1089: 'Попробуйте повторить попытку позже', - 1091: 'Банк, выпустивший карту недоступен для проведения авторизации', - 1092: 'Платеж отклонен — попробуйте снова', - 1093: 'Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту', - 1094: 'Системная ошибка', - 1096: 'Повторите попытку позже', - 9999: 'Внутренняя ошибка системы', - }; - - const getError = (errorCode) => - errorCode === '0' ? undefined : errorsConverter[errorCode] || 'broken'; - - const _generateToken = (dataWithPassword) => { - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => `${acc}${item}`, ''); - console.log({ dataString }); - const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - console.log({ hash }); - return hash; - }; - - const generateToken = (data) => { - const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { - ...restData, - Password: process.env.PAYMENTS_C2B_TERMINAL_PASSWORD, - }; - console.log({ dataWithPassword }); - return _generateToken(dataWithPassword); - }; - const generateTokenString = generateToken.toString() - .replace( - 'process.env.PAYMENTS_C2B_TERMINAL_PASSWORD', - `"${process.env.PAYMENTS_C2B_TERMINAL_PASSWORD}"` - ); - console.log({ generateTokenString }); - - const getUrl = (method) => - `${process.env.PAYMENTS_C2B_URL}/${method}`; - getUrlString = getUrl.toString() - .replace( - '${process.env.PAYMENTS_C2B_URL}', - process.env.PAYMENTS_C2B_URL - ); - console.log({ getUrlString }); - - const getMarketUrl = (method) => - `${process.env.PAYMENT_TINKOFF_MARKET_URL}/${method}`; - - const getState = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetState'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const checkOrder = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('CheckOrder'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCardList = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCardList'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode || '0'); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const init = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Init'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const cancel = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Cancel'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const resend = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Resend'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const charge = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Charge'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const addCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('AddCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const getCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('GetCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const removeCustomer = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('RemoveCustomer'), - headers: { - 'Content-Type': 'application/json', - }, - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - const User = await deep.id('@deep-foundation/core', 'User'); const Type = await deep.id('@deep-foundation/core', 'Type'); const Any = await deep.id('@deep-foundation/core', 'Any'); @@ -715,16 +244,6 @@ const installPackage = async () => { }, }); - const handlersDependencies = ` - const crypto = require('crypto'); - const axios = require('axios'); - const errorsConverter = ${JSON.stringify(errorsConverter)}; - const getError = ${getError.toString()}; - const getUrl = ${getUrlString}; - const _generateToken = ${_generateToken.toString()}; - const generateToken = ${generateTokenString}; - `; - console.log({ handlersDependencies }); const payInsertHandler = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} From 3788cdb700bb406bdb4b6036a5fea05550b80d68 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 18 Oct 2022 13:58:57 +0000 Subject: [PATCH 564/683] Put PRICE in callTests --- payments-tinkoff-c2b-cancelling.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 9f6698f3..d3b1cf39 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -27,8 +27,6 @@ dotenvExpand.expand(myEnv); console.log("Installing @deep-foundation/payments-tinkoff-c2b-cancelling package"); -const PRICE = 5500; - const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const allCreatedLinkIds = []; @@ -552,6 +550,8 @@ async ( const callTests = async () => { console.log('callTests-start'); + const PRICE = 5500; + const callRealizationTests = async () => { const testInit = async () => { const initOptions = { From 978ba071adcf6866c87284d93e7fa5c5c9134bec Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 06:40:38 +0000 Subject: [PATCH 565/683] Add typeId to type id variable names --- payments-tinkoff-c2b.cjs | 104 ++++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 50 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index f88cfa54..91eee8cf 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -158,7 +158,7 @@ const installPackage = async () => { console.log({ packageId }); const { - data: [{ id: SumProvider }], + data: [{ id: sumProviderTypeId }], } = await deep.insert({ type_id: Type, from_id: Any, @@ -172,10 +172,10 @@ const installPackage = async () => { }, }); - console.log({ SumProvider: SumProvider }); + console.log({ sumProviderTypeId }); const { - data: [{ id: TinkoffProvider }], + data: [{ id: tinkoffProviderTypeId }], } = await deep.insert({ type_id: Type, from_id: Any, @@ -189,10 +189,10 @@ const installPackage = async () => { }, }); - console.log({ TinkoffProvider }); + console.log({ tinkoffProviderTypeId }); const { - data: [{ id: Payment }], + data: [{ id: paymentTypeId }], } = await deep.insert({ type_id: Type, from_id: Any, @@ -206,13 +206,13 @@ const installPackage = async () => { }, }); - console.log({ Payment: Payment }); + console.log({ paymentTypeId }); const { - data: [{ id: Object }], + data: [{ id: objectTypeId }], } = await deep.insert({ type_id: Type, - from_id: Payment, + from_id: paymentTypeId, to_id: Any, in: { data: { @@ -223,10 +223,10 @@ const installPackage = async () => { }, }); - console.log({ Object: Object }); + console.log({ objectTypeId }); const { - data: [{ id: Sum }], + data: [{ id: sumTypeId }], } = await deep.insert({ type_id: Type, from_id: Any, @@ -240,11 +240,11 @@ const installPackage = async () => { }, }); - console.log({ Sum: Sum }); + console.log({ sumTypeId }); // TODO Rest restrictions const { - data: [{ id: Pay }], + data: [{ id: payTypeId }], } = await deep.insert({ type_id: Type, from_id: Any, @@ -258,10 +258,10 @@ const installPackage = async () => { }, }); - console.log({ Pay: Pay }); + console.log({ payTypeId }); const { - data: [{ id: Url }], + data: [{ id: urlTypeId }], } = await deep.insert({ type_id: Type, from_id: Any, @@ -275,10 +275,10 @@ const installPackage = async () => { }, }); - console.log({ Url: Url }); + console.log({ urlTypeId }); const { - data: [{ id: Payed }], + data: [{ id: payedTypeId }], } = await deep.insert({ type_id: Type, from_id: Any, @@ -292,10 +292,10 @@ const installPackage = async () => { }, }); - console.log({ Payed: Payed }); + console.log({ payedTypeId }); const { - data: [{ id: Error }], + data: [{ id: errorTypeId }], } = await deep.insert({ type_id: Type, from_id: Any, @@ -309,7 +309,7 @@ const installPackage = async () => { }, }); - console.log({ Error: Error }); + console.log({ errorTypeId }); const { data: [{ id: paymentTreeId }], @@ -326,7 +326,7 @@ const installPackage = async () => { data: [ { type_id: TreeIncludeNode, - to_id: Payment, + to_id: paymentTypeId, in: { data: [ { @@ -338,7 +338,7 @@ const installPackage = async () => { }, { type_id: TreeIncludeUp, - to_id: Sum, + to_id: sumTypeId, in: { data: [ { @@ -350,7 +350,7 @@ const installPackage = async () => { }, { type_id: TreeIncludeDown, - to_id: Object, + to_id: objectTypeId, in: { data: [ { @@ -362,7 +362,7 @@ const installPackage = async () => { }, { type_id: TreeIncludeUp, - to_id: Error, + to_id: errorTypeId, in: { data: [ { @@ -374,7 +374,7 @@ const installPackage = async () => { }, { type_id: TreeIncludeUp, - to_id: Payed, + to_id: payedTypeId, in: { data: [ { @@ -386,7 +386,7 @@ const installPackage = async () => { }, { type_id: TreeIncludeUp, - to_id: Pay, + to_id: payTypeId, in: { data: [ { @@ -398,7 +398,7 @@ const installPackage = async () => { }, { type_id: TreeIncludeUp, - to_id: Url, + to_id: urlTypeId, in: { data: [ { @@ -413,7 +413,7 @@ const installPackage = async () => { }); const { - data: [{ id: StorageBusiness }], + data: [{ id: storageBusinessTypeId }], } = await deep.insert({ type_id: Type, from_id: Any, @@ -426,9 +426,10 @@ const installPackage = async () => { }, }, }); + console.log({storageBusinessTypeId}); const { - data: [{ id: Token }], + data: [{ id: tokenTypeId }], } = await deep.insert({ type_id: Type, from_id: Any, @@ -441,9 +442,11 @@ const installPackage = async () => { }, }, }); + console.log({tokenTypeId}); + const { - data: [{ id: StorageClient }], + data: [{ id: storageClientTypeId }], } = await deep.insert({ type_id: Type, from_id: Any, @@ -456,9 +459,10 @@ const installPackage = async () => { }, }, }); + console.log({storageClientTypeId}); const { - data: [{ id: Title }], + data: [{ id: titleTypeId }], } = await deep.insert({ type_id: Type, from_id: Any, @@ -471,10 +475,10 @@ const installPackage = async () => { }, }, }); - console.log({ Title }); + console.log({ Title: titleTypeId }); const { - data: [{ id: Income }], + data: [{ id: incomeTypeId }], } = await deep.insert({ type_id: Type, from_id: Any, @@ -487,7 +491,7 @@ const installPackage = async () => { }, }, }); - console.log({ Income }); + console.log({ Income: incomeTypeId }); console.log({ handlersDependencies }); @@ -634,7 +638,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }, { type_id: HandleInsert, - from_id: Pay, + from_id: payTypeId, in: { data: [ { @@ -658,7 +662,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }); console.log({ payInsertHandlerId }); - const tinkoffNotificationHandler = ` + const tinkoffNotificationHandlerCode = ` async ( req, res, @@ -868,7 +872,7 @@ async ( type_id: SyncTextFile, string: { data: { - value: tinkoffNotificationHandler, + value: tinkoffNotificationHandlerCode, }, }, in: { @@ -1199,7 +1203,7 @@ async ( const { data: [{ id: tinkoffProviderLinkId }], } = await deep.insert({ - type_id: TinkoffProvider, + type_id: tinkoffProviderTypeId, in: { data: [ { @@ -1216,7 +1220,7 @@ async ( const { data: [{ id: sumProviderLinkId }], } = await deep.insert({ - type_id: SumProvider, + type_id: sumProviderTypeId, in: { data: [ { @@ -1233,7 +1237,7 @@ async ( const { data: [{ id: storageBusinessLinkId }], } = await deep.insert({ - type_id: StorageBusiness, + type_id: storageBusinessTypeId, in: { data: [ { @@ -1250,7 +1254,7 @@ async ( const { data: [{ id: tokenLinkId }], } = await deep.insert({ - type_id: Token, + type_id: tokenTypeId, from_id: storageBusinessLinkId, to_id: storageBusinessLinkId, string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, @@ -1311,7 +1315,7 @@ async ( const { data: [{ id: paymentLinkId }], } = await deep.insert({ - type_id: Payment, + type_id: paymentTypeId, object: { data: { value: { orderId: uniqid() } } }, from_id: deep.linkId, to_id: storageBusinessLinkId, @@ -1331,7 +1335,7 @@ async ( const { data: [{ id: sumLinkId }], } = await deep.insert({ - type_id: Sum, + type_id: sumTypeId, from_id: sumProviderLinkId, to_id: paymentLinkId, number: { data: { value: PRICE } }, @@ -1351,7 +1355,7 @@ async ( const { data: [{ id: objectLinkId }], } = await deep.insert({ - type_id: Object, + type_id: objectTypeId, from_id: paymentLinkId, to_id: productLinkId, in: { @@ -1370,7 +1374,7 @@ async ( const { data: [{ id: payLinkId }], } = await deep.insert({ - type_id: Pay, + type_id: payTypeId, from_id: deep.linkId, to_id: sumLinkId, in: { @@ -1389,7 +1393,7 @@ async ( var urlLinkSelectQuery; for (let i = 0; i < 10; i++) { urlLinkSelectQuery = await deep.select({ - type_id: Url, + type_id: urlTypeId, to_id: payLinkId, }); @@ -1419,7 +1423,7 @@ async ( console.log('testFinishAuthorize-start'); const { createdLinks } = await testInit({ customerKey }); - const urlLink = createdLinks.find(link => link.type_id === Url); + const urlLink = createdLinks.find(link => link.type_id === urlTypeId); expect(urlLink).to.not.be.equal(undefined) const url = urlLink.value.value; @@ -1448,13 +1452,13 @@ async ( const createdLinkIds = []; - const payLink = createdLinks.find(link => link.type_id === Pay); + const payLink = createdLinks.find(link => link.type_id === payTypeId); expect(payLink).to.not.be.equal(undefined); var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { payedLinkSelectQuery = await deep.select({ - type_id: Payed, + type_id: payedTypeId, to_id: payLink.id }); @@ -1524,9 +1528,9 @@ async ( const callTest = async (testFunction) => { const { createdLinks } = await testFunction(); for (const createdLink of createdLinks) { - if(createdLink.type_id === Pay) { + if(createdLink.type_id === payTypeId) { const errorLinkSelectQuery = await deep.select({ - type_id: Error, + type_id: errorTypeId, to_id: createdLink.id }); createdLinks.push(...errorLinkSelectQuery.data); From 3a5f9f3422ee86ce86372f142f7c1acbf2a63c6b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 07:38:46 +0000 Subject: [PATCH 566/683] Separate code, rename add typeId to names --- .../tinkoff/insertNotificationHandler.cjs | 239 ++++++++++ .../tinkoff/insertPayInsertHandler.cjs | 173 +++++++ payments-tinkoff-c2b.cjs | 440 ++---------------- 3 files changed, 439 insertions(+), 413 deletions(-) create mode 100644 deep-packges/payments/tinkoff/insertNotificationHandler.cjs create mode 100644 deep-packges/payments/tinkoff/insertPayInsertHandler.cjs diff --git a/deep-packges/payments/tinkoff/insertNotificationHandler.cjs b/deep-packges/payments/tinkoff/insertNotificationHandler.cjs new file mode 100644 index 00000000..f4f4d593 --- /dev/null +++ b/deep-packges/payments/tinkoff/insertNotificationHandler.cjs @@ -0,0 +1,239 @@ +const insertNotificationHandler = async ({deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { + const tinkoffNotificationHandlerCode = ` +async ( + req, + res, + next, + { deep, require, gql } +) => { + ${handlersDependencies} + + if(req.body.Status !== "AUTHORIZED" || req.body.Status !== "CONFIRMED") { + return next(); + } + + const reqBody = req.body; + console.log({reqBody}); + + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: TinkoffProvider + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; + console.log({tinkoffProviderLinkId}); + + const paymentLinkSelectQuery = await deep.select({ + object: {value: {_contains: {orderId: req.body.OrderId}}} + }); + if(paymentLinkSelectQuery.error) { throw new Error(paymentLinkSelectQuery.error.message); } + const paymentLink = paymentLinkSelectQuery.data[0]; + console.log({paymentLink}); + if(!paymentLink) { throw new Error("The payment link associated with the order id " + req.body.OrderId + " is not found."); } + + const {data: mpUpPayment, error: mpUpPaymentSelectQueryError} = await deep.select({ + up: { + parent_id: { _eq: paymentLink.id }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } + } + }); + console.log({mpUpPayment}); + if(mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } + + const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + const payLink = mpUpPayment.find(link => link.type_id === Pay); + console.log({payLink}); + if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } + + + if (req.body.Status === 'AUTHORIZED') { + const confirm = ${confirm.toString()}; + + const storageBusinessLinkSelectQuery = await deep.select({ + id: paymentLink.to_id + }); + if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} + const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; + console.log({storageBusinessLinkId}); + + const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); + const tokenLinkSelectQuery = await deep.select({ + type_id: Token, + from_id: storageBusinessLinkId, + to_id: storageBusinessLinkId + }); + if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} + const tokenLink = tokenLinkSelectQuery.data[0]; + console.log({tokenLink}); + + const confirmOptions = { + TerminalKey: tokenLink.value.value, + PaymentId: req.body.PaymentId, + Amount: req.body.Amount, + // Receipt: req.body.Receipt, + }; + console.log({confirmOptions}); + + const confirmResult = await confirm(confirmOptions); + console.log({confirmResult}); + + if (confirmResult.error) { + const errorMessage = "Could not confirm the pay. " + confirmResult.error; + const {error: errorLinkInsertError} = await deep.insert({ + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), + from_id: tinkoffProviderLinkId, + to_id: payLink.id, + string: { data: { value: errorMessage } }, + }); + if(errorLinkInsertError) { throw new Error(errorLinkInsertError); } + throw new Error(errorMessage); + } + + return confirmResult; + } else if (req.body.Status === 'CONFIRMED') { + const payedLinkInsertQuery = await deep.insert({ + type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), + from_id: tinkoffProviderLinkId, + to_id: payLink.id, + }); + if(payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } + const payedLinkId = payedLinkInsertQuery.data[0].id; + console.log({payedLinkId}); + + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + const storageClientLinkSelectQuery = await deep.select({ + type_id: StorageClient, + number: {value: req.body.CardId} + }); + console.log({storageClientLinkSelectQuery}); + if(storageClientLinkSelectQuery.error) {throw new Error(storageClientLinkSelectQuery.error.message);} + + if(fromLinkOfPayment.type_id !== StorageClient) { + var storageClientLinkId; + if(storageClientLinkSelectQuery.data.length === 0) { + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + const storageClientLinkInsertQuery = await deep.insert({ + type_id: StorageClient, + number: {data: {value: req.body.CardId}}, + }); + console.log({storageClientLinkInsertQuery}); + if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} + storageClientLinkId = storageClientLinkInsertQuery.data[0].id; + + const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); + const titleLinkInsertQuery = await deep.insert({ + type_id: Title, + from_id: storageClientLinkId, + to_id: storageClientLinkId, + string: {data: {value: req.body.Pan}}, + }); + if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} + const titleLinkId = titleLinkInsertQuery.data[0].id; + console.log({titleLinkId}); + } else { + storageClientLinkId = storageClientLinkSelectQuery.data[0]; + } + const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); + const incomeLinkInsertQuery = await deep.insert({ + type_id: Income, + from_id: paymentLink.id, + to_id: storageClientLinkId, + }); + if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} + const incomeLinkId = incomeLinkInsertQuery.data[0].id; + console.log({incomeLinkId}); + + } + } + res.send('ok'); +}; +`; + +const {error} = await deep.insert( + { + type_id: portTypeId, + number: { + data: { value: notificationPort }, + }, + in: { + data: { + type_id: routerListeningTypeId, + from: { + data: { + type_id: routerTypeId, + in: { + data: { + type_id: routerStringUseTypeId, + string: { + data: { + value: + notificationRoute, + }, + }, + from: { + data: { + type_id: routeTypeId, + out: { + data: { + type_id: handleRouteTypeId, + to: { + data: { + type_id: handlerTypeId, + from_id: supportsId, + in: { + data: { + type_id: containTypeId, + // from_id: deep.linkId, + from_id: adminId, + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + to: { + data: { + type_id: fileTypeId, + string: { + data: { + value: tinkoffNotificationHandlerCode, + }, + }, + in: { + data: { + type_id: containTypeId, + from_id: packageId, + string: { + data: { + value: 'tinkoffNotificationHandler', + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + } + ) + + if(error) { + throw new Error(error.message); + } +} + +exports.insertNotificationHandler = insertNotificationHandler; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/insertPayInsertHandler.cjs b/deep-packges/payments/tinkoff/insertPayInsertHandler.cjs new file mode 100644 index 00000000..6e0dab7a --- /dev/null +++ b/deep-packges/payments/tinkoff/insertPayInsertHandler.cjs @@ -0,0 +1,173 @@ +const {handlersDependencies} = require("./handlersDependencies.cjs"); +const {init} = require("./init.cjs"); + +const insertPayInsertHandler = async ({deep, notificationUrl, userEmail, userPhone, fileTypeId, containTypeId, packageId, supportsId, handlerTypeId, handlerInsertTypeId, containTypeId}) => { + const payInsertHandlerCode = ` +async ({ deep, require, data: { newLink: payLink } }) => { + ${handlersDependencies} + + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: TinkoffProvider + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; + + const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ + down: { + link_id: { _eq: payLink.id }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") }, + }, + }); + console.log({mpDownPay}); + if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } + + const Payment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); + const paymentLink = mpDownPay.find(link => link.type_id === Payment); + console.log({paymentLink}); + if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found."); + + const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); + const sumLink = mpDownPay.find(link => link.type_id === Sum); + console.log({sumLink}); + if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); + + const fromLinkOfPaymentSelectQuery = await deep.select({ + id: paymentLink.from_id + }); + if(fromLinkOfPaymentSelectQuery.error) { throw new Error(fromLinkOfPaymentSelectQuery.error.message); } + const fromLinkOfPayment = fromLinkOfPaymentSelectQuery.data[0]; + console.log({fromLinkOfPayment}); + + const storageBusinessLinkSelectQuery = await deep.select({ + id: paymentLink.to_id + }); + if(storageBusinessLinkSelectQuery.error) { throw new Error(storageBusinessLinkSelectQuery.error.message); } + const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; + console.log({storageBusinessLinkId}); + + const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); + const tokenLinkSelectQuery = await deep.select({ + type_id: Token, + from_id: storageBusinessLinkId, + to_id: storageBusinessLinkId + }); + if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} + const tokenLink = tokenLinkSelectQuery.data[0]; + console.log({tokenLink}); + + const init = ${init.toString()}; + + const options = { + TerminalKey: tokenLink.value.value, + OrderId: paymentLink?.value?.value.orderId ?? paymentLink.id, + CustomerKey: deep.linkId, + NotificationURL: "${notificationUrl}", + PayType: 'T', + Amount: sumLink.value.value, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: "${userEmail}", + Phone: "${userPhone}", + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: sumLink.value.value, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: "${userEmail}", + // Phone: "${userPhone}", + // Taxation: 'usn_income', + // } + }; + console.log({options}); + + let initResult = await init(options); + console.log({initResult}); + if (initResult.error) { + const errorMessage = "Could not initialize the order. " + initResult.error; + const {error: errorLinkInsertQueryError} = await deep.insert({ + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), + from_id: tinkoffProviderLinkId, + to_id: payLink.id, + string: { data: { value: errorMessage } }, + }); + if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } + throw new Error(errorMessage); + } + + const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); + const {error: urlLinkInsertQueryError} = await deep.insert({ + type_id: Url, + from_id: tinkoffProviderLinkId, + to_id: payLink.id, + string: { data: { value: initResult.response.PaymentURL } }, + }); + if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } + + console.log("paymentLink.value.value", paymentLink.value.value); + console.log("paymentLink.value.value", paymentLink.value.value); + const paymentLinkValueUpdateQuery = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); + if(paymentLinkValueUpdateQuery.error) { throw new Error(paymentLinkValueUpdateQuery.error.message); } + + return initResult; +}; +`; + +const { + data: [{ id: payInsertHandlerId }], + } = await deep.insert({ + type_id: fileTypeId, + in: { + data: [ + { + type_id: containTypeId, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandlerFile' } }, + }, + { + from_id: supportsId, + type_id: handlerTypeId, + in: { + data: [ + { + type_id: containTypeId, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandler' } }, + }, + { + type_id: handlerInsertTypeId, + from_id: payTypeId, + in: { + data: [ + { + type_id: containTypeId, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandle' } }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + string: { + data: { + value: payInsertHandlerCode, + }, + }, + }); + + return payInsertHandlerId; +} + +exports.insertPayInsertHandler = insertPayInsertHandler; \ No newline at end of file diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 91eee8cf..cfb53619 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -32,6 +32,8 @@ import { addCustomer } from "./deep-packges/payments/tinkoff/addCustomer.cjs"; import { getCustomer } from "./deep-packges/payments/tinkoff/getCustomer.cjs"; import { removeCustomer } from "./deep-packges/payments/tinkoff/removeCustomer.cjs"; import { handlersDependencies } from "./deep-packges/payments/tinkoff/handlersDependencies.cjs"; +import { insertPayInsertHandler } from "./deep-packges/payments/tinkoff/insertPayInsertHandler.cjs"; +import { insertNotificationHandler } from "./deep-packges/payments/tinkoff/insertNotificationHandler.cjs"; var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); @@ -69,14 +71,34 @@ const installPackage = async () => { const Value = await deep.id('@deep-foundation/core', 'Value'); const String = await deep.id('@deep-foundation/core', 'String'); const Package = await deep.id('@deep-foundation/core', 'Package'); + - const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); + const syncTextFileTypeId = await deep.id('@deep-foundation/core', 'SyncTextFile'); const dockerSupportsJs = await deep.id( '@deep-foundation/core', 'dockerSupportsJs' ); - const Handler = await deep.id('@deep-foundation/core', 'Handler'); - const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); + const handleInsertTypeId = await deep.id('@deep-foundation/core', 'HandleInsert'); + const portTypeId = await deep.id('@deep-foundation/core', 'Port'); + const routerListeningTypeId = await deep.id('@deep-foundation/core', 'RouterListening'); + const routerTypeId = await deep.id('@deep-foundation/core', 'Router'); + const routerStringUseTypeId = await deep.id( + '@deep-foundation/core', + 'RouterStringUse' + ); + const routeTypeId = await deep.id('@deep-foundation/core', 'Route'); + const handleRouteTypeId = await deep.id( + '@deep-foundation/core', + 'HandleRoute' + ); + const handlerTypeId = await deep.id( + '@deep-foundation/core', + 'Handler' + ); + const dockerSupportsJsId = await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ); const Tree = await deep.id('@deep-foundation/core', 'Tree'); const TreeIncludeNode = await deep.id( @@ -494,417 +516,9 @@ const installPackage = async () => { console.log({ Income: incomeTypeId }); - console.log({ handlersDependencies }); - const payInsertHandler = ` -async ({ deep, require, data: { newLink: payLink } }) => { - ${handlersDependencies} + await insertPayInsertHandler({deep, containTypeId, fileTypeId: syncTextFileTypeId, handlerInsertTypeId, handlerTypeId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE}); - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: TinkoffProvider - }); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; - - const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ - down: { - link_id: { _eq: payLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") }, - }, - }); - console.log({mpDownPay}); - if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } - - const Payment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); - const paymentLink = mpDownPay.find(link => link.type_id === Payment); - console.log({paymentLink}); - if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found."); - - const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); - const sumLink = mpDownPay.find(link => link.type_id === Sum); - console.log({sumLink}); - if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); - - const fromLinkOfPaymentSelectQuery = await deep.select({ - id: paymentLink.from_id - }); - if(fromLinkOfPaymentSelectQuery.error) { throw new Error(fromLinkOfPaymentSelectQuery.error.message); } - const fromLinkOfPayment = fromLinkOfPaymentSelectQuery.data[0]; - console.log({fromLinkOfPayment}); - - const storageBusinessLinkSelectQuery = await deep.select({ - id: paymentLink.to_id - }); - if(storageBusinessLinkSelectQuery.error) { throw new Error(storageBusinessLinkSelectQuery.error.message); } - const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; - console.log({storageBusinessLinkId}); - - const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); - const tokenLinkSelectQuery = await deep.select({ - type_id: Token, - from_id: storageBusinessLinkId, - to_id: storageBusinessLinkId - }); - if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} - const tokenLink = tokenLinkSelectQuery.data[0]; - console.log({tokenLink}); - - const init = ${init.toString()}; - - // TODO Add default card - const options = { - TerminalKey: tokenLink.value.value, - OrderId: paymentLink?.value?.value.orderId ?? paymentLink.id, - CustomerKey: deep.linkId, - NotificationURL: "${process.env.PAYMENTS_C2B_NOTIFICATION_URL}", - PayType: 'T', - Amount: sumLink.value.value, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: "${process.env.PAYMENTS_C2B_EMAIL}", - Phone: "${process.env.PAYMENTS_C2B_PHONE}", - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: sum, - // Quantity: 1, - // Amount: sumLink.value.value, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: "${process.env.PAYMENTS_C2B_EMAIL}", - // Phone: "${process.env.PAYMENTS_C2B_PHONE}", - // Taxation: 'usn_income', - // } - }; - console.log({options}); - - let initResult = await init(options); - console.log({initResult}); - if (initResult.error) { - const errorMessage = "Could not initialize the order. " + initResult.error; - const {error: errorLinkInsertQueryError} = await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), - from_id: tinkoffProviderLinkId, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - }); - if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } - throw new Error(errorMessage); - } - - const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); - const {error: urlLinkInsertQueryError} = await deep.insert({ - type_id: Url, - from_id: tinkoffProviderLinkId, - to_id: payLink.id, - string: { data: { value: initResult.response.PaymentURL } }, - }); - if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } - - console.log("paymentLink.value.value", paymentLink.value.value); - console.log("paymentLink.value.value", paymentLink.value.value); - const paymentLinkValueUpdateQuery = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); - if(paymentLinkValueUpdateQuery.error) { throw new Error(paymentLinkValueUpdateQuery.error.message); } - - return initResult; -}; -`; - - const { - data: [{ id: payInsertHandlerId }], - } = await deep.insert({ - type_id: SyncTextFile, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandlerFile' } }, - }, - { - from_id: dockerSupportsJs, - type_id: Handler, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandler' } }, - }, - { - type_id: HandleInsert, - from_id: payTypeId, - in: { - data: [ - { - type_id: Contain, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandle' } }, - }, - ], - }, - }, - ], - }, - }, - ], - }, - string: { - data: { - value: payInsertHandler, - }, - }, - }); - console.log({ payInsertHandlerId }); - - const tinkoffNotificationHandlerCode = ` -async ( - req, - res, - next, - { deep, require, gql } -) => { - ${handlersDependencies} - - if(req.body.Status !== "AUTHORIZED" || req.body.Status !== "CONFIRMED") { - return next(); - } - - const reqBody = req.body; - console.log({reqBody}); - - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: TinkoffProvider - }); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; - console.log({tinkoffProviderLinkId}); - - const paymentLinkSelectQuery = await deep.select({ - object: {value: {_contains: {orderId: req.body.OrderId}}} - }); - if(paymentLinkSelectQuery.error) { throw new Error(paymentLinkSelectQuery.error.message); } - const paymentLink = paymentLinkSelectQuery.data[0]; - console.log({paymentLink}); - if(!paymentLink) { throw new Error("The payment link associated with the order id " + req.body.OrderId + " is not found."); } - - const {data: mpUpPayment, error: mpUpPaymentSelectQueryError} = await deep.select({ - up: { - parent_id: { _eq: paymentLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } - } - }); - console.log({mpUpPayment}); - if(mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } - - const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); - const payLink = mpUpPayment.find(link => link.type_id === Pay); - console.log({payLink}); - if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } - - - if (req.body.Status === 'AUTHORIZED') { - const confirm = ${confirm.toString()}; - - const storageBusinessLinkSelectQuery = await deep.select({ - id: paymentLink.to_id - }); - if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} - const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; - console.log({storageBusinessLinkId}); - - const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); - const tokenLinkSelectQuery = await deep.select({ - type_id: Token, - from_id: storageBusinessLinkId, - to_id: storageBusinessLinkId - }); - if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} - const tokenLink = tokenLinkSelectQuery.data[0]; - console.log({tokenLink}); - - const confirmOptions = { - TerminalKey: tokenLink.value.value, - PaymentId: req.body.PaymentId, - Amount: req.body.Amount, - // Receipt: req.body.Receipt, - }; - console.log({confirmOptions}); - - const confirmResult = await confirm(confirmOptions); - console.log({confirmResult}); - - if (confirmResult.error) { - const errorMessage = "Could not confirm the pay. " + confirmResult.error; - const {error: errorLinkInsertError} = await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), - from_id: tinkoffProviderLinkId, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - }); - if(errorLinkInsertError) { throw new Error(errorLinkInsertError); } - throw new Error(errorMessage); - } - - return confirmResult; - } else if (req.body.Status === 'CONFIRMED') { - const payedLinkInsertQuery = await deep.insert({ - type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), - from_id: tinkoffProviderLinkId, - to_id: payLink.id, - }); - if(payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } - const payedLinkId = payedLinkInsertQuery.data[0].id; - console.log({payedLinkId}); - - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - const storageClientLinkSelectQuery = await deep.select({ - type_id: StorageClient, - number: {value: req.body.CardId} - }); - console.log({storageClientLinkSelectQuery}); - if(storageClientLinkSelectQuery.error) {throw new Error(storageClientLinkSelectQuery.error.message);} - - if(fromLinkOfPayment.type_id !== StorageClient) { - var storageClientLinkId; - if(storageClientLinkSelectQuery.data.length === 0) { - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - const storageClientLinkInsertQuery = await deep.insert({ - type_id: StorageClient, - number: {data: {value: req.body.CardId}}, - }); - console.log({storageClientLinkInsertQuery}); - if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} - storageClientLinkId = storageClientLinkInsertQuery.data[0].id; - - const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); - const titleLinkInsertQuery = await deep.insert({ - type_id: Title, - from_id: storageClientLinkId, - to_id: storageClientLinkId, - string: {data: {value: req.body.Pan}}, - }); - if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} - const titleLinkId = titleLinkInsertQuery.data[0].id; - console.log({titleLinkId}); - } else { - storageClientLinkId = storageClientLinkSelectQuery.data[0]; - } - const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); - const incomeLinkInsertQuery = await deep.insert({ - type_id: Income, - from_id: paymentLink.id, - to_id: storageClientLinkId, - }); - if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} - const incomeLinkId = incomeLinkInsertQuery.data[0].id; - console.log({incomeLinkId}); - - } - } - res.send('ok'); -}; -`; - - await deep.insert( - { - type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { - data: { value: process.env.PAYMENTS_C2B_NOTIFICATION_PORT }, - }, - in: { - data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), - in: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'RouterStringUse' - ), - string: { - data: { - value: - process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, - }, - }, - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), - out: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'HandleRoute' - ), - to: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'Handler' - ), - from_id: await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ), - in: { - data: { - type_id: Contain, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - to: { - data: { - type_id: SyncTextFile, - string: { - data: { - value: tinkoffNotificationHandlerCode, - }, - }, - in: { - data: { - type_id: Contain, - from_id: packageId, - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - } - ); + await insertNotificationHandler({deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId}); const callTests = async () => { console.log('callTests-start'); From fe0a612d270ed61b4b04341b807003742f4f2799 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 07:40:59 +0000 Subject: [PATCH 567/683] Fix typo --- payments-tinkoff-c2b.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index cfb53619..411115e9 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -497,7 +497,7 @@ const installPackage = async () => { }, }, }); - console.log({ Title: titleTypeId }); + console.log({ titleTypeId }); const { data: [{ id: incomeTypeId }], @@ -513,7 +513,7 @@ const installPackage = async () => { }, }, }); - console.log({ Income: incomeTypeId }); + console.log({ incomeTypeId }); await insertPayInsertHandler({deep, containTypeId, fileTypeId: syncTextFileTypeId, handlerInsertTypeId, handlerTypeId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE}); From 002efa3e12c47c9d7170fd98f6b582b28e5ec0b4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 07:46:13 +0000 Subject: [PATCH 568/683] Add typeId to names --- payments-tinkoff-c2b.cjs | 194 +++++++++++++++++++-------------------- 1 file changed, 97 insertions(+), 97 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 411115e9..2dd5d2ff 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -64,13 +64,13 @@ const installPackage = async () => { try { const User = await deep.id('@deep-foundation/core', 'User'); - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); - const Join = await deep.id('@deep-foundation/core', 'Join'); - const Contain = await deep.id('@deep-foundation/core', 'Contain'); + const typeTypeId = await deep.id('@deep-foundation/core', 'Type'); + const anyTypeId = await deep.id('@deep-foundation/core', 'Any'); + const joinTypeId = await deep.id('@deep-foundation/core', 'Join'); + const containTypeId = await deep.id('@deep-foundation/core', 'Contain'); const Value = await deep.id('@deep-foundation/core', 'Value'); const String = await deep.id('@deep-foundation/core', 'String'); - const Package = await deep.id('@deep-foundation/core', 'Package'); + const packageTypeId = await deep.id('@deep-foundation/core', 'Package'); const syncTextFileTypeId = await deep.id('@deep-foundation/core', 'SyncTextFile'); @@ -100,13 +100,13 @@ const installPackage = async () => { 'dockerSupportsJs' ); - const Tree = await deep.id('@deep-foundation/core', 'Tree'); - const TreeIncludeNode = await deep.id( + const treeTypeId = await deep.id('@deep-foundation/core', 'Tree'); + const treeIncludeNodeTypeId = await deep.id( '@deep-foundation/core', 'TreeIncludeNode' ); - const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); - const TreeIncludeDown = await deep.id( + const treeIncludeUpTypeId = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); + const treeIncludeDownTypeId = await deep.id( '@deep-foundation/core', 'TreeIncludeDown' ); @@ -153,12 +153,12 @@ const installPackage = async () => { const { data: [{ id: packageId }], } = await deep.insert({ - type_id: Package, + type_id: packageTypeId, string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -166,11 +166,11 @@ const installPackage = async () => { out: { data: [ { - type_id: Join, + type_id: joinTypeId, to_id: await deep.id('deep', 'users', 'packages'), }, { - type_id: Join, + type_id: joinTypeId, to_id: await deep.id('deep', 'admin'), }, ], @@ -182,12 +182,12 @@ const installPackage = async () => { const { data: [{ id: sumProviderTypeId }], } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, + type_id: typeTypeId, + from_id: anyTypeId, + to_id: anyTypeId, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageId, string: { data: { value: 'SumProvider' } }, }, @@ -199,12 +199,12 @@ const installPackage = async () => { const { data: [{ id: tinkoffProviderTypeId }], } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, + type_id: typeTypeId, + from_id: anyTypeId, + to_id: anyTypeId, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageId, string: { data: { value: 'TinkoffProvider' } }, }, @@ -216,12 +216,12 @@ const installPackage = async () => { const { data: [{ id: paymentTypeId }], } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, + type_id: typeTypeId, + from_id: anyTypeId, + to_id: anyTypeId, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageId, string: { data: { value: 'Payment' } }, }, @@ -233,12 +233,12 @@ const installPackage = async () => { const { data: [{ id: objectTypeId }], } = await deep.insert({ - type_id: Type, + type_id: typeTypeId, from_id: paymentTypeId, - to_id: Any, + to_id: anyTypeId, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageId, string: { data: { value: 'Object' } }, }, @@ -250,12 +250,12 @@ const installPackage = async () => { const { data: [{ id: sumTypeId }], } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, + type_id: typeTypeId, + from_id: anyTypeId, + to_id: anyTypeId, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageId, // before created package string: { data: { value: 'Sum' } }, }, @@ -268,12 +268,12 @@ const installPackage = async () => { const { data: [{ id: payTypeId }], } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, + type_id: typeTypeId, + from_id: anyTypeId, + to_id: anyTypeId, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageId, // before created package string: { data: { value: 'Pay' } }, }, @@ -285,12 +285,12 @@ const installPackage = async () => { const { data: [{ id: urlTypeId }], } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, + type_id: typeTypeId, + from_id: anyTypeId, + to_id: anyTypeId, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageId, // before created package string: { data: { value: 'Url' } }, }, @@ -302,12 +302,12 @@ const installPackage = async () => { const { data: [{ id: payedTypeId }], } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, + type_id: typeTypeId, + from_id: anyTypeId, + to_id: anyTypeId, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageId, // before created package string: { data: { value: 'Payed' } }, }, @@ -319,12 +319,12 @@ const installPackage = async () => { const { data: [{ id: errorTypeId }], } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, + type_id: typeTypeId, + from_id: anyTypeId, + to_id: anyTypeId, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageId, // before created package string: { data: { value: 'Error' } }, }, @@ -336,10 +336,10 @@ const installPackage = async () => { const { data: [{ id: paymentTreeId }], } = await deep.insert({ - type_id: Tree, + type_id: treeTypeId, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageId, string: { data: { value: 'paymentTree' } }, }, @@ -347,84 +347,84 @@ const installPackage = async () => { out: { data: [ { - type_id: TreeIncludeNode, + type_id: treeIncludeNodeTypeId, to_id: paymentTypeId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], }, }, { - type_id: TreeIncludeUp, + type_id: treeIncludeUpTypeId, to_id: sumTypeId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], }, }, { - type_id: TreeIncludeDown, + type_id: treeIncludeDownTypeId, to_id: objectTypeId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], }, }, { - type_id: TreeIncludeUp, + type_id: treeIncludeUpTypeId, to_id: errorTypeId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], }, }, { - type_id: TreeIncludeUp, + type_id: treeIncludeUpTypeId, to_id: payedTypeId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], }, }, { - type_id: TreeIncludeUp, + type_id: treeIncludeUpTypeId, to_id: payTypeId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], }, }, { - type_id: TreeIncludeUp, + type_id: treeIncludeUpTypeId, to_id: urlTypeId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -437,12 +437,12 @@ const installPackage = async () => { const { data: [{ id: storageBusinessTypeId }], } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, + type_id: typeTypeId, + from_id: anyTypeId, + to_id: anyTypeId, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageId, // before created package string: { data: { value: 'StorageBusiness' } }, }, @@ -453,12 +453,12 @@ const installPackage = async () => { const { data: [{ id: tokenTypeId }], } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, + type_id: typeTypeId, + from_id: anyTypeId, + to_id: anyTypeId, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageId, // before created package string: { data: { value: 'Token' } }, }, @@ -470,12 +470,12 @@ const installPackage = async () => { const { data: [{ id: storageClientTypeId }], } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, + type_id: typeTypeId, + from_id: anyTypeId, + to_id: anyTypeId, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageId, // before created package string: { data: { value: 'StorageClient' } }, }, @@ -486,12 +486,12 @@ const installPackage = async () => { const { data: [{ id: titleTypeId }], } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, + type_id: typeTypeId, + from_id: anyTypeId, + to_id: anyTypeId, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageId, // before created package string: { data: { value: 'Title' } }, }, @@ -502,12 +502,12 @@ const installPackage = async () => { const { data: [{ id: incomeTypeId }], } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, + type_id: typeTypeId, + from_id: anyTypeId, + to_id: anyTypeId, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageId, // before created package string: { data: { value: 'Income' } }, }, @@ -821,7 +821,7 @@ const installPackage = async () => { in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -838,7 +838,7 @@ const installPackage = async () => { in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -855,7 +855,7 @@ const installPackage = async () => { in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -875,7 +875,7 @@ const installPackage = async () => { in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -888,13 +888,13 @@ const installPackage = async () => { const { data: [{ id: Product }], } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, + type_id: typeTypeId, + from_id: anyTypeId, + to_id: anyTypeId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -911,7 +911,7 @@ const installPackage = async () => { in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -936,7 +936,7 @@ const installPackage = async () => { in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -956,7 +956,7 @@ const installPackage = async () => { in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -975,7 +975,7 @@ const installPackage = async () => { in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -994,7 +994,7 @@ const installPackage = async () => { in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], From fbed981a3b9df3d0f53dc7de6d5725e7ff6f1746 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 07:54:48 +0000 Subject: [PATCH 569/683] Add typeId to names --- payments-tinkoff-c2b-cancelling.cjs | 270 ++++++++++++++-------------- 1 file changed, 135 insertions(+), 135 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index d3b1cf39..8e9d59ec 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -51,22 +51,22 @@ const installPackage = async () => { try { - const User = await deep.id('@deep-foundation/core', 'User'); - const Type = await deep.id('@deep-foundation/core', 'Type'); - const Any = await deep.id('@deep-foundation/core', 'Any'); - const Join = await deep.id('@deep-foundation/core', 'Join'); - const Contain = await deep.id('@deep-foundation/core', 'Contain'); + const userTypeId = await deep.id('@deep-foundation/core', 'User'); + const typeTypeId = await deep.id('@deep-foundation/core', 'Type'); + const anyTypeId = await deep.id('@deep-foundation/core', 'Any'); + const joinTypeId = await deep.id('@deep-foundation/core', 'Join'); + const containTypeId = await deep.id('@deep-foundation/core', 'Contain'); const Value = await deep.id('@deep-foundation/core', 'Value'); const String = await deep.id('@deep-foundation/core', 'String'); - const Package = await deep.id('@deep-foundation/core', 'Package'); + const packageTypeId = await deep.id('@deep-foundation/core', 'Package'); - const SyncTextFile = await deep.id('@deep-foundation/core', 'SyncTextFile'); - const dockerSupportsJs = await deep.id( + const syncTextFileTypeId = await deep.id('@deep-foundation/core', 'SyncTextFile'); + const dockerSupportsJsId = await deep.id( '@deep-foundation/core', 'dockerSupportsJs' ); - const Handler = await deep.id('@deep-foundation/core', 'Handler'); - const HandleInsert = await deep.id('@deep-foundation/core', 'HandleInsert'); + const handlerTypeId = await deep.id('@deep-foundation/core', 'Handler'); + const handleInsertTypeId = await deep.id('@deep-foundation/core', 'HandleInsert'); const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); const Tree = await deep.id('@deep-foundation/core', 'Tree'); @@ -74,7 +74,7 @@ const installPackage = async () => { '@deep-foundation/core', 'TreeIncludeNode' ); - const TreeIncludeUp = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); + const treeIncludeUpTypeId = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); const TreeIncludeDown = await deep.id( '@deep-foundation/core', 'TreeIncludeDown' @@ -113,12 +113,12 @@ const installPackage = async () => { const { data: [{ id: packageLinkId }], } = await deep.insert({ - type_id: Package, + type_id: packageTypeId, string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -126,11 +126,11 @@ const installPackage = async () => { out: { data: [ { - type_id: Join, + type_id: joinTypeId, to_id: await deep.id('deep', 'users', 'packages'), }, { - type_id: Join, + type_id: joinTypeId, to_id: await deep.id('deep', 'admin'), }, ], @@ -139,89 +139,89 @@ const installPackage = async () => { console.log({ packageLinkId }); - const SumProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "SumProvider"); - console.log({ SumProvider: SumProvider }); + const sumProviderTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "SumProvider"); + console.log({ sumProviderTypeId }); - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - console.log({ TinkoffProvider }); + const tinkoffProviderTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + console.log({ tinkoffProviderTypeId }); - const Payment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); - console.log({ Payment: Payment }); + const paymentTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); + console.log({ paymentTypeId }); - const Object = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Object"); - console.log({ Object: Object }); + const objectTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Object"); + console.log({ objectTypeId }); - const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); - console.log({ Sum: Sum }); + const sumTypeid = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); + console.log({ sumTypeid }); - const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); - console.log({ Pay }); + const payTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + console.log({ payTypeId }); const { - data: [{ id: CancellingPay }], + data: [{ id: cancellingPayTypeId }], } = await deep.insert({ - type_id: /* Pay */ Type, - from_id: User, - to_id: Sum, + type_id: /* Pay */ typeTypeId, + from_id: userTypeId, + to_id: sumTypeid, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageLinkId, string: { data: { value: 'CancellingPay' } }, }, }, }); - console.log({ CancellingPay }); + console.log({ cancellingPayTypeId }); - const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); - console.log({ Url: Url }); + const urlTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); + console.log({ urlTypeId }); - const Payed = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"); - console.log({ Payed: Payed }); + const payedTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"); + console.log({ payedTypeId }); - const Error = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error"); - console.log({ Error: Error }); + const errorTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error"); + console.log({ errorTypeId }); const paymentTreeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree"); console.log({ paymentTreeLinkId }); - const StorageBusiness = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageBusiness"); - console.log({ StorageBusiness }); + const storageBusinessTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageBusiness"); + console.log({ storageBusinessTypeId }); - const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); - console.log({ Token }); + const tokenTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); + console.log({ tokenTypeId }); - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - console.log({ StorageClient }); + const storageClientTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + console.log({ storageClientTypeId }); - const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); - console.log({ Title }); + const titleTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); + console.log({ titleTypeId }); const { - data: [{ id: CancellingPayment }], + data: [{ id: cancellingPaymentTypeId }], } = await deep.insert({ - type_id: Type, - from_id: Payment, - to_id: User, + type_id: typeTypeId, + from_id: paymentTypeId, + to_id: userTypeId, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageLinkId, string: { data: { value: 'CancellingPayment' } }, }, }, }); - console.log({ CancellingPayment }); + console.log({ cancellingPaymentTypeId }); await deep.insert({ - type_id: TreeIncludeUp, + type_id: treeIncludeUpTypeId, from_id: paymentTreeLinkId, - to_id: CancellingPayment, + to_id: cancellingPaymentTypeId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -229,13 +229,13 @@ const installPackage = async () => { }); await deep.insert({ - type_id: TreeIncludeUp, + type_id: treeIncludeUpTypeId, from_id: paymentTreeLinkId, - to_id: CancellingPay, + to_id: cancellingPayTypeId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -338,31 +338,31 @@ async ({ deep, require, data: { newLink: payLink } }) => { const { data: [{ id: payInsertHandlerLinkId }], } = await deep.insert({ - type_id: SyncTextFile, + type_id: syncTextFileTypeId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: packageLinkId, // before created package string: { data: { value: 'payInsertHandlerFile' } }, }, { - from_id: dockerSupportsJs, - type_id: Handler, + from_id: dockerSupportsJsId, + type_id: handlerTypeId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: packageLinkId, // before created package string: { data: { value: 'payInsertHandler' } }, }, { - type_id: HandleInsert, - from_id: CancellingPay, + type_id: handleInsertTypeId, + from_id: cancellingPayTypeId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: packageLinkId, // before created package string: { data: { value: 'payInsertHandle' } }, }, @@ -498,7 +498,7 @@ async ( ), in: { data: { - type_id: Contain, + type_id: containTypeId, // from_id: deep.linkId, from_id: await deep.id('deep', 'admin'), string: { @@ -510,7 +510,7 @@ async ( }, to: { data: { - type_id: SyncTextFile, + type_id: syncTextFileTypeId, string: { data: { value: tinkoffNotificationHandler, @@ -518,7 +518,7 @@ async ( }, in: { data: { - type_id: Contain, + type_id: containTypeId, from_id: packageLinkId, string: { data: { @@ -669,7 +669,7 @@ async ( // } }; - console.log({ options: initOptions }); + console.log({ initOptions }); let initResult = await init(initOptions); @@ -700,7 +700,7 @@ async ( const cancelResult = await cancel(cancelOptions); - console.log({ cancelResponse: cancelResult }); + console.log({ cancelResult }); expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('REVERSED'); @@ -738,7 +738,7 @@ async ( // } }; - console.log({ options: initOptions }); + console.log({ initOptions }); let initResult = await init(initOptions); @@ -769,7 +769,7 @@ async ( { const cancelResult = await cancel(cancelOptions); - console.log({ cancelResponse: cancelResult }); + console.log({ cancelResult }); expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); @@ -777,7 +777,7 @@ async ( { const cancelResult = await cancel(cancelOptions); - console.log({ cancelResponse: cancelResult }); + console.log({ cancelResult }); expect(cancelResult.error).to.equal(undefined); expect(cancelResult.response.Status).to.equal('PARTIAL_REVERSED'); @@ -877,11 +877,11 @@ async ( const { data: [{ id: tinkoffProviderLinkId }], } = await deep.insert({ - type_id: TinkoffProvider, + type_id: tinkoffProviderTypeId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -894,11 +894,11 @@ async ( const { data: [{ id: sumProviderLinkId }], } = await deep.insert({ - type_id: SumProvider, + type_id: sumProviderTypeId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -911,11 +911,11 @@ async ( const { data: [{ id: storageBusinessLinkId }], } = await deep.insert({ - type_id: StorageBusiness, + type_id: storageBusinessTypeId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -928,14 +928,14 @@ async ( const { data: [{ id: tokenLinkId }], } = await deep.insert({ - type_id: Token, + type_id: tokenTypeId, from_id: storageBusinessLinkId, to_id: storageBusinessLinkId, string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -948,13 +948,13 @@ async ( const { data: [{ id: Product }], } = await deep.insert({ - type_id: Type, - from_id: Any, - to_id: Any, + type_id: typeTypeId, + from_id: anyTypeId, + to_id: anyTypeId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -971,7 +971,7 @@ async ( in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -989,14 +989,14 @@ async ( const { data: [{ id: paymentLinkId }], } = await deep.insert({ - type_id: Payment, + type_id: paymentTypeId, object: { data: { value: { orderId: uniqid() } } }, from_id: deep.linkId, to_id: storageBusinessLinkId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -1009,14 +1009,14 @@ async ( const { data: [{ id: sumLinkId }], } = await deep.insert({ - type_id: Sum, + type_id: sumTypeid, from_id: sumProviderLinkId, to_id: paymentLinkId, number: { data: { value: PRICE } }, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -1029,13 +1029,13 @@ async ( const { data: [{ id: objectLinkId }], } = await deep.insert({ - type_id: Object, + type_id: objectTypeId, from_id: paymentLinkId, to_id: productLinkId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -1048,13 +1048,13 @@ async ( const { data: [{ id: payLinkId }], } = await deep.insert({ - type_id: Pay, + type_id: payTypeId, from_id: deep.linkId, to_id: sumLinkId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -1067,7 +1067,7 @@ async ( var urlLinkSelectQuery; for (let i = 0; i < 10; i++) { urlLinkSelectQuery = await deep.select({ - type_id: Url, + type_id: urlTypeId, to_id: payLinkId, }); @@ -1097,7 +1097,7 @@ async ( console.log('testFinishAuthorize-start'); const { createdLinks } = await testInit({ customerKey }); - const urlLink = createdLinks.find(link => link.type_id === Url); + const urlLink = createdLinks.find(link => link.type_id === urlTypeId); expect(urlLink).to.not.be.equal(undefined) const url = urlLink.value.value; @@ -1126,13 +1126,13 @@ async ( const createdLinkIds = []; - const payLink = createdLinks.find(link => link.type_id === Pay); + const payLink = createdLinks.find(link => link.type_id === payTypeId); expect(payLink).to.not.equal(undefined); var payedLinkSelectQuery; for (let i = 0; i < 30; i++) { payedLinkSelectQuery = await deep.select({ - type_id: Payed, + type_id: payedTypeId, to_id: payLink.id }); @@ -1167,62 +1167,62 @@ async ( const createdLinkIds = []; - const paymentLink = createdLinks.find(link => link.type_id === Payment); + const paymentLink = createdLinks.find(link => link.type_id === paymentTypeId); console.log({ paymentLink }); const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: CancellingPayment, + type_id: cancellingPaymentTypeId, from_id: paymentLink.id, to_id: deep.linkId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], }, }); - if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + if (cancellingPaymentLinkInsertQuery.error) { throw new errorTypeId(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; console.log({ cancellingPaymentLinkId }); createdLinkIds.push(cancellingPaymentLinkId); allCreatedLinkIds.push(cancellingPaymentLinkId); const sumLinkOfCancellingPaymentQuery = await deep.insert({ - type_id: Sum, + type_id: sumTypeid, from_id: sumProviderLinkId, to_id: cancellingPaymentLinkId, number: { data: { value: PRICE } }, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], }, }); - if (sumLinkOfCancellingPaymentQuery.error) { throw new Error(sumLinkOfCancellingPaymentQuery.error.message); } + if (sumLinkOfCancellingPaymentQuery.error) { throw new errorTypeId(sumLinkOfCancellingPaymentQuery.error.message); } const sumLinkIdOfCancellingPayment = sumLinkOfCancellingPaymentQuery.data[0].id; console.log({ sumLinkIdOfCancellingPayment }); createdLinkIds.push(sumLinkIdOfCancellingPayment); allCreatedLinkIds.push(sumLinkIdOfCancellingPayment); const cancellingPayLinkInsertQuery = await deep.insert({ - type_id: CancellingPay, + type_id: cancellingPayTypeId, from_id: deep.linkId, to_id: sumLinkIdOfCancellingPayment, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], }, }); - if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } + if (cancellingPayLinkInsertQuery.error) { throw new errorTypeId(cancellingPayLinkInsertQuery.error.message); } const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; console.log({ cancellingPayLinkId }); createdLinkIds.push(cancellingPayLinkId); @@ -1231,7 +1231,7 @@ async ( var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { payedLinkSelectQuery = await deep.select({ - type_id: Payed, + type_id: payedTypeId, to_id: cancellingPayLinkId }); @@ -1241,7 +1241,7 @@ async ( await sleep(1000); } - if (payedLinkSelectQuery.error) { throw new Error(payedLinkSelectQuery.error.message); } + if (payedLinkSelectQuery.error) { throw new errorTypeId(payedLinkSelectQuery.error.message); } const payedLink = payedLinkSelectQuery.data[0]; expect(payedLink).to.not.equal(undefined); createdLinks.push(payedLink); @@ -1261,24 +1261,24 @@ async ( const createdLinkIds = []; - const paymentLink = createdLinks.find(link => link.type_id === Payment); + const paymentLink = createdLinks.find(link => link.type_id === paymentTypeId); console.log({ paymentLink }); for (let i = 0; i < 2; i++) { const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: CancellingPayment, + type_id: cancellingPaymentTypeId, from_id: paymentLink.id, to_id: deep.linkId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], }, }); - if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + if (cancellingPaymentLinkInsertQuery.error) { throw new errorTypeId(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; console.log({ cancellingPaymentLinkId }); createdLinkIds.push(cancellingPaymentLinkId); @@ -1287,14 +1287,14 @@ async ( const { data: [{ id: sumLinkIdOfCancellingPayment }] } = await deep.insert({ - type_id: Sum, + type_id: sumTypeid, from_id: sumProviderLinkId, to_id: cancellingPaymentLinkId, number: { data: { value: Math.floor(PRICE / 3) } }, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], @@ -1305,19 +1305,19 @@ async ( allCreatedLinkIds.push(sumLinkIdOfCancellingPayment); const cancellingPayLinkInsertQuery = await deep.insert({ - type_id: CancellingPay, + type_id: cancellingPayTypeId, from_id: deep.linkId, to_id: sumLinkIdOfCancellingPayment, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], }, }); - if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } + if (cancellingPayLinkInsertQuery.error) { throw new errorTypeId(cancellingPayLinkInsertQuery.error.message); } const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; console.log({ cancellingPayLinkId }); createdLinkIds.push(cancellingPayLinkId); @@ -1326,7 +1326,7 @@ async ( var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { payedLinkSelectQuery = await deep.select({ - type_id: Payed, + type_id: payedTypeId, to_id: cancellingPayLinkId }); @@ -1336,7 +1336,7 @@ async ( await sleep(1000); } - if (payedLinkSelectQuery.error) { throw new Error(payedLinkSelectQuery.error.message); } + if (payedLinkSelectQuery.error) { throw new errorTypeId(payedLinkSelectQuery.error.message); } const payedLink = payedLinkSelectQuery.data[0]; expect(payedLink).to.not.equal(undefined); createdLinks.push(payedLink); @@ -1359,62 +1359,62 @@ async ( const createdLinkIds = []; - const paymentLink = createdLinks.find(link => link.type_id === Payment); + const paymentLink = createdLinks.find(link => link.type_id === paymentTypeId); console.log({ paymentLink }); const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: CancellingPayment, + type_id: cancellingPaymentTypeId, from_id: paymentLink.id, to_id: deep.linkId, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], }, }); - if (cancellingPaymentLinkInsertQuery.error) { throw new Error(cancellingPaymentLinkInsertQuery.error.message); } + if (cancellingPaymentLinkInsertQuery.error) { throw new errorTypeId(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; console.log({ cancellingPaymentLinkId }); createdLinkIds.push(cancellingPaymentLinkId); allCreatedLinkIds.push(cancellingPaymentLinkId); const sumLinkOfCancellingPaymentSelectQuery = await deep.insert({ - type_id: Sum, + type_id: sumTypeid, from_id: sumProviderLinkId, to_id: cancellingPaymentLinkId, number: { data: { value: PRICE } }, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], }, }); - if (sumLinkOfCancellingPaymentSelectQuery.error) { throw new Error(sumLinkOfCancellingPaymentSelectQuery.error.message); } + if (sumLinkOfCancellingPaymentSelectQuery.error) { throw new errorTypeId(sumLinkOfCancellingPaymentSelectQuery.error.message); } const sumLinkIdOfCancellingPayment = sumLinkOfCancellingPaymentSelectQuery.data[0].id; console.log({ sumLinkIdOfCancellingPayment }); createdLinkIds.push(sumLinkIdOfCancellingPayment); allCreatedLinkIds.push(sumLinkIdOfCancellingPayment); const cancellingPayLinkInsertQuery = await deep.insert({ - type_id: CancellingPay, + type_id: cancellingPayTypeId, from_id: deep.linkId, to_id: sumLinkIdOfCancellingPayment, in: { data: [ { - type_id: Contain, + type_id: containTypeId, from_id: deep.linkId, }, ], }, }); - if (cancellingPayLinkInsertQuery.error) { throw new Error(cancellingPayLinkInsertQuery.error.message); } + if (cancellingPayLinkInsertQuery.error) { throw new errorTypeId(cancellingPayLinkInsertQuery.error.message); } const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; console.log({ cancellingPayLinkId }); createdLinkIds.push(cancellingPayLinkId); @@ -1423,7 +1423,7 @@ async ( var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { payedLinkSelectQuery = await deep.select({ - type_id: Payed, + type_id: payedTypeId, to_id: cancellingPayLinkId }); @@ -1433,7 +1433,7 @@ async ( await sleep(1000); } - if (payedLinkSelectQuery.error) { throw new Error(payedLinkSelectQuery.error.message); } + if (payedLinkSelectQuery.error) { throw new errorTypeId(payedLinkSelectQuery.error.message); } const payedLink = payedLinkSelectQuery.data[0]; expect(payedLink).to.not.equal(undefined); createdLinks.push(payedLink); From 877436dbfc30634ec1a5f9bbd92dff6af7243a77 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 08:06:53 +0000 Subject: [PATCH 570/683] Separate code --- .../cancelling/insertPayInsertHandler.cjs | 144 ++++++++++++++++++ payments-tinkoff-c2b-cancelling.cjs | 140 +---------------- 2 files changed, 146 insertions(+), 138 deletions(-) create mode 100644 deep-packges/payments/tinkoff/cancelling/insertPayInsertHandler.cjs diff --git a/deep-packges/payments/tinkoff/cancelling/insertPayInsertHandler.cjs b/deep-packges/payments/tinkoff/cancelling/insertPayInsertHandler.cjs new file mode 100644 index 00000000..bb03532f --- /dev/null +++ b/deep-packges/payments/tinkoff/cancelling/insertPayInsertHandler.cjs @@ -0,0 +1,144 @@ +const {cancel} = require("./cancel.cjs"); + +const insertPayInsertHandler = async ({deep, syncTextFileTypeId, terminayKey, containTypeId, packageId, dockerSupportsJsId, handlerTypeId, handleInsertTypeId}) => { + const payInsertHandler = ` +async ({ deep, require, data: { newLink: payLink } }) => { + ${handlersDependencies} + + const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ + down: { + link_id: { _eq: payLink.id }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") }, + }, + }); + console.log({mpDownPay}); + if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } + + const CancellingPayment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "CancellingPayment"); + const cancellingPaymentLink = mpDownPay.find(link => link.type_id === CancellingPayment); + console.log({cancellingPaymentLink}); + if(!cancellingPaymentLink) { + return; + } + + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: TinkoffProvider + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; + + const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); + const sumLink = mpDownPay.find(link => link.type_id === Sum); + console.log({sumLink}); + if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); + + const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); + + const cancelledPaymentLinkSelectQuery = await deep.select({ + id: cancellingPaymentLink.from_id + }); + if(cancelledPaymentLinkSelectQuery.error) { throw new Error(cancelledPaymentLinkSelectQuery.error.message); } + const cancelledPaymentLink = cancelledPaymentLinkSelectQuery.data[0]; + console.log({cancelledPaymentLink}); + + const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); + const incomeLinkInsertQuery = await deep.insert({ + type_id: Income, + from_id: cancellingPaymentLink.id, + to_id: cancelledPaymentLink.to_id + }); + if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} + + + const userLinkSelectQuery = await deep.select({ + id: cancellingPaymentLink.to_id + }); + if(userLinkSelectQuery.error) { throw new Error(userLinkSelectQuery.error.message); } + const userLink = userLinkSelectQuery.data[0]; + console.log({userLink}); + + const cancel = ${cancel.toString()}; + + await deep.insert({link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value}, {table: "objects"}); + + const cancelOptions = { + TerminalKey: "${terminayKey}", + PaymentId: cancelledPaymentLink.value.value.bankPaymentId, + Amount: sumLink.value.value, + }; + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + console.log({cancelResult}); + if (cancelResult.error) { + const errorMessage = "Could not cancel the order. " + JSON.stringify(cancelResult.error); + + const {error: errorLinkInsertQueryError} = await deep.insert({ + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), + from_id: tinkoffProviderLink.id, + to_id: payLink.id, + string: { data: { value: errorMessage } }, + }); + if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } + throw new Error(errorMessage); + } + + const {error: payedLinkInsertQueryError} = await deep.insert({ + type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), + from_id: tinkoffProviderLink.id, + to_id: payLink.id, + }); + if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError.message); } + +}; +`; + +const { + data: [{ id: payInsertHandlerLinkId }], + } = await deep.insert({ + type_id: syncTextFileTypeId, + in: { + data: [ + { + type_id: containTypeId, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandlerFile' } }, + }, + { + from_id: dockerSupportsJsId, + type_id: handlerTypeId, + in: { + data: [ + { + type_id: containTypeId, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandler' } }, + }, + { + type_id: handleInsertTypeId, + from_id: cancellingPayTypeId, + in: { + data: [ + { + type_id: containTypeId, + from_id: packageId, // before created package + string: { data: { value: 'payInsertHandle' } }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + string: { + data: { + value: payInsertHandler, + }, + }, + }); + + return payInsertHandlerLinkId; +} \ No newline at end of file diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 8e9d59ec..125e060b 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -242,145 +242,9 @@ const installPackage = async () => { }, }); - const payInsertHandler = ` -async ({ deep, require, data: { newLink: payLink } }) => { - ${handlersDependencies} - - const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ - down: { - link_id: { _eq: payLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") }, - }, - }); - console.log({mpDownPay}); - if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } - - const CancellingPayment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "CancellingPayment"); - const cancellingPaymentLink = mpDownPay.find(link => link.type_id === CancellingPayment); - console.log({cancellingPaymentLink}); - if(!cancellingPaymentLink) { - return; - } - - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: TinkoffProvider - }); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; - - const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); - const sumLink = mpDownPay.find(link => link.type_id === Sum); - console.log({sumLink}); - if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); + - const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); - - const cancelledPaymentLinkSelectQuery = await deep.select({ - id: cancellingPaymentLink.from_id - }); - if(cancelledPaymentLinkSelectQuery.error) { throw new Error(cancelledPaymentLinkSelectQuery.error.message); } - const cancelledPaymentLink = cancelledPaymentLinkSelectQuery.data[0]; - console.log({cancelledPaymentLink}); - - const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); - const incomeLinkInsertQuery = await deep.insert({ - type_id: Income, - from_id: cancellingPaymentLink.id, - to_id: cancelledPaymentLink.to_id - }); - if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} - - - const userLinkSelectQuery = await deep.select({ - id: cancellingPaymentLink.to_id - }); - if(userLinkSelectQuery.error) { throw new Error(userLinkSelectQuery.error.message); } - const userLink = userLinkSelectQuery.data[0]; - console.log({userLink}); - - const cancel = ${cancel.toString()}; - - await deep.insert({link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value}, {table: "objects"}); - - const cancelOptions = { - TerminalKey: "${process.env.PAYMENTS_C2B_TERMINAL_KEY}", - PaymentId: cancelledPaymentLink.value.value.bankPaymentId, - Amount: sumLink.value.value, - }; - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - console.log({cancelResult}); - if (cancelResult.error) { - const errorMessage = "Could not cancel the order. " + JSON.stringify(cancelResult.error); - - const {error: errorLinkInsertQueryError} = await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), - from_id: tinkoffProviderLink.id, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - }); - if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } - throw new Error(errorMessage); - } - - const {error: payedLinkInsertQueryError} = await deep.insert({ - type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), - from_id: tinkoffProviderLink.id, - to_id: payLink.id, - }); - if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError.message); } - -}; -`; - - const { - data: [{ id: payInsertHandlerLinkId }], - } = await deep.insert({ - type_id: syncTextFileTypeId, - in: { - data: [ - { - type_id: containTypeId, - from_id: packageLinkId, // before created package - string: { data: { value: 'payInsertHandlerFile' } }, - }, - { - from_id: dockerSupportsJsId, - type_id: handlerTypeId, - in: { - data: [ - { - type_id: containTypeId, - from_id: packageLinkId, // before created package - string: { data: { value: 'payInsertHandler' } }, - }, - { - type_id: handleInsertTypeId, - from_id: cancellingPayTypeId, - in: { - data: [ - { - type_id: containTypeId, - from_id: packageLinkId, // before created package - string: { data: { value: 'payInsertHandle' } }, - }, - ], - }, - }, - ], - }, - }, - ], - }, - string: { - data: { - value: payInsertHandler, - }, - }, - }); - console.log({ payInsertHandlerLinkId }); + await insertPayInsertHandler({}); const tinkoffNotificationHandler = ` async ( From bee89ed55d422bbb6871ad44fe375d217d2ef0cc Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 08:07:05 +0000 Subject: [PATCH 571/683] Use cjs import syntax --- payments-tinkoff-c2b-cancelling.cjs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 125e060b..63ed56b2 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -16,11 +16,11 @@ const axios = require('axios'); const uniqid = require('uniqid'); const { expect } = require('chai'); const {payInBrowser} = require("./deep-packges/payments/tinkoff/payInBrowser.cjs"); -import {getError} from "./deep-packges/payments/tinkoff/getError.cjs"; - -import { init } from "./deep-packges/payments/tinkoff/init.cjs"; -import { cancel } from "./deep-packges/payments/tinkoff/cancel.cjs"; -import { handlersDependencies } from "./deep-packges/payments/tinkoff/handlersDependencies.cjs"; +const {getError} = require("./deep-packges/payments/tinkoff/getError.cjs"); +const { init } = require("./deep-packges/payments/tinkoff/init.cjs"); +const { cancel } = require("./deep-packges/payments/tinkoff/cancel.cjs"); +const { handlersDependencies } = require("./deep-packges/payments/tinkoff/handlersDependencies.cjs"); +const { insertPayInsertHandler } = require("./deep-packges/payments/tinkoff/cancelling/insertPayInsertHandler.cjs"); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); From d6b77d16b39b2c169d6b30922dad9ca27976c01a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 08:08:41 +0000 Subject: [PATCH 572/683] Pass args to insertPayInsertHandler --- payments-tinkoff-c2b-cancelling.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 63ed56b2..0c4a5189 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -244,7 +244,7 @@ const installPackage = async () => { - await insertPayInsertHandler({}); + await insertPayInsertHandler({containTypeId, deep, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, packageId, syncTextFileTypeId, terminayKey: process.env.PAYMENTS_C2B_TERMINAL_KEY}); const tinkoffNotificationHandler = ` async ( From f0b8a7cd71abb8dbd343a7f276c5fad7779e7e7e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 08:08:50 +0000 Subject: [PATCH 573/683] Export --- .../payments/tinkoff/cancelling/insertPayInsertHandler.cjs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/deep-packges/payments/tinkoff/cancelling/insertPayInsertHandler.cjs b/deep-packges/payments/tinkoff/cancelling/insertPayInsertHandler.cjs index bb03532f..aa65c1fb 100644 --- a/deep-packges/payments/tinkoff/cancelling/insertPayInsertHandler.cjs +++ b/deep-packges/payments/tinkoff/cancelling/insertPayInsertHandler.cjs @@ -141,4 +141,6 @@ const { }); return payInsertHandlerLinkId; -} \ No newline at end of file +} + +exports.insertPayInsertHandler = insertPayInsertHandler; \ No newline at end of file From 5eec914576cf4054bb83b8d066d1178f35e24051 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 08:20:10 +0000 Subject: [PATCH 574/683] Add insertHandler --- deep-packges/insertHandler.cjs | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 deep-packges/insertHandler.cjs diff --git a/deep-packges/insertHandler.cjs b/deep-packges/insertHandler.cjs new file mode 100644 index 00000000..f70f174f --- /dev/null +++ b/deep-packges/insertHandler.cjs @@ -0,0 +1,47 @@ +const insertHandler = async ({deep, fileName, handlerName, handleName, triggerTypeId, code, supportsId, handleOperationTypeId, containTypeId, packageId, handlerTypeId}) => { + return await deep.insert({ + type_id: syncTextFileTypeId, + in: { + data: [ + { + type_id: containTypeId, + from_id: packageId, // before created package + string: { data: { value: fileName } }, + }, + { + from_id: supportsId, + type_id: handlerTypeId, + in: { + data: [ + { + type_id: containTypeId, + from_id: packageId, // before created package + string: { data: { value: handlerName } }, + }, + { + type_id: handleOperationTypeId, + from_id: triggerTypeId, + in: { + data: [ + { + type_id: containTypeId, + from_id: packageId, // before created package + string: { data: { value: handleName } }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + string: { + data: { + value: code, + }, + }, + }); + }; + + exports.insertHandler = insertHandler; \ No newline at end of file From 31841caeb8b637bef272bc551dd76a5d51cb09e9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 08:20:17 +0000 Subject: [PATCH 575/683] Add insertNotificationHandler --- deep-packges/insertNotificationHandler.cjs | 89 ++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 deep-packges/insertNotificationHandler.cjs diff --git a/deep-packges/insertNotificationHandler.cjs b/deep-packges/insertNotificationHandler.cjs new file mode 100644 index 00000000..aaca1be7 --- /dev/null +++ b/deep-packges/insertNotificationHandler.cjs @@ -0,0 +1,89 @@ +const insertNotificationHandler = async ({deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, handlerName}) => { +return await deep.insert( + { + type_id: portTypeId, + number: { + data: { value: notificationPort }, + }, + in: { + data: { + type_id: routerListeningTypeId, + from: { + data: { + type_id: routerTypeId, + in: { + data: { + type_id: routerStringUseTypeId, + string: { + data: { + value: + notificationRoute, + }, + }, + from: { + data: { + type_id: routeTypeId, + out: { + data: { + type_id: handleRouteTypeId, + to: { + data: { + type_id: handlerTypeId, + from_id: supportsId, + in: { + data: { + type_id: containTypeId, + // from_id: deep.linkId, + from_id: adminId, + string: { + data: { + value: handlerName, + }, + }, + }, + }, + to: { + data: { + type_id: fileTypeId, + string: { + data: { + value: tinkoffNotificationHandlerCode, + }, + }, + in: { + data: { + type_id: containTypeId, + from_id: packageId, + string: { + data: { + value: handlerName, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + } + ) + + if(error) { + throw new Error(error.message); + } +} + +exports.insertNotificationHandler = insertNotificationHandler; \ No newline at end of file From bf630a50d3306cfe1f44338bbd99293af6a7f652 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 08:28:09 +0000 Subject: [PATCH 576/683] Separate code --- deep-packges/insertNotificationHandler.cjs | 8 +- .../tinkoff/insertNotificationHandler.cjs | 90 +------------------ 2 files changed, 6 insertions(+), 92 deletions(-) diff --git a/deep-packges/insertNotificationHandler.cjs b/deep-packges/insertNotificationHandler.cjs index aaca1be7..6ab1941e 100644 --- a/deep-packges/insertNotificationHandler.cjs +++ b/deep-packges/insertNotificationHandler.cjs @@ -1,4 +1,4 @@ -const insertNotificationHandler = async ({deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, handlerName}) => { +const insertNotificationHandler = async ({deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, handlerName, code}) => { return await deep.insert( { type_id: portTypeId, @@ -47,7 +47,7 @@ return await deep.insert( type_id: fileTypeId, string: { data: { - value: tinkoffNotificationHandlerCode, + value: code, }, }, in: { @@ -80,10 +80,6 @@ return await deep.insert( name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', } ) - - if(error) { - throw new Error(error.message); - } } exports.insertNotificationHandler = insertNotificationHandler; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/insertNotificationHandler.cjs b/deep-packges/payments/tinkoff/insertNotificationHandler.cjs index f4f4d593..dc0099d9 100644 --- a/deep-packges/payments/tinkoff/insertNotificationHandler.cjs +++ b/deep-packges/payments/tinkoff/insertNotificationHandler.cjs @@ -1,5 +1,7 @@ +const {insertNotificationHandler: baseInsertNotificationHandler} = require("./../../insertNotificationHandler.cjs"); + const insertNotificationHandler = async ({deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { - const tinkoffNotificationHandlerCode = ` + const code = ` async ( req, res, @@ -149,91 +151,7 @@ async ( }; `; -const {error} = await deep.insert( - { - type_id: portTypeId, - number: { - data: { value: notificationPort }, - }, - in: { - data: { - type_id: routerListeningTypeId, - from: { - data: { - type_id: routerTypeId, - in: { - data: { - type_id: routerStringUseTypeId, - string: { - data: { - value: - notificationRoute, - }, - }, - from: { - data: { - type_id: routeTypeId, - out: { - data: { - type_id: handleRouteTypeId, - to: { - data: { - type_id: handlerTypeId, - from_id: supportsId, - in: { - data: { - type_id: containTypeId, - // from_id: deep.linkId, - from_id: adminId, - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - to: { - data: { - type_id: fileTypeId, - string: { - data: { - value: tinkoffNotificationHandlerCode, - }, - }, - in: { - data: { - type_id: containTypeId, - from_id: packageId, - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - } - ) - - if(error) { - throw new Error(error.message); - } +await baseInsertNotificationHandler({adminId, containTypeId, deep, fileTypeId, handlerName: "tinkoffNotificationHandler", handleRouteTypeId,handlerTypeId,notificationPort,notificationRoute,portTypeId,routerListeningTypeId,routerStringUseTypeId,routerTypeId,routeTypeId,supportsId, code}); } exports.insertNotificationHandler = insertNotificationHandler; \ No newline at end of file From db82682487cbe70a1acd985ba8166a45698fc005 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 08:34:17 +0000 Subject: [PATCH 577/683] Separate code --- deep-packges/insertHandler.cjs | 4 +- .../tinkoff/insertNotificationHandler.cjs | 2 +- .../tinkoff/insertPayInsertHandler.cjs | 53 ++----------------- 3 files changed, 7 insertions(+), 52 deletions(-) diff --git a/deep-packges/insertHandler.cjs b/deep-packges/insertHandler.cjs index f70f174f..649dc7c2 100644 --- a/deep-packges/insertHandler.cjs +++ b/deep-packges/insertHandler.cjs @@ -1,6 +1,6 @@ -const insertHandler = async ({deep, fileName, handlerName, handleName, triggerTypeId, code, supportsId, handleOperationTypeId, containTypeId, packageId, handlerTypeId}) => { +const insertHandler = async ({deep,fileTypeId, fileName, handlerName, handleName, triggerTypeId, code, supportsId, handleOperationTypeId, containTypeId, packageId, handlerTypeId, code}) => { return await deep.insert({ - type_id: syncTextFileTypeId, + type_id: fileTypeId, in: { data: [ { diff --git a/deep-packges/payments/tinkoff/insertNotificationHandler.cjs b/deep-packges/payments/tinkoff/insertNotificationHandler.cjs index dc0099d9..59c385bc 100644 --- a/deep-packges/payments/tinkoff/insertNotificationHandler.cjs +++ b/deep-packges/payments/tinkoff/insertNotificationHandler.cjs @@ -151,7 +151,7 @@ async ( }; `; -await baseInsertNotificationHandler({adminId, containTypeId, deep, fileTypeId, handlerName: "tinkoffNotificationHandler", handleRouteTypeId,handlerTypeId,notificationPort,notificationRoute,portTypeId,routerListeningTypeId,routerStringUseTypeId,routerTypeId,routeTypeId,supportsId, code}); +return await baseInsertNotificationHandler({adminId, containTypeId, deep, fileTypeId, handlerName: "tinkoffNotificationHandler", handleRouteTypeId,handlerTypeId,notificationPort,notificationRoute,portTypeId,routerListeningTypeId,routerStringUseTypeId,routerTypeId,routeTypeId,supportsId, code}); } exports.insertNotificationHandler = insertNotificationHandler; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/insertPayInsertHandler.cjs b/deep-packges/payments/tinkoff/insertPayInsertHandler.cjs index 6e0dab7a..dd4d1b73 100644 --- a/deep-packges/payments/tinkoff/insertPayInsertHandler.cjs +++ b/deep-packges/payments/tinkoff/insertPayInsertHandler.cjs @@ -1,8 +1,9 @@ +const { insertHandler } = require("../../insertHandler.cjs"); const {handlersDependencies} = require("./handlersDependencies.cjs"); const {init} = require("./init.cjs"); -const insertPayInsertHandler = async ({deep, notificationUrl, userEmail, userPhone, fileTypeId, containTypeId, packageId, supportsId, handlerTypeId, handlerInsertTypeId, containTypeId}) => { - const payInsertHandlerCode = ` +const insertPayInsertHandler = async ({deep, notificationUrl, userEmail, userPhone, fileTypeId, containTypeId, packageId, supportsId, handlerInsertTypeId, containTypeId}) => { + const code = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} @@ -121,53 +122,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }; `; -const { - data: [{ id: payInsertHandlerId }], - } = await deep.insert({ - type_id: fileTypeId, - in: { - data: [ - { - type_id: containTypeId, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandlerFile' } }, - }, - { - from_id: supportsId, - type_id: handlerTypeId, - in: { - data: [ - { - type_id: containTypeId, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandler' } }, - }, - { - type_id: handlerInsertTypeId, - from_id: payTypeId, - in: { - data: [ - { - type_id: containTypeId, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandle' } }, - }, - ], - }, - }, - ], - }, - }, - ], - }, - string: { - data: { - value: payInsertHandlerCode, - }, - }, - }); - - return payInsertHandlerId; +return await insertHandler({deep, fileTypeId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeId, code, supportsId, handleOperationTypeId, containTypeId, packageId, handlerTypeId: handlerInsertTypeId, code}); } exports.insertPayInsertHandler = insertPayInsertHandler; \ No newline at end of file From 59db6256d98c0839a334aad0d6c2725316bc4a99 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 08:39:38 +0000 Subject: [PATCH 578/683] Separate code --- .../cancelling/insertPayInsertHandler.cjs | 51 ++----------------- .../tinkoff/insertPayInsertHandler.cjs | 4 +- 2 files changed, 5 insertions(+), 50 deletions(-) diff --git a/deep-packges/payments/tinkoff/cancelling/insertPayInsertHandler.cjs b/deep-packges/payments/tinkoff/cancelling/insertPayInsertHandler.cjs index aa65c1fb..4a3c4f25 100644 --- a/deep-packges/payments/tinkoff/cancelling/insertPayInsertHandler.cjs +++ b/deep-packges/payments/tinkoff/cancelling/insertPayInsertHandler.cjs @@ -1,7 +1,8 @@ +const { insertHandler } = require("../../../insertHandler.cjs"); const {cancel} = require("./cancel.cjs"); const insertPayInsertHandler = async ({deep, syncTextFileTypeId, terminayKey, containTypeId, packageId, dockerSupportsJsId, handlerTypeId, handleInsertTypeId}) => { - const payInsertHandler = ` + const code = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} @@ -94,53 +95,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }; `; -const { - data: [{ id: payInsertHandlerLinkId }], - } = await deep.insert({ - type_id: syncTextFileTypeId, - in: { - data: [ - { - type_id: containTypeId, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandlerFile' } }, - }, - { - from_id: dockerSupportsJsId, - type_id: handlerTypeId, - in: { - data: [ - { - type_id: containTypeId, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandler' } }, - }, - { - type_id: handleInsertTypeId, - from_id: cancellingPayTypeId, - in: { - data: [ - { - type_id: containTypeId, - from_id: packageId, // before created package - string: { data: { value: 'payInsertHandle' } }, - }, - ], - }, - }, - ], - }, - }, - ], - }, - string: { - data: { - value: payInsertHandler, - }, - }, - }); - - return payInsertHandlerLinkId; +return await insertHandler({deep,fileTypeId: syncTextFileTypeId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeId, code, supportsId: dockerSupportsJsId, handleOperationTypeId: handleInsertTypeId, containTypeId, packageId, handlerTypeId, code}); } exports.insertPayInsertHandler = insertPayInsertHandler; \ No newline at end of file diff --git a/deep-packges/payments/tinkoff/insertPayInsertHandler.cjs b/deep-packges/payments/tinkoff/insertPayInsertHandler.cjs index dd4d1b73..73ce2b82 100644 --- a/deep-packges/payments/tinkoff/insertPayInsertHandler.cjs +++ b/deep-packges/payments/tinkoff/insertPayInsertHandler.cjs @@ -2,7 +2,7 @@ const { insertHandler } = require("../../insertHandler.cjs"); const {handlersDependencies} = require("./handlersDependencies.cjs"); const {init} = require("./init.cjs"); -const insertPayInsertHandler = async ({deep, notificationUrl, userEmail, userPhone, fileTypeId, containTypeId, packageId, supportsId, handlerInsertTypeId, containTypeId}) => { +const insertPayInsertHandler = async ({deep, notificationUrl, userEmail, userPhone, fileTypeId, containTypeId, packageId, dockerSupportsJsId, handlerInsertTypeId, containTypeId, handlerTypeId}) => { const code = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} @@ -122,7 +122,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }; `; -return await insertHandler({deep, fileTypeId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeId, code, supportsId, handleOperationTypeId, containTypeId, packageId, handlerTypeId: handlerInsertTypeId, code}); +return await insertHandler({deep, fileTypeId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeId, code, supportsId: dockerSupportsJsId, handleOperationTypeId: handlerInsertTypeId, containTypeId, packageId, handlerTypeId, code}); } exports.insertPayInsertHandler = insertPayInsertHandler; \ No newline at end of file From 1ff0891e3f6b14c9704ac3676e3a7f8818ed2cd9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 08:40:19 +0000 Subject: [PATCH 579/683] Separate cdoe --- deep-packges/payments/tinkoff/insertPayInsertHandler.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deep-packges/payments/tinkoff/insertPayInsertHandler.cjs b/deep-packges/payments/tinkoff/insertPayInsertHandler.cjs index dd4d1b73..73ce2b82 100644 --- a/deep-packges/payments/tinkoff/insertPayInsertHandler.cjs +++ b/deep-packges/payments/tinkoff/insertPayInsertHandler.cjs @@ -2,7 +2,7 @@ const { insertHandler } = require("../../insertHandler.cjs"); const {handlersDependencies} = require("./handlersDependencies.cjs"); const {init} = require("./init.cjs"); -const insertPayInsertHandler = async ({deep, notificationUrl, userEmail, userPhone, fileTypeId, containTypeId, packageId, supportsId, handlerInsertTypeId, containTypeId}) => { +const insertPayInsertHandler = async ({deep, notificationUrl, userEmail, userPhone, fileTypeId, containTypeId, packageId, dockerSupportsJsId, handlerInsertTypeId, containTypeId, handlerTypeId}) => { const code = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} @@ -122,7 +122,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }; `; -return await insertHandler({deep, fileTypeId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeId, code, supportsId, handleOperationTypeId, containTypeId, packageId, handlerTypeId: handlerInsertTypeId, code}); +return await insertHandler({deep, fileTypeId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeId, code, supportsId: dockerSupportsJsId, handleOperationTypeId: handlerInsertTypeId, containTypeId, packageId, handlerTypeId, code}); } exports.insertPayInsertHandler = insertPayInsertHandler; \ No newline at end of file From 92fba10d8b555db5e718a358c332e8604f1ab661 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 08:44:54 +0000 Subject: [PATCH 580/683] Separate code --- .../cancelling/insertNotificationHandler.cjs | 78 +++++++++++++++ payments-tinkoff-c2b-cancelling.cjs | 98 +++++-------------- 2 files changed, 102 insertions(+), 74 deletions(-) create mode 100644 deep-packges/payments/tinkoff/cancelling/insertNotificationHandler.cjs diff --git a/deep-packges/payments/tinkoff/cancelling/insertNotificationHandler.cjs b/deep-packges/payments/tinkoff/cancelling/insertNotificationHandler.cjs new file mode 100644 index 00000000..f9e1d022 --- /dev/null +++ b/deep-packges/payments/tinkoff/cancelling/insertNotificationHandler.cjs @@ -0,0 +1,78 @@ +const {insertNotificationHandler: baseInsertNotificationHandler} = require("./../../insertNotificationHandler.cjs"); + +const insertNotificationHandler = async ({deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { + const code = ` +async ( + req, + res, + next, + { deep, require, gql } +) => { + ${handlersDependencies} + const reqBody = req.body; + console.log({reqBody}); + + // Canceled is used instead of Cancelled because tinkoff team is not goos at english + if (req.body.Status !== 'CANCELED') { + return next(); + } + + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: TinkoffProvider + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; + + const cancellingPaymentLinkSelectQuery = await deep.select({ + object: {value: {_contains: {orderId: req.body.OrderId}}} + }); + if(cancellingPaymentLinkSelectQuery.error) { throw new Error(cancellingPaymentLinkSelectQuery.error.message); } + const cancellingPaymentLink = cancellingPaymentLinkSelectQuery.data[0]; + console.log({cancellingPaymentLink}); + if(!cancellingPaymentLink) { throw new Error("The cancelling payment link associated with the order id " + req.body.OrderId + " is not found."); } + + const {data: mpUpCancellingPaymentLink, error: mpUpcancellingPaymentLinkSelectQueryError} = await deep.select({ + up: { + parent_id: { _eq: cancellingPaymentLink.id }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } + } + }); + console.log({mpUpCancellingPaymentLink}); + if(mpUpcancellingPaymentLinkSelectQueryError) { throw new Error(mpUpcancellingPaymentLinkSelectQueryError.message); } + + const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + const payLink = mpUpCancellingPaymentLink.find(link => link.type_id === Pay); + console.log({payLink}); + if(!payLink) { throw new Error("The pay link associated with cancelling payment link " + cancellingPaymentLink + " is not found.") } + + + const bankPaymentId = req.body.PaymentId; + + const {data: mpUpPayment, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ + up: { + parent_id: { _eq: cancellingPaymentLink.id }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } + } + }); + + const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum") + const sumLink = mpUpPayment.find(link => link.type_id === Sum); + if(!sumLink) {throw new Error("Could not find sum link associated with the cancelling payment " + cancellingPaymentLink);} + + const Payed = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed") + const payedInsertLinkInsertQuery = await deep.insert({ + type_id: Payed, + from_id: tinkoffProviderLink.id, + to_id: sumLink.id, + }); + if(payedInsertLinkInsertQuery.error) {throw new Error(payedInsertLinkInsertQuery.error.message);} + + res.send('ok'); +}; +`; + +return await baseInsertNotificationHandler({adminId, containTypeId, deep, fileTypeId, handlerName: "tinkoffNotificationHandler", handleRouteTypeId,handlerTypeId,notificationPort,notificationRoute,portTypeId,routerListeningTypeId,routerStringUseTypeId,routerTypeId,routeTypeId,supportsId, code}); +} + +exports.insertNotificationHandler = insertNotificationHandler; \ No newline at end of file diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 0c4a5189..29693a55 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -21,6 +21,7 @@ const { init } = require("./deep-packges/payments/tinkoff/init.cjs"); const { cancel } = require("./deep-packges/payments/tinkoff/cancel.cjs"); const { handlersDependencies } = require("./deep-packges/payments/tinkoff/handlersDependencies.cjs"); const { insertPayInsertHandler } = require("./deep-packges/payments/tinkoff/cancelling/insertPayInsertHandler.cjs"); +const { insertNotificationHandler } = require("./deep-packges/payments/tinkoff/cancelling/insertNotificationHandler.cjs"); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); @@ -60,14 +61,33 @@ const installPackage = async () => { const String = await deep.id('@deep-foundation/core', 'String'); const packageTypeId = await deep.id('@deep-foundation/core', 'Package'); + const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); const syncTextFileTypeId = await deep.id('@deep-foundation/core', 'SyncTextFile'); - const dockerSupportsJsId = await deep.id( + const dockerSupportsJs = await deep.id( '@deep-foundation/core', 'dockerSupportsJs' ); - const handlerTypeId = await deep.id('@deep-foundation/core', 'Handler'); const handleInsertTypeId = await deep.id('@deep-foundation/core', 'HandleInsert'); - const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); + const portTypeId = await deep.id('@deep-foundation/core', 'Port'); + const routerListeningTypeId = await deep.id('@deep-foundation/core', 'RouterListening'); + const routerTypeId = await deep.id('@deep-foundation/core', 'Router'); + const routerStringUseTypeId = await deep.id( + '@deep-foundation/core', + 'RouterStringUse' + ); + const routeTypeId = await deep.id('@deep-foundation/core', 'Route'); + const handleRouteTypeId = await deep.id( + '@deep-foundation/core', + 'HandleRoute' + ); + const handlerTypeId = await deep.id( + '@deep-foundation/core', + 'Handler' + ); + const dockerSupportsJsId = await deep.id( + '@deep-foundation/core', + 'dockerSupportsJs' + ); const Tree = await deep.id('@deep-foundation/core', 'Tree'); const TreeIncludeNode = await deep.id( @@ -245,77 +265,7 @@ const installPackage = async () => { await insertPayInsertHandler({containTypeId, deep, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, packageId, syncTextFileTypeId, terminayKey: process.env.PAYMENTS_C2B_TERMINAL_KEY}); - - const tinkoffNotificationHandler = ` -async ( - req, - res, - next, - { deep, require, gql } -) => { - ${handlersDependencies} - const reqBody = req.body; - console.log({reqBody}); - - // Canceled is used instead of Cancelled because tinkoff team is not goos at english - if (req.body.Status !== 'CANCELED') { - return next(); - } - - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: TinkoffProvider - }); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; - - const cancellingPaymentLinkSelectQuery = await deep.select({ - object: {value: {_contains: {orderId: req.body.OrderId}}} - }); - if(cancellingPaymentLinkSelectQuery.error) { throw new Error(cancellingPaymentLinkSelectQuery.error.message); } - const cancellingPaymentLink = cancellingPaymentLinkSelectQuery.data[0]; - console.log({cancellingPaymentLink}); - if(!cancellingPaymentLink) { throw new Error("The cancelling payment link associated with the order id " + req.body.OrderId + " is not found."); } - - const {data: mpUpCancellingPaymentLink, error: mpUpcancellingPaymentLinkSelectQueryError} = await deep.select({ - up: { - parent_id: { _eq: cancellingPaymentLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } - } - }); - console.log({mpUpCancellingPaymentLink}); - if(mpUpcancellingPaymentLinkSelectQueryError) { throw new Error(mpUpcancellingPaymentLinkSelectQueryError.message); } - - const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); - const payLink = mpUpCancellingPaymentLink.find(link => link.type_id === Pay); - console.log({payLink}); - if(!payLink) { throw new Error("The pay link associated with cancelling payment link " + cancellingPaymentLink + " is not found.") } - - - const bankPaymentId = req.body.PaymentId; - - const {data: mpUpPayment, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ - up: { - parent_id: { _eq: cancellingPaymentLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } - } - }); - - const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum") - const sumLink = mpUpPayment.find(link => link.type_id === Sum); - if(!sumLink) {throw new Error("Could not find sum link associated with the cancelling payment " + cancellingPaymentLink);} - - const Payed = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed") - const payedInsertLinkInsertQuery = await deep.insert({ - type_id: Payed, - from_id: tinkoffProviderLink.id, - to_id: sumLink.id, - }); - if(payedInsertLinkInsertQuery.error) {throw new Error(payedInsertLinkInsertQuery.error.message);} - - res.send('ok'); -}; -`; + await insertNotificationHandler({deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId}); await deep.insert( { From a86df16a35275be03ba3872ae89a1ff11848aa5e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 08:46:09 +0000 Subject: [PATCH 581/683] Remove unused code --- payments-tinkoff-c2b-cancelling.cjs | 96 +---------------------------- 1 file changed, 1 insertion(+), 95 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 29693a55..5b62dfb4 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -267,101 +267,7 @@ const installPackage = async () => { await insertPayInsertHandler({containTypeId, deep, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, packageId, syncTextFileTypeId, terminayKey: process.env.PAYMENTS_C2B_TERMINAL_KEY}); await insertNotificationHandler({deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId}); - await deep.insert( - { - type_id: await deep.id('@deep-foundation/core', 'Port'), - number: { - data: { value: process.env.PAYMENTS_C2B_NOTIFICATION_PORT }, - }, - in: { - data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), - in: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'RouterStringUse' - ), - string: { - data: { - value: - process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, - }, - }, - from: { - data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), - out: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'HandleRoute' - ), - to: { - data: { - type_id: await deep.id( - '@deep-foundation/core', - 'Handler' - ), - from_id: await deep.id( - '@deep-foundation/core', - 'dockerSupportsJs' - ), - in: { - data: { - type_id: containTypeId, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - to: { - data: { - type_id: syncTextFileTypeId, - string: { - data: { - value: tinkoffNotificationHandler, - }, - }, - in: { - data: { - type_id: containTypeId, - from_id: packageLinkId, - string: { - data: { - value: 'tinkoffNotificationHandler', - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - } - ); - - const callTests = async () => { + const callTests = async () => { console.log('callTests-start'); const PRICE = 5500; From 5517081cba457a307dfed2a55ebbf3ecd62b980f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 08:46:25 +0000 Subject: [PATCH 582/683] Format code --- payments-tinkoff-c2b-cancelling.cjs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 5b62dfb4..4eff7660 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -15,8 +15,8 @@ const crypto = require('crypto'); const axios = require('axios'); const uniqid = require('uniqid'); const { expect } = require('chai'); -const {payInBrowser} = require("./deep-packges/payments/tinkoff/payInBrowser.cjs"); -const {getError} = require("./deep-packges/payments/tinkoff/getError.cjs"); +const { payInBrowser } = require("./deep-packges/payments/tinkoff/payInBrowser.cjs"); +const { getError } = require("./deep-packges/payments/tinkoff/getError.cjs"); const { init } = require("./deep-packges/payments/tinkoff/init.cjs"); const { cancel } = require("./deep-packges/payments/tinkoff/cancel.cjs"); const { handlersDependencies } = require("./deep-packges/payments/tinkoff/handlersDependencies.cjs"); @@ -262,12 +262,12 @@ const installPackage = async () => { }, }); - - await insertPayInsertHandler({containTypeId, deep, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, packageId, syncTextFileTypeId, terminayKey: process.env.PAYMENTS_C2B_TERMINAL_KEY}); - await insertNotificationHandler({deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId}); - const callTests = async () => { + await insertPayInsertHandler({ containTypeId, deep, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, packageId, syncTextFileTypeId, terminayKey: process.env.PAYMENTS_C2B_TERMINAL_KEY }); + await insertNotificationHandler({ deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId }); + + const callTests = async () => { console.log('callTests-start'); const PRICE = 5500; From a88891499e3c4032fbbafc92ac1aa15b484ee53a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 11:25:18 +0000 Subject: [PATCH 583/683] Separate code --- deep-packges/sleep.cjs | 3 +++ payments-tinkoff-c2b.cjs | 31 +++++++++++++++---------------- 2 files changed, 18 insertions(+), 16 deletions(-) create mode 100644 deep-packges/sleep.cjs diff --git a/deep-packges/sleep.cjs b/deep-packges/sleep.cjs new file mode 100644 index 00000000..2f580a86 --- /dev/null +++ b/deep-packges/sleep.cjs @@ -0,0 +1,3 @@ +const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); + +exports.sleep = sleep; \ No newline at end of file diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 2dd5d2ff..2d6eebd3 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -20,28 +20,27 @@ const { default: links, } = require('@deep-foundation/deeplinks/imports/router/links'); const {payInBrowser} = require("./deep-packges/payments/tinkoff/payInBrowser.cjs"); -import {getError} from "./deep-packges/payments/tinkoff/getError.cjs"; -import { generateToken, generateTokenStringWithInsertedTerminalPassword } from "./deep-packges/payments/tinkoff/generateToken.cjs"; -import { getUrl } from "./deep-packges/payments/tinkoff/getUrl.cjs"; -import { getState } from "./deep-packges/payments/tinkoff/getState.cjs"; -import { checkOrder } from "./deep-packges/payments/tinkoff/checkOrder.cjs"; -import { getCardList } from "./deep-packges/payments/tinkoff/getCardList.cjs"; -import { init } from "./deep-packges/payments/tinkoff/init.cjs"; -import { charge } from "./deep-packges/payments/tinkoff/charge.cjs"; -import { addCustomer } from "./deep-packges/payments/tinkoff/addCustomer.cjs"; -import { getCustomer } from "./deep-packges/payments/tinkoff/getCustomer.cjs"; -import { removeCustomer } from "./deep-packges/payments/tinkoff/removeCustomer.cjs"; -import { handlersDependencies } from "./deep-packges/payments/tinkoff/handlersDependencies.cjs"; -import { insertPayInsertHandler } from "./deep-packges/payments/tinkoff/insertPayInsertHandler.cjs"; -import { insertNotificationHandler } from "./deep-packges/payments/tinkoff/insertNotificationHandler.cjs"; +const {getError} = ("./deep-packges/payments/tinkoff/getError.cjs"); +const { generateToken, generateTokenStringWithInsertedTerminalPassword } = ("./deep-packges/payments/tinkoff/generateToken.cjs"); +const { getUrl } = ("./deep-packges/payments/tinkoff/getUrl.cjs"); +const { getState } = ("./deep-packges/payments/tinkoff/getState.cjs"); +const { checkOrder } = ("./deep-packges/payments/tinkoff/checkOrder.cjs"); +const { getCardList } = ("./deep-packges/payments/tinkoff/getCardList.cjs"); +const { init } = ("./deep-packges/payments/tinkoff/init.cjs"); +const { charge } = ("./deep-packges/payments/tinkoff/charge.cjs"); +const { addCustomer } = ("./deep-packges/payments/tinkoff/addCustomer.cjs"); +const { getCustomer } = ("./deep-packges/payments/tinkoff/getCustomer.cjs"); +const { removeCustomer } = ("./deep-packges/payments/tinkoff/removeCustomer.cjs"); +const { handlersDependencies } = ("./deep-packges/payments/tinkoff/handlersDependencies.cjs"); +const { insertPayInsertHandler } = ("./deep-packges/payments/tinkoff/insertPayInsertHandler.cjs"); +const { insertNotificationHandler } = ("./deep-packges/payments/tinkoff/insertNotificationHandler.cjs"); +const {sleep} = require("./deep-packges/sleep.cjs"); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); console.log('Installing payments-tinkoff-c2b package'); -const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); - const allCreatedLinkIds = []; const installPackage = async () => { From 48812ca016ec50d221934444c8c5e22dceeba321 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 11:26:52 +0000 Subject: [PATCH 584/683] Require sleep fn --- deep-packges/payments/tinkoff/payInBrowser.cjs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/deep-packges/payments/tinkoff/payInBrowser.cjs b/deep-packges/payments/tinkoff/payInBrowser.cjs index 86422bd0..584d6edf 100644 --- a/deep-packges/payments/tinkoff/payInBrowser.cjs +++ b/deep-packges/payments/tinkoff/payInBrowser.cjs @@ -1,4 +1,4 @@ - +const {sleep} = require('./deep-packges/sleep.cjs'); const payInBrowser = async ({ page, browser, url }) => { await page.goto(url, { waitUntil: 'networkidle2' }); @@ -16,11 +16,19 @@ const payInBrowser = async ({ page, browser, url }) => { 'button[automation-id="pay-card__submit"]' ); }); + + await page.evaluate(() => { + const saveCardTextDiv = [...document.querySelectorAll("div.t-content")].find(element => element.innerText == "Сохранить карту "); + if(saveCardTextDiv) { + const saveCardInput = saveCardTextDiv.parentElement.querySelector("input"); + if(saveCardInput.checked) {saveCardInput.click()} + } + }) if (cvc1) { await page.waitForSelector( 'input[automation-id="tui-input-card-grouped__card"]' ); - await sleep(300); + await dela(300); await page.type( 'input[automation-id="tui-input-card-grouped__card"]', process.env.PAYMENTS_C2B_CARD_NUMBER_SUCCESS From 0fcaa7c75505395355f2a1260d9710f774e028fe Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 11:55:10 +0000 Subject: [PATCH 585/683] Comment unused code --- .../payments/tinkoff/payInBrowser.cjs | 41 +++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/deep-packges/payments/tinkoff/payInBrowser.cjs b/deep-packges/payments/tinkoff/payInBrowser.cjs index 584d6edf..7dd006ec 100644 --- a/deep-packges/payments/tinkoff/payInBrowser.cjs +++ b/deep-packges/payments/tinkoff/payInBrowser.cjs @@ -1,4 +1,4 @@ -const {sleep} = require('./deep-packges/sleep.cjs'); +const {sleep} = require('./../../sleep.cjs'); const payInBrowser = async ({ page, browser, url }) => { await page.goto(url, { waitUntil: 'networkidle2' }); @@ -17,18 +17,17 @@ const payInBrowser = async ({ page, browser, url }) => { ); }); - await page.evaluate(() => { - const saveCardTextDiv = [...document.querySelectorAll("div.t-content")].find(element => element.innerText == "Сохранить карту "); - if(saveCardTextDiv) { - const saveCardInput = saveCardTextDiv.parentElement.querySelector("input"); - if(saveCardInput.checked) {saveCardInput.click()} - } - }) + // const saveCardTextDiv = [...document.querySelectorAll("div.t-content")].find(element => element.innerText == "Сохранить карту "); + // if(saveCardTextDiv) { + // const saveCardInput = saveCardTextDiv.parentElement.querySelector("input"); + // if(saveCardInput.checked) {saveCardInput.click()} + // } + if (cvc1) { await page.waitForSelector( 'input[automation-id="tui-input-card-grouped__card"]' ); - await dela(300); + await sleep(300); await page.type( 'input[automation-id="tui-input-card-grouped__card"]', process.env.PAYMENTS_C2B_CARD_NUMBER_SUCCESS @@ -56,38 +55,38 @@ const payInBrowser = async ({ page, browser, url }) => { await sleep(300); await page.type( 'input[automation-id="tui-input-card-grouped__card"]', - process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS + process.env.PAYMENTS_C2B_CARD_NUMBER_SUCCESS ); // card number await sleep(300); await page.keyboard.press('Tab'); await sleep(300); await page.type( 'input[automation-id="tui-input-card-grouped__expire"]', - process.env.PAYMENT_E2C_CARD_EXPDATE + process.env.PAYMENTS_C2B_CARD_EXPDATE ); // expired date await sleep(300); await page.keyboard.press('Tab'); await sleep(300); await page.type( 'input[automation-id="tui-input-card-grouped__cvc"]', - process.env.PAYMENT_E2C_CARD_CVC + process.env.PAYMENTS_C2B_CARD_CVC ); // CVC code await sleep(300); await page.click('button[automation-id="pay-wallet__submit"]'); // submit button - await sleep(300); - await page.waitForSelector('input[name="password"]'); - const code = prompt('enter code '); - console.log('code', code); - await page.type('input[name="password"]', code); - await sleep(1000); + // await sleep(300); + // await page.waitForSelector('input[name="password"]'); + // const code = prompt('enter code '); + // console.log('code', code); + // await page.type('input[name="password"]', code); + // await sleep(1000); } // TODO: пока старая форма вызывалась только на тестовой карте, где ввод смс кода не нужен await sleep(1000); } else { console.log('NEW FORM!!!!!!!'); - await page.type('#pan', process.env.PAYMENT_E2C_CARD_NUMBER_SUCCESS); // card number - await page.type('#expDate', process.env.PAYMENT_E2C_CARD_EXPDATE); // expired date - await page.type('#card_cvc', process.env.PAYMENT_E2C_CARD_CVC); // CVC code + await page.type('#pan', process.env.PAYMENTS_C2B_CARD_NUMBER_SUCCESS); // card number + await page.type('#expDate', process.env.PAYMENTS_C2B_CARD_EXPDATE); // expired date + await page.type('#card_cvc', process.env.PAYMENTS_C2B_CARD_CVC); // CVC code await page.click('button[type=submit]'); // submit button await page.waitForSelector('input[name="password"]'); const code = prompt('enter code '); From 8daf7f8b24daf4ce65fa83760622f1e06455c927 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 11:59:19 +0000 Subject: [PATCH 586/683] Rename to deep-packages --- {deep-packges => deep-packages}/insertHandler.cjs | 0 {deep-packges => deep-packages}/insertNotificationHandler.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/addCustomer.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/charge.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/checkOrder.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/confirm.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/errors.cjs | 0 .../payments/tinkoff/generateToken.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/getCardList.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/getCustomer.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/getError.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/getState.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/getUrl.cjs | 0 .../payments/tinkoff/handlersDependencies.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/init.cjs | 0 .../payments/tinkoff/insertNotificationHandler.cjs | 0 .../payments/tinkoff/insertPayInsertHandler.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/payInBrowser.cjs | 0 .../payments/tinkoff/removeCustomer.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/resend.cjs | 0 {deep-packges => deep-packages}/sleep.cjs | 0 21 files changed, 0 insertions(+), 0 deletions(-) rename {deep-packges => deep-packages}/insertHandler.cjs (100%) rename {deep-packges => deep-packages}/insertNotificationHandler.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/addCustomer.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/charge.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/checkOrder.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/confirm.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/errors.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/generateToken.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/getCardList.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/getCustomer.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/getError.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/getState.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/getUrl.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/handlersDependencies.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/init.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/insertNotificationHandler.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/insertPayInsertHandler.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/payInBrowser.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/removeCustomer.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/resend.cjs (100%) rename {deep-packges => deep-packages}/sleep.cjs (100%) diff --git a/deep-packges/insertHandler.cjs b/deep-packages/insertHandler.cjs similarity index 100% rename from deep-packges/insertHandler.cjs rename to deep-packages/insertHandler.cjs diff --git a/deep-packges/insertNotificationHandler.cjs b/deep-packages/insertNotificationHandler.cjs similarity index 100% rename from deep-packges/insertNotificationHandler.cjs rename to deep-packages/insertNotificationHandler.cjs diff --git a/deep-packges/payments/tinkoff/addCustomer.cjs b/deep-packages/payments/tinkoff/addCustomer.cjs similarity index 100% rename from deep-packges/payments/tinkoff/addCustomer.cjs rename to deep-packages/payments/tinkoff/addCustomer.cjs diff --git a/deep-packges/payments/tinkoff/charge.cjs b/deep-packages/payments/tinkoff/charge.cjs similarity index 100% rename from deep-packges/payments/tinkoff/charge.cjs rename to deep-packages/payments/tinkoff/charge.cjs diff --git a/deep-packges/payments/tinkoff/checkOrder.cjs b/deep-packages/payments/tinkoff/checkOrder.cjs similarity index 100% rename from deep-packges/payments/tinkoff/checkOrder.cjs rename to deep-packages/payments/tinkoff/checkOrder.cjs diff --git a/deep-packges/payments/tinkoff/confirm.cjs b/deep-packages/payments/tinkoff/confirm.cjs similarity index 100% rename from deep-packges/payments/tinkoff/confirm.cjs rename to deep-packages/payments/tinkoff/confirm.cjs diff --git a/deep-packges/payments/tinkoff/errors.cjs b/deep-packages/payments/tinkoff/errors.cjs similarity index 100% rename from deep-packges/payments/tinkoff/errors.cjs rename to deep-packages/payments/tinkoff/errors.cjs diff --git a/deep-packges/payments/tinkoff/generateToken.cjs b/deep-packages/payments/tinkoff/generateToken.cjs similarity index 100% rename from deep-packges/payments/tinkoff/generateToken.cjs rename to deep-packages/payments/tinkoff/generateToken.cjs diff --git a/deep-packges/payments/tinkoff/getCardList.cjs b/deep-packages/payments/tinkoff/getCardList.cjs similarity index 100% rename from deep-packges/payments/tinkoff/getCardList.cjs rename to deep-packages/payments/tinkoff/getCardList.cjs diff --git a/deep-packges/payments/tinkoff/getCustomer.cjs b/deep-packages/payments/tinkoff/getCustomer.cjs similarity index 100% rename from deep-packges/payments/tinkoff/getCustomer.cjs rename to deep-packages/payments/tinkoff/getCustomer.cjs diff --git a/deep-packges/payments/tinkoff/getError.cjs b/deep-packages/payments/tinkoff/getError.cjs similarity index 100% rename from deep-packges/payments/tinkoff/getError.cjs rename to deep-packages/payments/tinkoff/getError.cjs diff --git a/deep-packges/payments/tinkoff/getState.cjs b/deep-packages/payments/tinkoff/getState.cjs similarity index 100% rename from deep-packges/payments/tinkoff/getState.cjs rename to deep-packages/payments/tinkoff/getState.cjs diff --git a/deep-packges/payments/tinkoff/getUrl.cjs b/deep-packages/payments/tinkoff/getUrl.cjs similarity index 100% rename from deep-packges/payments/tinkoff/getUrl.cjs rename to deep-packages/payments/tinkoff/getUrl.cjs diff --git a/deep-packges/payments/tinkoff/handlersDependencies.cjs b/deep-packages/payments/tinkoff/handlersDependencies.cjs similarity index 100% rename from deep-packges/payments/tinkoff/handlersDependencies.cjs rename to deep-packages/payments/tinkoff/handlersDependencies.cjs diff --git a/deep-packges/payments/tinkoff/init.cjs b/deep-packages/payments/tinkoff/init.cjs similarity index 100% rename from deep-packges/payments/tinkoff/init.cjs rename to deep-packages/payments/tinkoff/init.cjs diff --git a/deep-packges/payments/tinkoff/insertNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertNotificationHandler.cjs similarity index 100% rename from deep-packges/payments/tinkoff/insertNotificationHandler.cjs rename to deep-packages/payments/tinkoff/insertNotificationHandler.cjs diff --git a/deep-packges/payments/tinkoff/insertPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertPayInsertHandler.cjs similarity index 100% rename from deep-packges/payments/tinkoff/insertPayInsertHandler.cjs rename to deep-packages/payments/tinkoff/insertPayInsertHandler.cjs diff --git a/deep-packges/payments/tinkoff/payInBrowser.cjs b/deep-packages/payments/tinkoff/payInBrowser.cjs similarity index 100% rename from deep-packges/payments/tinkoff/payInBrowser.cjs rename to deep-packages/payments/tinkoff/payInBrowser.cjs diff --git a/deep-packges/payments/tinkoff/removeCustomer.cjs b/deep-packages/payments/tinkoff/removeCustomer.cjs similarity index 100% rename from deep-packges/payments/tinkoff/removeCustomer.cjs rename to deep-packages/payments/tinkoff/removeCustomer.cjs diff --git a/deep-packges/payments/tinkoff/resend.cjs b/deep-packages/payments/tinkoff/resend.cjs similarity index 100% rename from deep-packges/payments/tinkoff/resend.cjs rename to deep-packages/payments/tinkoff/resend.cjs diff --git a/deep-packges/sleep.cjs b/deep-packages/sleep.cjs similarity index 100% rename from deep-packges/sleep.cjs rename to deep-packages/sleep.cjs From 835b3e980fbc599f7d4c167654404051a6ef3162 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Wed, 19 Oct 2022 12:02:55 +0000 Subject: [PATCH 587/683] Install puppeteer dependencies --- .gitpod.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitpod.yml b/.gitpod.yml index 2c20ed61..594963d6 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -25,7 +25,11 @@ vscode: - ms-azuretools.vscode-docker tasks: - - init: npm run gitpod-init; docker pull deepf/deeplinks:main; docker run -v $(pwd)/packages/deeplinks:/deeplinks --rm --name links --entrypoint "sh" deepf/deeplinks:main -c "cp -r /snapshots/* /deeplinks/snapshots/"; (cd packages/deeplinks && npm run snapshot:last); npm install -g concurrently; sudo apt install -y libgbm-dev chromium-browser gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget + - init: npm run gitpod-init; docker pull deepf/deeplinks:main; docker run -v $(pwd)/packages/deeplinks:/deeplinks --rm --name links --entrypoint "sh" deepf/deeplinks:main -c "cp -r /snapshots/* /deeplinks/snapshots/"; (cd packages/deeplinks && npm run snapshot:last); npm install -g concurrently; + + - command: | + npm run gitpod-start; + # For puppeteer + sudo apt update; sudo apt install -y libgbm-dev chromium-browser gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget; - - command: npm run gitpod-start; From 496fb1ac279019eb842871af385a7b8685b2d1ec Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 20 Oct 2022 10:29:08 +0000 Subject: [PATCH 588/683] Fix typo --- {deep-packges => deep-packages}/insertHandler.cjs | 0 {deep-packges => deep-packages}/insertNotificationHandler.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/addCustomer.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/cancel.cjs | 0 .../payments/tinkoff/cancelling/insertNotificationHandler.cjs | 0 .../payments/tinkoff/cancelling/insertPayInsertHandler.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/charge.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/checkOrder.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/confirm.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/errors.cjs | 0 .../payments/tinkoff/generateToken.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/getCardList.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/getCustomer.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/getError.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/getState.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/getUrl.cjs | 0 .../payments/tinkoff/handlersDependencies.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/init.cjs | 0 .../payments/tinkoff/insertNotificationHandler.cjs | 0 .../payments/tinkoff/insertPayInsertHandler.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/payInBrowser.cjs | 0 .../payments/tinkoff/removeCustomer.cjs | 0 {deep-packges => deep-packages}/payments/tinkoff/resend.cjs | 0 {deep-packges => deep-packages}/sleep.cjs | 0 24 files changed, 0 insertions(+), 0 deletions(-) rename {deep-packges => deep-packages}/insertHandler.cjs (100%) rename {deep-packges => deep-packages}/insertNotificationHandler.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/addCustomer.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/cancel.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/cancelling/insertNotificationHandler.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/cancelling/insertPayInsertHandler.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/charge.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/checkOrder.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/confirm.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/errors.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/generateToken.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/getCardList.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/getCustomer.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/getError.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/getState.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/getUrl.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/handlersDependencies.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/init.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/insertNotificationHandler.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/insertPayInsertHandler.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/payInBrowser.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/removeCustomer.cjs (100%) rename {deep-packges => deep-packages}/payments/tinkoff/resend.cjs (100%) rename {deep-packges => deep-packages}/sleep.cjs (100%) diff --git a/deep-packges/insertHandler.cjs b/deep-packages/insertHandler.cjs similarity index 100% rename from deep-packges/insertHandler.cjs rename to deep-packages/insertHandler.cjs diff --git a/deep-packges/insertNotificationHandler.cjs b/deep-packages/insertNotificationHandler.cjs similarity index 100% rename from deep-packges/insertNotificationHandler.cjs rename to deep-packages/insertNotificationHandler.cjs diff --git a/deep-packges/payments/tinkoff/addCustomer.cjs b/deep-packages/payments/tinkoff/addCustomer.cjs similarity index 100% rename from deep-packges/payments/tinkoff/addCustomer.cjs rename to deep-packages/payments/tinkoff/addCustomer.cjs diff --git a/deep-packges/payments/tinkoff/cancel.cjs b/deep-packages/payments/tinkoff/cancel.cjs similarity index 100% rename from deep-packges/payments/tinkoff/cancel.cjs rename to deep-packages/payments/tinkoff/cancel.cjs diff --git a/deep-packges/payments/tinkoff/cancelling/insertNotificationHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertNotificationHandler.cjs similarity index 100% rename from deep-packges/payments/tinkoff/cancelling/insertNotificationHandler.cjs rename to deep-packages/payments/tinkoff/cancelling/insertNotificationHandler.cjs diff --git a/deep-packges/payments/tinkoff/cancelling/insertPayInsertHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertPayInsertHandler.cjs similarity index 100% rename from deep-packges/payments/tinkoff/cancelling/insertPayInsertHandler.cjs rename to deep-packages/payments/tinkoff/cancelling/insertPayInsertHandler.cjs diff --git a/deep-packges/payments/tinkoff/charge.cjs b/deep-packages/payments/tinkoff/charge.cjs similarity index 100% rename from deep-packges/payments/tinkoff/charge.cjs rename to deep-packages/payments/tinkoff/charge.cjs diff --git a/deep-packges/payments/tinkoff/checkOrder.cjs b/deep-packages/payments/tinkoff/checkOrder.cjs similarity index 100% rename from deep-packges/payments/tinkoff/checkOrder.cjs rename to deep-packages/payments/tinkoff/checkOrder.cjs diff --git a/deep-packges/payments/tinkoff/confirm.cjs b/deep-packages/payments/tinkoff/confirm.cjs similarity index 100% rename from deep-packges/payments/tinkoff/confirm.cjs rename to deep-packages/payments/tinkoff/confirm.cjs diff --git a/deep-packges/payments/tinkoff/errors.cjs b/deep-packages/payments/tinkoff/errors.cjs similarity index 100% rename from deep-packges/payments/tinkoff/errors.cjs rename to deep-packages/payments/tinkoff/errors.cjs diff --git a/deep-packges/payments/tinkoff/generateToken.cjs b/deep-packages/payments/tinkoff/generateToken.cjs similarity index 100% rename from deep-packges/payments/tinkoff/generateToken.cjs rename to deep-packages/payments/tinkoff/generateToken.cjs diff --git a/deep-packges/payments/tinkoff/getCardList.cjs b/deep-packages/payments/tinkoff/getCardList.cjs similarity index 100% rename from deep-packges/payments/tinkoff/getCardList.cjs rename to deep-packages/payments/tinkoff/getCardList.cjs diff --git a/deep-packges/payments/tinkoff/getCustomer.cjs b/deep-packages/payments/tinkoff/getCustomer.cjs similarity index 100% rename from deep-packges/payments/tinkoff/getCustomer.cjs rename to deep-packages/payments/tinkoff/getCustomer.cjs diff --git a/deep-packges/payments/tinkoff/getError.cjs b/deep-packages/payments/tinkoff/getError.cjs similarity index 100% rename from deep-packges/payments/tinkoff/getError.cjs rename to deep-packages/payments/tinkoff/getError.cjs diff --git a/deep-packges/payments/tinkoff/getState.cjs b/deep-packages/payments/tinkoff/getState.cjs similarity index 100% rename from deep-packges/payments/tinkoff/getState.cjs rename to deep-packages/payments/tinkoff/getState.cjs diff --git a/deep-packges/payments/tinkoff/getUrl.cjs b/deep-packages/payments/tinkoff/getUrl.cjs similarity index 100% rename from deep-packges/payments/tinkoff/getUrl.cjs rename to deep-packages/payments/tinkoff/getUrl.cjs diff --git a/deep-packges/payments/tinkoff/handlersDependencies.cjs b/deep-packages/payments/tinkoff/handlersDependencies.cjs similarity index 100% rename from deep-packges/payments/tinkoff/handlersDependencies.cjs rename to deep-packages/payments/tinkoff/handlersDependencies.cjs diff --git a/deep-packges/payments/tinkoff/init.cjs b/deep-packages/payments/tinkoff/init.cjs similarity index 100% rename from deep-packges/payments/tinkoff/init.cjs rename to deep-packages/payments/tinkoff/init.cjs diff --git a/deep-packges/payments/tinkoff/insertNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertNotificationHandler.cjs similarity index 100% rename from deep-packges/payments/tinkoff/insertNotificationHandler.cjs rename to deep-packages/payments/tinkoff/insertNotificationHandler.cjs diff --git a/deep-packges/payments/tinkoff/insertPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertPayInsertHandler.cjs similarity index 100% rename from deep-packges/payments/tinkoff/insertPayInsertHandler.cjs rename to deep-packages/payments/tinkoff/insertPayInsertHandler.cjs diff --git a/deep-packges/payments/tinkoff/payInBrowser.cjs b/deep-packages/payments/tinkoff/payInBrowser.cjs similarity index 100% rename from deep-packges/payments/tinkoff/payInBrowser.cjs rename to deep-packages/payments/tinkoff/payInBrowser.cjs diff --git a/deep-packges/payments/tinkoff/removeCustomer.cjs b/deep-packages/payments/tinkoff/removeCustomer.cjs similarity index 100% rename from deep-packges/payments/tinkoff/removeCustomer.cjs rename to deep-packages/payments/tinkoff/removeCustomer.cjs diff --git a/deep-packges/payments/tinkoff/resend.cjs b/deep-packages/payments/tinkoff/resend.cjs similarity index 100% rename from deep-packges/payments/tinkoff/resend.cjs rename to deep-packages/payments/tinkoff/resend.cjs diff --git a/deep-packges/sleep.cjs b/deep-packages/sleep.cjs similarity index 100% rename from deep-packges/sleep.cjs rename to deep-packages/sleep.cjs From e524a349eb74a1c0e58ffbd5966f28cdcc20c685 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 20 Oct 2022 10:34:53 +0000 Subject: [PATCH 589/683] Fix typo --- payments-tinkoff-c2b.cjs | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 2d6eebd3..15071101 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -19,22 +19,22 @@ const { get } = require('lodash'); const { default: links, } = require('@deep-foundation/deeplinks/imports/router/links'); -const {payInBrowser} = require("./deep-packges/payments/tinkoff/payInBrowser.cjs"); -const {getError} = ("./deep-packges/payments/tinkoff/getError.cjs"); -const { generateToken, generateTokenStringWithInsertedTerminalPassword } = ("./deep-packges/payments/tinkoff/generateToken.cjs"); -const { getUrl } = ("./deep-packges/payments/tinkoff/getUrl.cjs"); -const { getState } = ("./deep-packges/payments/tinkoff/getState.cjs"); -const { checkOrder } = ("./deep-packges/payments/tinkoff/checkOrder.cjs"); -const { getCardList } = ("./deep-packges/payments/tinkoff/getCardList.cjs"); -const { init } = ("./deep-packges/payments/tinkoff/init.cjs"); -const { charge } = ("./deep-packges/payments/tinkoff/charge.cjs"); -const { addCustomer } = ("./deep-packges/payments/tinkoff/addCustomer.cjs"); -const { getCustomer } = ("./deep-packges/payments/tinkoff/getCustomer.cjs"); -const { removeCustomer } = ("./deep-packges/payments/tinkoff/removeCustomer.cjs"); -const { handlersDependencies } = ("./deep-packges/payments/tinkoff/handlersDependencies.cjs"); -const { insertPayInsertHandler } = ("./deep-packges/payments/tinkoff/insertPayInsertHandler.cjs"); -const { insertNotificationHandler } = ("./deep-packges/payments/tinkoff/insertNotificationHandler.cjs"); -const {sleep} = require("./deep-packges/sleep.cjs"); +const {payInBrowser} = require("./deep-packages/payments/tinkoff/payInBrowser.cjs"); +const {getError} = ("./deep-packages/payments/tinkoff/getError.cjs"); +const { generateToken, generateTokenStringWithInsertedTerminalPassword } = ("./deep-packages/payments/tinkoff/generateToken.cjs"); +const { getUrl } = ("./deep-packages/payments/tinkoff/getUrl.cjs"); +const { getState } = ("./deep-packages/payments/tinkoff/getState.cjs"); +const { checkOrder } = ("./deep-packages/payments/tinkoff/checkOrder.cjs"); +const { getCardList } = ("./deep-packages/payments/tinkoff/getCardList.cjs"); +const { init } = ("./deep-packages/payments/tinkoff/init.cjs"); +const { charge } = ("./deep-packages/payments/tinkoff/charge.cjs"); +const { addCustomer } = ("./deep-packages/payments/tinkoff/addCustomer.cjs"); +const { getCustomer } = ("./deep-packages/payments/tinkoff/getCustomer.cjs"); +const { removeCustomer } = ("./deep-packages/payments/tinkoff/removeCustomer.cjs"); +const { handlersDependencies } = ("./deep-packages/payments/tinkoff/handlersDependencies.cjs"); +const { insertPayInsertHandler } = ("./deep-packages/payments/tinkoff/insertPayInsertHandler.cjs"); +const { insertNotificationHandler } = ("./deep-packages/payments/tinkoff/insertNotificationHandler.cjs"); +const {sleep} = require("./deep-packages/sleep.cjs"); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); From 5b7250c21df27047d7ed9ffbddc0b622ed953b25 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 20 Oct 2022 10:35:11 +0000 Subject: [PATCH 590/683] Fix typo --- payments-tinkoff-c2b-cancelling.cjs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 4eff7660..2d228f38 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -15,13 +15,13 @@ const crypto = require('crypto'); const axios = require('axios'); const uniqid = require('uniqid'); const { expect } = require('chai'); -const { payInBrowser } = require("./deep-packges/payments/tinkoff/payInBrowser.cjs"); -const { getError } = require("./deep-packges/payments/tinkoff/getError.cjs"); -const { init } = require("./deep-packges/payments/tinkoff/init.cjs"); -const { cancel } = require("./deep-packges/payments/tinkoff/cancel.cjs"); -const { handlersDependencies } = require("./deep-packges/payments/tinkoff/handlersDependencies.cjs"); -const { insertPayInsertHandler } = require("./deep-packges/payments/tinkoff/cancelling/insertPayInsertHandler.cjs"); -const { insertNotificationHandler } = require("./deep-packges/payments/tinkoff/cancelling/insertNotificationHandler.cjs"); +const { payInBrowser } = require("./deep-packages/payments/tinkoff/payInBrowser.cjs"); +const { getError } = require("./deep-packages/payments/tinkoff/getError.cjs"); +const { init } = require("./deep-packages/payments/tinkoff/init.cjs"); +const { cancel } = require("./deep-packages/payments/tinkoff/cancel.cjs"); +const { handlersDependencies } = require("./deep-packages/payments/tinkoff/handlersDependencies.cjs"); +const { insertPayInsertHandler } = require("./deep-packages/payments/tinkoff/cancelling/insertPayInsertHandler.cjs"); +const { insertNotificationHandler } = require("./deep-packages/payments/tinkoff/cancelling/insertNotificationHandler.cjs"); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); From c102b25d5b34e81df6d229222228a0d550fd435a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 20 Oct 2022 11:55:12 +0000 Subject: [PATCH 591/683] Fix payments --- deep-packages/insertHandler.cjs | 2 +- deep-packages/insertNotificationHandler.cjs | 2 +- .../payments/tinkoff/handlersDependencies.cjs | 8 +-- .../tinkoff/insertNotificationHandler.cjs | 6 ++- .../tinkoff/insertPayInsertHandler.cjs | 5 +- payments-tinkoff-c2b.cjs | 54 +++++++++++-------- 6 files changed, 45 insertions(+), 32 deletions(-) diff --git a/deep-packages/insertHandler.cjs b/deep-packages/insertHandler.cjs index 649dc7c2..99f7b278 100644 --- a/deep-packages/insertHandler.cjs +++ b/deep-packages/insertHandler.cjs @@ -1,4 +1,4 @@ -const insertHandler = async ({deep,fileTypeId, fileName, handlerName, handleName, triggerTypeId, code, supportsId, handleOperationTypeId, containTypeId, packageId, handlerTypeId, code}) => { +const insertHandler = async ({deep,fileTypeId, fileName, handlerName, handleName, triggerTypeId, code, supportsId, handleOperationTypeId, containTypeId, packageId, handlerTypeId}) => { return await deep.insert({ type_id: fileTypeId, in: { diff --git a/deep-packages/insertNotificationHandler.cjs b/deep-packages/insertNotificationHandler.cjs index 6ab1941e..3e357a9f 100644 --- a/deep-packages/insertNotificationHandler.cjs +++ b/deep-packages/insertNotificationHandler.cjs @@ -1,4 +1,4 @@ -const insertNotificationHandler = async ({deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, handlerName, code}) => { +const insertNotificationHandler = async ({deep, packageId,notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, handlerName, code}) => { return await deep.insert( { type_id: portTypeId, diff --git a/deep-packages/payments/tinkoff/handlersDependencies.cjs b/deep-packages/payments/tinkoff/handlersDependencies.cjs index 3785f64d..0cca1ade 100644 --- a/deep-packages/payments/tinkoff/handlersDependencies.cjs +++ b/deep-packages/payments/tinkoff/handlersDependencies.cjs @@ -1,7 +1,7 @@ -import { errors } from "./errors.cjs"; -import { getError } from "./getError.cjs"; -import { getUrlString } from "./getUrl.cjs"; -import { generateTokenStringWithInsertedTerminalPassword } from "./generateToken.cjs"; +const { errors } = require("./errors.cjs"); +const { getError } = require("./getError.cjs"); +const { getUrlString } = require("./getUrl.cjs"); +const { generateTokenStringWithInsertedTerminalPassword } = require("./generateToken.cjs"); const handlersDependencies = ` diff --git a/deep-packages/payments/tinkoff/insertNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertNotificationHandler.cjs index 59c385bc..23004958 100644 --- a/deep-packages/payments/tinkoff/insertNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertNotificationHandler.cjs @@ -1,6 +1,8 @@ const {insertNotificationHandler: baseInsertNotificationHandler} = require("./../../insertNotificationHandler.cjs"); +const {handlersDependencies} = require("./handlersDependencies.cjs"); +const {confirm} = require("./confirm.cjs"); -const insertNotificationHandler = async ({deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { +const insertNotificationHandler = async ({packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { const code = ` async ( req, @@ -151,7 +153,7 @@ async ( }; `; -return await baseInsertNotificationHandler({adminId, containTypeId, deep, fileTypeId, handlerName: "tinkoffNotificationHandler", handleRouteTypeId,handlerTypeId,notificationPort,notificationRoute,portTypeId,routerListeningTypeId,routerStringUseTypeId,routerTypeId,routeTypeId,supportsId, code}); +return await baseInsertNotificationHandler({packageId, adminId, containTypeId, deep, fileTypeId, handlerName: "tinkoffNotificationHandler", handleRouteTypeId,handlerTypeId,notificationPort,notificationRoute,portTypeId,routerListeningTypeId,routerStringUseTypeId,routerTypeId,routeTypeId,supportsId, code}); } exports.insertNotificationHandler = insertNotificationHandler; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/insertPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertPayInsertHandler.cjs index 73ce2b82..2cad97a9 100644 --- a/deep-packages/payments/tinkoff/insertPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/insertPayInsertHandler.cjs @@ -2,7 +2,7 @@ const { insertHandler } = require("../../insertHandler.cjs"); const {handlersDependencies} = require("./handlersDependencies.cjs"); const {init} = require("./init.cjs"); -const insertPayInsertHandler = async ({deep, notificationUrl, userEmail, userPhone, fileTypeId, containTypeId, packageId, dockerSupportsJsId, handlerInsertTypeId, containTypeId, handlerTypeId}) => { +const insertPayInsertHandler = async ({deep, notificationUrl, userEmail, userPhone, fileTypeId, containTypeId, packageId, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, payTypeId}) => { const code = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} @@ -121,8 +121,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { return initResult; }; `; - -return await insertHandler({deep, fileTypeId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeId, code, supportsId: dockerSupportsJsId, handleOperationTypeId: handlerInsertTypeId, containTypeId, packageId, handlerTypeId, code}); +return await insertHandler({deep, fileTypeId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeId: payTypeId, code, supportsId: dockerSupportsJsId, handleOperationTypeId: handleInsertTypeId, containTypeId, packageId, handlerTypeId, code}); } exports.insertPayInsertHandler = insertPayInsertHandler; \ No newline at end of file diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 15071101..9cfcfe88 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -19,28 +19,41 @@ const { get } = require('lodash'); const { default: links, } = require('@deep-foundation/deeplinks/imports/router/links'); -const {payInBrowser} = require("./deep-packages/payments/tinkoff/payInBrowser.cjs"); -const {getError} = ("./deep-packages/payments/tinkoff/getError.cjs"); -const { generateToken, generateTokenStringWithInsertedTerminalPassword } = ("./deep-packages/payments/tinkoff/generateToken.cjs"); -const { getUrl } = ("./deep-packages/payments/tinkoff/getUrl.cjs"); -const { getState } = ("./deep-packages/payments/tinkoff/getState.cjs"); -const { checkOrder } = ("./deep-packages/payments/tinkoff/checkOrder.cjs"); -const { getCardList } = ("./deep-packages/payments/tinkoff/getCardList.cjs"); -const { init } = ("./deep-packages/payments/tinkoff/init.cjs"); -const { charge } = ("./deep-packages/payments/tinkoff/charge.cjs"); -const { addCustomer } = ("./deep-packages/payments/tinkoff/addCustomer.cjs"); -const { getCustomer } = ("./deep-packages/payments/tinkoff/getCustomer.cjs"); -const { removeCustomer } = ("./deep-packages/payments/tinkoff/removeCustomer.cjs"); -const { handlersDependencies } = ("./deep-packages/payments/tinkoff/handlersDependencies.cjs"); -const { insertPayInsertHandler } = ("./deep-packages/payments/tinkoff/insertPayInsertHandler.cjs"); -const { insertNotificationHandler } = ("./deep-packages/payments/tinkoff/insertNotificationHandler.cjs"); -const {sleep} = require("./deep-packages/sleep.cjs"); - var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); +const {payInBrowser} = require("./deep-packages/payments/tinkoff/payInBrowser.cjs"); +const {getError} = require("./deep-packages/payments/tinkoff/getError.cjs"); +const { generateToken, generateTokenStringWithInsertedTerminalPassword } = require("./deep-packages/payments/tinkoff/generateToken.cjs"); +const { getUrl } = require("./deep-packages/payments/tinkoff/getUrl.cjs"); +const { getState } = require("./deep-packages/payments/tinkoff/getState.cjs"); +const { checkOrder } = require("./deep-packages/payments/tinkoff/checkOrder.cjs"); +const { getCardList } = require("./deep-packages/payments/tinkoff/getCardList.cjs"); +const { init } = require("./deep-packages/payments/tinkoff/init.cjs"); +const { charge } = require("./deep-packages/payments/tinkoff/charge.cjs"); +const { addCustomer } = require("./deep-packages/payments/tinkoff/addCustomer.cjs"); +const { getCustomer } = require("./deep-packages/payments/tinkoff/getCustomer.cjs"); +const { removeCustomer } = require("./deep-packages/payments/tinkoff/removeCustomer.cjs"); +const { handlersDependencies } = require("./deep-packages/payments/tinkoff/handlersDependencies.cjs"); +const { insertPayInsertHandler } = require("./deep-packages/payments/tinkoff/insertPayInsertHandler.cjs"); +const { insertNotificationHandler } = require("./deep-packages/payments/tinkoff/insertNotificationHandler.cjs"); +const {sleep} = require("./deep-packages/sleep.cjs"); console.log('Installing payments-tinkoff-c2b package'); +expect(process.env.PAYMENTS_C2B_TERMINAL_KEY).to.not.be.equal(undefined) +expect(process.env.PAYMENTS_C2B_TERMINAL_PASSWORD).to.not.be.equal(undefined) +expect(process.env.PAYMENTS_C2B_URL).to.not.be.equal(undefined) +expect(process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE).to.not.be.equal(undefined) +expect(process.env.PAYMENTS_C2B_NOTIFICATION_PORT).to.not.be.equal(undefined) +expect(process.env.PAYMENTS_C2B_NOTIFICATION_URL).to.not.be.equal(undefined) +expect(process.env.PAYMENTS_C2B_CANCELLING_NOTIFICATION_PORT).to.not.be.equal(undefined) +expect(process.env.PAYMENTS_C2B_CANCELLING_NOTIFICATION_URL).to.not.be.equal(undefined) +expect(process.env.PAYMENTS_C2B_CARD_NUMBER_SUCCESS).to.not.be.equal(undefined) +expect(process.env.PAYMENTS_C2B_CARD_EXPDATE).to.not.be.equal(undefined) +expect(process.env.PAYMENTS_C2B_CARD_CVC).to.not.be.equal(undefined) +expect(process.env.PAYMENTS_C2B_PHONE).to.not.be.equal(undefined) +expect(process.env.PAYMENTS_C2B_EMAIL).to.not.be.equal(undefined) + const allCreatedLinkIds = []; const installPackage = async () => { @@ -513,11 +526,10 @@ const installPackage = async () => { }, }); console.log({ incomeTypeId }); + debugger; - - await insertPayInsertHandler({deep, containTypeId, fileTypeId: syncTextFileTypeId, handlerInsertTypeId, handlerTypeId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE}); - - await insertNotificationHandler({deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId}); + await insertPayInsertHandler({deep, containTypeId, fileTypeId: syncTextFileTypeId, handleInsertTypeId, handlerTypeId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE, dockerSupportsJsId, payTypeId}); + await insertNotificationHandler({packageId,deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJsId}); const callTests = async () => { console.log('callTests-start'); From ba442d247861adce5a3d94239be7f00c3f2fe7db Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 21 Oct 2022 11:28:48 +0000 Subject: [PATCH 592/683] Fix payments --- deep-packages/payments/tinkoff/errors.cjs | 5 - .../payments/tinkoff/generateToken.cjs | 1 + .../payments/tinkoff/handlersDependencies.cjs | 2 +- payments-tinkoff-c2b.cjs | 244 +++++++++++++++++- 4 files changed, 245 insertions(+), 7 deletions(-) diff --git a/deep-packages/payments/tinkoff/errors.cjs b/deep-packages/payments/tinkoff/errors.cjs index 167bed73..e1bc28c8 100644 --- a/deep-packages/payments/tinkoff/errors.cjs +++ b/deep-packages/payments/tinkoff/errors.cjs @@ -1,8 +1,3 @@ -const axios = require('axios'); -const { generateToken } = require("./generateToken.cjs"); -const { getError } = require("./getError.cjs"); -const { getUrl } = require("./getUrl.cjs"); - const errors = { 7: 'Покупатель не найден', 53: 'Обратитесь к продавцу', diff --git a/deep-packages/payments/tinkoff/generateToken.cjs b/deep-packages/payments/tinkoff/generateToken.cjs index 1de43c61..e3dde5c6 100644 --- a/deep-packages/payments/tinkoff/generateToken.cjs +++ b/deep-packages/payments/tinkoff/generateToken.cjs @@ -3,6 +3,7 @@ const crypto = require('crypto'); const generateToken = (data) => { const { Receipt, DATA, Shops, ...restData } = data; const dataWithPassword = { + Password: process.env.PAYMENTS_C2B_TERMINAL_PASSWORD, ...restData, }; console.log({ dataWithPassword }); diff --git a/deep-packages/payments/tinkoff/handlersDependencies.cjs b/deep-packages/payments/tinkoff/handlersDependencies.cjs index 0cca1ade..bfbd6b3b 100644 --- a/deep-packages/payments/tinkoff/handlersDependencies.cjs +++ b/deep-packages/payments/tinkoff/handlersDependencies.cjs @@ -7,7 +7,7 @@ const { generateTokenStringWithInsertedTerminalPassword } = require("./generateT const handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); -const errorsConverter = ${JSON.stringify(errors)}; +const errors = ${JSON.stringify(errors)}; const getError = ${getError.toString()}; const getUrl = ${getUrlString}; const generateToken = ${generateTokenStringWithInsertedTerminalPassword}; diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 9cfcfe88..872e9bb1 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -37,6 +37,7 @@ const { handlersDependencies } = require("./deep-packages/payments/tinkoff/handl const { insertPayInsertHandler } = require("./deep-packages/payments/tinkoff/insertPayInsertHandler.cjs"); const { insertNotificationHandler } = require("./deep-packages/payments/tinkoff/insertNotificationHandler.cjs"); const {sleep} = require("./deep-packages/sleep.cjs"); +const {confirm} = require("./deep-packages/payments/tinkoff/confirm.cjs"); console.log('Installing payments-tinkoff-c2b package'); @@ -529,7 +530,248 @@ const installPackage = async () => { debugger; await insertPayInsertHandler({deep, containTypeId, fileTypeId: syncTextFileTypeId, handleInsertTypeId, handlerTypeId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE, dockerSupportsJsId, payTypeId}); - await insertNotificationHandler({packageId,deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJsId}); + // await insertNotificationHandler({packageId,deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJsId}); + + const code = ` +async ( + req, + res, + next, + { deep, require, gql } +) => { + ${handlersDependencies} + + console.log({req}); + const reqBody = req.body; + console.log({reqBody}); + console.log('req.body.Status != "AUTHORIZED" || req.body.Status != "CONFIRMED"', req.body.Status != "AUTHORIZED" || req.body.Status != "CONFIRMED"); + console.log('req.body.Status', req.body.Status); + console.log('req.body.Status != "AUTHORIZED"', req.body.Status != "AUTHORIZED"); + if(!(req.body.Status === "AUTHORIZED" || req.body.Status === "CONFIRMED")) { + return next(); + } + console.log("after check status"); + + + + const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: TinkoffProvider + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; + console.log({tinkoffProviderLinkId}); + + const paymentLinkSelectQuery = await deep.select({ + object: {value: {_contains: {orderId: req.body.OrderId}}} + }); + if(paymentLinkSelectQuery.error) { throw new Error(paymentLinkSelectQuery.error.message); } + const paymentLink = paymentLinkSelectQuery.data[0]; + console.log({paymentLink}); + if(!paymentLink) { throw new Error("The payment link associated with the order id " + req.body.OrderId + " is not found."); } + + const {data: mpUpPayment, error: mpUpPaymentSelectQueryError} = await deep.select({ + up: { + parent_id: { _eq: paymentLink.id }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } + } + }); + console.log({mpUpPayment}); + if(mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } + + const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + const payLink = mpUpPayment.find(link => link.type_id === Pay); + console.log({payLink}); + if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } + + + if (req.body.Status === 'AUTHORIZED') { + const confirm = ${confirm.toString()}; + + const storageBusinessLinkSelectQuery = await deep.select({ + id: paymentLink.to_id + }); + if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} + const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; + console.log({storageBusinessLinkId}); + + const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); + const tokenLinkSelectQuery = await deep.select({ + type_id: Token, + from_id: storageBusinessLinkId, + to_id: storageBusinessLinkId + }); + if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} + const tokenLink = tokenLinkSelectQuery.data[0]; + console.log({tokenLink}); + + const confirmOptions = { + TerminalKey: tokenLink.value.value, + PaymentId: req.body.PaymentId, + Amount: req.body.Amount, + // Receipt: req.body.Receipt, + }; + console.log({confirmOptions}); + + const confirmResult = await confirm(confirmOptions); + console.log({confirmResult}); + + if (confirmResult.error) { + const errorMessage = "Could not confirm the pay. " + confirmResult.error; + const {error: errorLinkInsertError} = await deep.insert({ + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), + from_id: tinkoffProviderLinkId, + to_id: payLink.id, + string: { data: { value: errorMessage } }, + }); + if(errorLinkInsertError) { throw new Error(errorLinkInsertError); } + throw new Error(errorMessage); + } + + return confirmResult; + } else if (req.body.Status === 'CONFIRMED') { + const payedLinkInsertQuery = await deep.insert({ + type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), + from_id: tinkoffProviderLinkId, + to_id: payLink.id, + }); + if(payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } + const payedLinkId = payedLinkInsertQuery.data[0].id; + console.log({payedLinkId}); + + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + const storageClientLinkSelectQuery = await deep.select({ + type_id: StorageClient, + number: {value: req.body.CardId} + }); + console.log({storageClientLinkSelectQuery}); + if(storageClientLinkSelectQuery.error) {throw new Error(storageClientLinkSelectQuery.error.message);} + + if(fromLinkOfPayment.type_id !== StorageClient) { + var storageClientLinkId; + if(storageClientLinkSelectQuery.data.length === 0) { + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + const storageClientLinkInsertQuery = await deep.insert({ + type_id: StorageClient, + number: {data: {value: req.body.CardId}}, + }); + console.log({storageClientLinkInsertQuery}); + if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} + storageClientLinkId = storageClientLinkInsertQuery.data[0].id; + + const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); + const titleLinkInsertQuery = await deep.insert({ + type_id: Title, + from_id: storageClientLinkId, + to_id: storageClientLinkId, + string: {data: {value: req.body.Pan}}, + }); + if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} + const titleLinkId = titleLinkInsertQuery.data[0].id; + console.log({titleLinkId}); + } else { + storageClientLinkId = storageClientLinkSelectQuery.data[0]; + } + const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); + const incomeLinkInsertQuery = await deep.insert({ + type_id: Income, + from_id: paymentLink.id, + to_id: storageClientLinkId, + }); + if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} + const incomeLinkId = incomeLinkInsertQuery.data[0].id; + console.log({incomeLinkId}); + + } + } + res.send('ok'); +}; +`; + + + + await deep.insert( + { + type_id: portTypeId, + number: { + data: { value: process.env.PAYMENTS_C2B_NOTIFICATION_PORT }, + }, + in: { + data: { + type_id: routerListeningTypeId, + from: { + data: { + type_id: routerTypeId, + in: { + data: { + type_id: routerStringUseTypeId, + string: { + data: { + value: + process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, + }, + }, + from: { + data: { + type_id: routeTypeId, + out: { + data: { + type_id: handleRouteTypeId, + to: { + data: { + type_id: handlerTypeId, + from_id: dockerSupportsJsId, + in: { + data: { + type_id: containTypeId, + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { + data: { + value: "tinkoffNotificationHandler", + }, + }, + }, + }, + to: { + data: { + type_id: syncTextFileTypeId, + string: { + data: { + value: code, + }, + }, + in: { + data: { + type_id: containTypeId, + from_id: packageId, + string: { + data: { + value: "tinkoffNotificationHandler", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + { + name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', + } + ) + const callTests = async () => { console.log('callTests-start'); From 9a36dc9b695509548c0810bd39880275b8e41bce Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 21 Oct 2022 11:30:44 +0000 Subject: [PATCH 593/683] Pass packageName to `insertHandler.=` --- .../tinkoff/insertNotificationHandler.cjs | 22 +- .../tinkoff/insertPayInsertHandler.cjs | 16 +- payments-tinkoff-c2b.cjs | 245 +----------------- 3 files changed, 21 insertions(+), 262 deletions(-) diff --git a/deep-packages/payments/tinkoff/insertNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertNotificationHandler.cjs index 23004958..56425305 100644 --- a/deep-packages/payments/tinkoff/insertNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertNotificationHandler.cjs @@ -2,7 +2,7 @@ const {insertNotificationHandler: baseInsertNotificationHandler} = require("./.. const {handlersDependencies} = require("./handlersDependencies.cjs"); const {confirm} = require("./confirm.cjs"); -const insertNotificationHandler = async ({packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { +const insertNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { const code = ` async ( req, @@ -19,7 +19,7 @@ async ( const reqBody = req.body; console.log({reqBody}); - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const TinkoffProvider = await deep.id(${packageName}, "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider }); @@ -38,13 +38,13 @@ async ( const {data: mpUpPayment, error: mpUpPaymentSelectQueryError} = await deep.select({ up: { parent_id: { _eq: paymentLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } + tree_id: { _eq: await deep.id(${packageName}, "paymentTree") } } }); console.log({mpUpPayment}); if(mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } - const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + const Pay = await deep.id(${packageName}, "Pay"); const payLink = mpUpPayment.find(link => link.type_id === Pay); console.log({payLink}); if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } @@ -60,7 +60,7 @@ async ( const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; console.log({storageBusinessLinkId}); - const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); + const Token = await deep.id(${packageName}, "Token"); const tokenLinkSelectQuery = await deep.select({ type_id: Token, from_id: storageBusinessLinkId, @@ -84,7 +84,7 @@ async ( if (confirmResult.error) { const errorMessage = "Could not confirm the pay. " + confirmResult.error; const {error: errorLinkInsertError} = await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), + type_id: (await deep.id(${packageName}, "Error")), from_id: tinkoffProviderLinkId, to_id: payLink.id, string: { data: { value: errorMessage } }, @@ -96,7 +96,7 @@ async ( return confirmResult; } else if (req.body.Status === 'CONFIRMED') { const payedLinkInsertQuery = await deep.insert({ - type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), + type_id: await deep.id(${packageName}, "Payed"), from_id: tinkoffProviderLinkId, to_id: payLink.id, }); @@ -104,7 +104,7 @@ async ( const payedLinkId = payedLinkInsertQuery.data[0].id; console.log({payedLinkId}); - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + const StorageClient = await deep.id(${packageName}, "StorageClient"); const storageClientLinkSelectQuery = await deep.select({ type_id: StorageClient, number: {value: req.body.CardId} @@ -115,7 +115,7 @@ async ( if(fromLinkOfPayment.type_id !== StorageClient) { var storageClientLinkId; if(storageClientLinkSelectQuery.data.length === 0) { - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + const StorageClient = await deep.id(${packageName}, "StorageClient"); const storageClientLinkInsertQuery = await deep.insert({ type_id: StorageClient, number: {data: {value: req.body.CardId}}, @@ -124,7 +124,7 @@ async ( if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} storageClientLinkId = storageClientLinkInsertQuery.data[0].id; - const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); + const Title = await deep.id(${packageName}, "Title"); const titleLinkInsertQuery = await deep.insert({ type_id: Title, from_id: storageClientLinkId, @@ -137,7 +137,7 @@ async ( } else { storageClientLinkId = storageClientLinkSelectQuery.data[0]; } - const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); + const Income = await deep.id(${packageName}, "Income"); const incomeLinkInsertQuery = await deep.insert({ type_id: Income, from_id: paymentLink.id, diff --git a/deep-packages/payments/tinkoff/insertPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertPayInsertHandler.cjs index 2cad97a9..587b625e 100644 --- a/deep-packages/payments/tinkoff/insertPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/insertPayInsertHandler.cjs @@ -2,12 +2,12 @@ const { insertHandler } = require("../../insertHandler.cjs"); const {handlersDependencies} = require("./handlersDependencies.cjs"); const {init} = require("./init.cjs"); -const insertPayInsertHandler = async ({deep, notificationUrl, userEmail, userPhone, fileTypeId, containTypeId, packageId, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, payTypeId}) => { +const insertPayInsertHandler = async ({packageName, deep, notificationUrl, userEmail, userPhone, fileTypeId, containTypeId, packageId, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, payTypeId}) => { const code = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const TinkoffProvider = await deep.id(${packageName}, "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider }); @@ -17,18 +17,18 @@ async ({ deep, require, data: { newLink: payLink } }) => { const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ down: { link_id: { _eq: payLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") }, + tree_id: { _eq: await deep.id(${packageName}, "paymentTree") }, }, }); console.log({mpDownPay}); if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } - const Payment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); + const Payment = await deep.id(${packageName}, "Payment"); const paymentLink = mpDownPay.find(link => link.type_id === Payment); console.log({paymentLink}); if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found."); - const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); + const Sum = await deep.id(${packageName}, "Sum"); const sumLink = mpDownPay.find(link => link.type_id === Sum); console.log({sumLink}); if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); @@ -47,7 +47,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; console.log({storageBusinessLinkId}); - const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); + const Token = await deep.id(${packageName}, "Token"); const tokenLinkSelectQuery = await deep.select({ type_id: Token, from_id: storageBusinessLinkId, @@ -95,7 +95,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { if (initResult.error) { const errorMessage = "Could not initialize the order. " + initResult.error; const {error: errorLinkInsertQueryError} = await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), + type_id: (await deep.id(${packageName}, "Error")), from_id: tinkoffProviderLinkId, to_id: payLink.id, string: { data: { value: errorMessage } }, @@ -104,7 +104,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { throw new Error(errorMessage); } - const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); + const Url = await deep.id(${packageName}, "Url"); const {error: urlLinkInsertQueryError} = await deep.insert({ type_id: Url, from_id: tinkoffProviderLinkId, diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 872e9bb1..70441d83 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -529,249 +529,8 @@ const installPackage = async () => { console.log({ incomeTypeId }); debugger; - await insertPayInsertHandler({deep, containTypeId, fileTypeId: syncTextFileTypeId, handleInsertTypeId, handlerTypeId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE, dockerSupportsJsId, payTypeId}); - // await insertNotificationHandler({packageId,deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJsId}); - - const code = ` -async ( - req, - res, - next, - { deep, require, gql } -) => { - ${handlersDependencies} - - console.log({req}); - const reqBody = req.body; - console.log({reqBody}); - console.log('req.body.Status != "AUTHORIZED" || req.body.Status != "CONFIRMED"', req.body.Status != "AUTHORIZED" || req.body.Status != "CONFIRMED"); - console.log('req.body.Status', req.body.Status); - console.log('req.body.Status != "AUTHORIZED"', req.body.Status != "AUTHORIZED"); - if(!(req.body.Status === "AUTHORIZED" || req.body.Status === "CONFIRMED")) { - return next(); - } - console.log("after check status"); - - - - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: TinkoffProvider - }); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; - console.log({tinkoffProviderLinkId}); - - const paymentLinkSelectQuery = await deep.select({ - object: {value: {_contains: {orderId: req.body.OrderId}}} - }); - if(paymentLinkSelectQuery.error) { throw new Error(paymentLinkSelectQuery.error.message); } - const paymentLink = paymentLinkSelectQuery.data[0]; - console.log({paymentLink}); - if(!paymentLink) { throw new Error("The payment link associated with the order id " + req.body.OrderId + " is not found."); } - - const {data: mpUpPayment, error: mpUpPaymentSelectQueryError} = await deep.select({ - up: { - parent_id: { _eq: paymentLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } - } - }); - console.log({mpUpPayment}); - if(mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } - - const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); - const payLink = mpUpPayment.find(link => link.type_id === Pay); - console.log({payLink}); - if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } - - - if (req.body.Status === 'AUTHORIZED') { - const confirm = ${confirm.toString()}; - - const storageBusinessLinkSelectQuery = await deep.select({ - id: paymentLink.to_id - }); - if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} - const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; - console.log({storageBusinessLinkId}); - - const Token = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); - const tokenLinkSelectQuery = await deep.select({ - type_id: Token, - from_id: storageBusinessLinkId, - to_id: storageBusinessLinkId - }); - if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} - const tokenLink = tokenLinkSelectQuery.data[0]; - console.log({tokenLink}); - - const confirmOptions = { - TerminalKey: tokenLink.value.value, - PaymentId: req.body.PaymentId, - Amount: req.body.Amount, - // Receipt: req.body.Receipt, - }; - console.log({confirmOptions}); - - const confirmResult = await confirm(confirmOptions); - console.log({confirmResult}); - - if (confirmResult.error) { - const errorMessage = "Could not confirm the pay. " + confirmResult.error; - const {error: errorLinkInsertError} = await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), - from_id: tinkoffProviderLinkId, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - }); - if(errorLinkInsertError) { throw new Error(errorLinkInsertError); } - throw new Error(errorMessage); - } - - return confirmResult; - } else if (req.body.Status === 'CONFIRMED') { - const payedLinkInsertQuery = await deep.insert({ - type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), - from_id: tinkoffProviderLinkId, - to_id: payLink.id, - }); - if(payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } - const payedLinkId = payedLinkInsertQuery.data[0].id; - console.log({payedLinkId}); - - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - const storageClientLinkSelectQuery = await deep.select({ - type_id: StorageClient, - number: {value: req.body.CardId} - }); - console.log({storageClientLinkSelectQuery}); - if(storageClientLinkSelectQuery.error) {throw new Error(storageClientLinkSelectQuery.error.message);} - - if(fromLinkOfPayment.type_id !== StorageClient) { - var storageClientLinkId; - if(storageClientLinkSelectQuery.data.length === 0) { - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - const storageClientLinkInsertQuery = await deep.insert({ - type_id: StorageClient, - number: {data: {value: req.body.CardId}}, - }); - console.log({storageClientLinkInsertQuery}); - if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} - storageClientLinkId = storageClientLinkInsertQuery.data[0].id; - - const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); - const titleLinkInsertQuery = await deep.insert({ - type_id: Title, - from_id: storageClientLinkId, - to_id: storageClientLinkId, - string: {data: {value: req.body.Pan}}, - }); - if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} - const titleLinkId = titleLinkInsertQuery.data[0].id; - console.log({titleLinkId}); - } else { - storageClientLinkId = storageClientLinkSelectQuery.data[0]; - } - const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); - const incomeLinkInsertQuery = await deep.insert({ - type_id: Income, - from_id: paymentLink.id, - to_id: storageClientLinkId, - }); - if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} - const incomeLinkId = incomeLinkInsertQuery.data[0].id; - console.log({incomeLinkId}); - - } - } - res.send('ok'); -}; -`; - - - - await deep.insert( - { - type_id: portTypeId, - number: { - data: { value: process.env.PAYMENTS_C2B_NOTIFICATION_PORT }, - }, - in: { - data: { - type_id: routerListeningTypeId, - from: { - data: { - type_id: routerTypeId, - in: { - data: { - type_id: routerStringUseTypeId, - string: { - data: { - value: - process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, - }, - }, - from: { - data: { - type_id: routeTypeId, - out: { - data: { - type_id: handleRouteTypeId, - to: { - data: { - type_id: handlerTypeId, - from_id: dockerSupportsJsId, - in: { - data: { - type_id: containTypeId, - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { - data: { - value: "tinkoffNotificationHandler", - }, - }, - }, - }, - to: { - data: { - type_id: syncTextFileTypeId, - string: { - data: { - value: code, - }, - }, - in: { - data: { - type_id: containTypeId, - from_id: packageId, - string: { - data: { - value: "tinkoffNotificationHandler", - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - { - name: 'INSERT_HANDLE_ROUTE_HIERARCHICAL', - } - ) - + await insertPayInsertHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",deep, containTypeId, fileTypeId: syncTextFileTypeId, handleInsertTypeId, handlerTypeId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE, dockerSupportsJsId, payTypeId}); + await insertNotificationHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",packageId,deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJsId}); const callTests = async () => { console.log('callTests-start'); From 5b82f3b9a2d6dac04e63ea610c8519429cfe7598 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 21 Oct 2022 11:33:25 +0000 Subject: [PATCH 594/683] Add onConfirmed --- .../tinkoff/insertNotificationHandler.cjs | 56 +----------------- payments-tinkoff-c2b.cjs | 59 ++++++++++++++++++- 2 files changed, 60 insertions(+), 55 deletions(-) diff --git a/deep-packages/payments/tinkoff/insertNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertNotificationHandler.cjs index 56425305..30388564 100644 --- a/deep-packages/payments/tinkoff/insertNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertNotificationHandler.cjs @@ -2,7 +2,7 @@ const {insertNotificationHandler: baseInsertNotificationHandler} = require("./.. const {handlersDependencies} = require("./handlersDependencies.cjs"); const {confirm} = require("./confirm.cjs"); -const insertNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { +const insertNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, onCofirmedCode}) => { const code = ` async ( req, @@ -95,59 +95,7 @@ async ( return confirmResult; } else if (req.body.Status === 'CONFIRMED') { - const payedLinkInsertQuery = await deep.insert({ - type_id: await deep.id(${packageName}, "Payed"), - from_id: tinkoffProviderLinkId, - to_id: payLink.id, - }); - if(payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } - const payedLinkId = payedLinkInsertQuery.data[0].id; - console.log({payedLinkId}); - - const StorageClient = await deep.id(${packageName}, "StorageClient"); - const storageClientLinkSelectQuery = await deep.select({ - type_id: StorageClient, - number: {value: req.body.CardId} - }); - console.log({storageClientLinkSelectQuery}); - if(storageClientLinkSelectQuery.error) {throw new Error(storageClientLinkSelectQuery.error.message);} - - if(fromLinkOfPayment.type_id !== StorageClient) { - var storageClientLinkId; - if(storageClientLinkSelectQuery.data.length === 0) { - const StorageClient = await deep.id(${packageName}, "StorageClient"); - const storageClientLinkInsertQuery = await deep.insert({ - type_id: StorageClient, - number: {data: {value: req.body.CardId}}, - }); - console.log({storageClientLinkInsertQuery}); - if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} - storageClientLinkId = storageClientLinkInsertQuery.data[0].id; - - const Title = await deep.id(${packageName}, "Title"); - const titleLinkInsertQuery = await deep.insert({ - type_id: Title, - from_id: storageClientLinkId, - to_id: storageClientLinkId, - string: {data: {value: req.body.Pan}}, - }); - if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} - const titleLinkId = titleLinkInsertQuery.data[0].id; - console.log({titleLinkId}); - } else { - storageClientLinkId = storageClientLinkSelectQuery.data[0]; - } - const Income = await deep.id(${packageName}, "Income"); - const incomeLinkInsertQuery = await deep.insert({ - type_id: Income, - from_id: paymentLink.id, - to_id: storageClientLinkId, - }); - if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} - const incomeLinkId = incomeLinkInsertQuery.data[0].id; - console.log({incomeLinkId}); - - } + ${onCofirmedCode} } res.send('ok'); }; diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 70441d83..0d93c6da 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -530,7 +530,64 @@ const installPackage = async () => { debugger; await insertPayInsertHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",deep, containTypeId, fileTypeId: syncTextFileTypeId, handleInsertTypeId, handlerTypeId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE, dockerSupportsJsId, payTypeId}); - await insertNotificationHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",packageId,deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJsId}); + + const tinkoffNotificationOnConfirmedCode = ` + + const payedLinkInsertQuery = await deep.insert({ + type_id: await deep.id(${packageName}, "Payed"), + from_id: tinkoffProviderLinkId, + to_id: payLink.id, + }); + if(payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } + const payedLinkId = payedLinkInsertQuery.data[0].id; + console.log({payedLinkId}); + + const StorageClient = await deep.id(${packageName}, "StorageClient"); + const storageClientLinkSelectQuery = await deep.select({ + type_id: StorageClient, + number: {value: req.body.CardId} + }); + console.log({storageClientLinkSelectQuery}); + if(storageClientLinkSelectQuery.error) {throw new Error(storageClientLinkSelectQuery.error.message);} + + if(fromLinkOfPayment.type_id !== StorageClient) { + var storageClientLinkId; + if(storageClientLinkSelectQuery.data.length === 0) { + const StorageClient = await deep.id(${packageName}, "StorageClient"); + const storageClientLinkInsertQuery = await deep.insert({ + type_id: StorageClient, + number: {data: {value: req.body.CardId}}, + }); + console.log({storageClientLinkInsertQuery}); + if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} + storageClientLinkId = storageClientLinkInsertQuery.data[0].id; + + const Title = await deep.id(${packageName}, "Title"); + const titleLinkInsertQuery = await deep.insert({ + type_id: Title, + from_id: storageClientLinkId, + to_id: storageClientLinkId, + string: {data: {value: req.body.Pan}}, + }); + if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} + const titleLinkId = titleLinkInsertQuery.data[0].id; + console.log({titleLinkId}); + } else { + storageClientLinkId = storageClientLinkSelectQuery.data[0]; + } + const Income = await deep.id(${packageName}, "Income"); + const incomeLinkInsertQuery = await deep.insert({ + type_id: Income, + from_id: paymentLink.id, + to_id: storageClientLinkId, + }); + if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} + const incomeLinkId = incomeLinkInsertQuery.data[0].id; + console.log({incomeLinkId}); + + } + `; + await insertNotificationHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",packageId,deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJsId, onCofirmedCode: tinkoffNotificationOnConfirmedCode}); const callTests = async () => { console.log('callTests-start'); From 8a6cf0146154b5ea23ba31a72e1e1811cd06d6d2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 21 Oct 2022 12:44:14 +0000 Subject: [PATCH 595/683] Fix payments --- .../payments/tinkoff/insertNotificationHandler.cjs | 12 ++++++------ .../payments/tinkoff/insertPayInsertHandler.cjs | 14 +++++++------- payments-tinkoff-c2b.cjs | 10 +++++----- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/deep-packages/payments/tinkoff/insertNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertNotificationHandler.cjs index 30388564..afdfe4e6 100644 --- a/deep-packages/payments/tinkoff/insertNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertNotificationHandler.cjs @@ -12,14 +12,14 @@ async ( ) => { ${handlersDependencies} - if(req.body.Status !== "AUTHORIZED" || req.body.Status !== "CONFIRMED") { + if(!(req.body.Status === "AUTHORIZED" || req.body.Status === "CONFIRMED")) { return next(); } const reqBody = req.body; console.log({reqBody}); - const TinkoffProvider = await deep.id(${packageName}, "TinkoffProvider"); + const TinkoffProvider = await deep.id("${packageName}", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider }); @@ -38,13 +38,13 @@ async ( const {data: mpUpPayment, error: mpUpPaymentSelectQueryError} = await deep.select({ up: { parent_id: { _eq: paymentLink.id }, - tree_id: { _eq: await deep.id(${packageName}, "paymentTree") } + tree_id: { _eq: await deep.id("${packageName}", "paymentTree") } } }); console.log({mpUpPayment}); if(mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } - const Pay = await deep.id(${packageName}, "Pay"); + const Pay = await deep.id("${packageName}", "Pay"); const payLink = mpUpPayment.find(link => link.type_id === Pay); console.log({payLink}); if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } @@ -60,7 +60,7 @@ async ( const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; console.log({storageBusinessLinkId}); - const Token = await deep.id(${packageName}, "Token"); + const Token = await deep.id("${packageName}", "Token"); const tokenLinkSelectQuery = await deep.select({ type_id: Token, from_id: storageBusinessLinkId, @@ -84,7 +84,7 @@ async ( if (confirmResult.error) { const errorMessage = "Could not confirm the pay. " + confirmResult.error; const {error: errorLinkInsertError} = await deep.insert({ - type_id: (await deep.id(${packageName}, "Error")), + type_id: (await deep.id("${packageName}", "Error")), from_id: tinkoffProviderLinkId, to_id: payLink.id, string: { data: { value: errorMessage } }, diff --git a/deep-packages/payments/tinkoff/insertPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertPayInsertHandler.cjs index 587b625e..4ec46dfa 100644 --- a/deep-packages/payments/tinkoff/insertPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/insertPayInsertHandler.cjs @@ -7,7 +7,7 @@ const insertPayInsertHandler = async ({packageName, deep, notificationUrl, userE async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} - const TinkoffProvider = await deep.id(${packageName}, "TinkoffProvider"); + const TinkoffProvider = await deep.id("${packageName}", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider }); @@ -17,18 +17,18 @@ async ({ deep, require, data: { newLink: payLink } }) => { const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ down: { link_id: { _eq: payLink.id }, - tree_id: { _eq: await deep.id(${packageName}, "paymentTree") }, + tree_id: { _eq: await deep.id("${packageName}", "paymentTree") }, }, }); console.log({mpDownPay}); if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } - const Payment = await deep.id(${packageName}, "Payment"); + const Payment = await deep.id("${packageName}", "Payment"); const paymentLink = mpDownPay.find(link => link.type_id === Payment); console.log({paymentLink}); if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found."); - const Sum = await deep.id(${packageName}, "Sum"); + const Sum = await deep.id("${packageName}", "Sum"); const sumLink = mpDownPay.find(link => link.type_id === Sum); console.log({sumLink}); if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); @@ -47,7 +47,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; console.log({storageBusinessLinkId}); - const Token = await deep.id(${packageName}, "Token"); + const Token = await deep.id("${packageName}", "Token"); const tokenLinkSelectQuery = await deep.select({ type_id: Token, from_id: storageBusinessLinkId, @@ -95,7 +95,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { if (initResult.error) { const errorMessage = "Could not initialize the order. " + initResult.error; const {error: errorLinkInsertQueryError} = await deep.insert({ - type_id: (await deep.id(${packageName}, "Error")), + type_id: (await deep.id("${packageName}", "Error")), from_id: tinkoffProviderLinkId, to_id: payLink.id, string: { data: { value: errorMessage } }, @@ -104,7 +104,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { throw new Error(errorMessage); } - const Url = await deep.id(${packageName}, "Url"); + const Url = await deep.id("${packageName}", "Url"); const {error: urlLinkInsertQueryError} = await deep.insert({ type_id: Url, from_id: tinkoffProviderLinkId, diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 0d93c6da..187fdeaf 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -534,7 +534,7 @@ const installPackage = async () => { const tinkoffNotificationOnConfirmedCode = ` const payedLinkInsertQuery = await deep.insert({ - type_id: await deep.id(${packageName}, "Payed"), + type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), from_id: tinkoffProviderLinkId, to_id: payLink.id, }); @@ -542,7 +542,7 @@ const installPackage = async () => { const payedLinkId = payedLinkInsertQuery.data[0].id; console.log({payedLinkId}); - const StorageClient = await deep.id(${packageName}, "StorageClient"); + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); const storageClientLinkSelectQuery = await deep.select({ type_id: StorageClient, number: {value: req.body.CardId} @@ -553,7 +553,7 @@ const installPackage = async () => { if(fromLinkOfPayment.type_id !== StorageClient) { var storageClientLinkId; if(storageClientLinkSelectQuery.data.length === 0) { - const StorageClient = await deep.id(${packageName}, "StorageClient"); + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); const storageClientLinkInsertQuery = await deep.insert({ type_id: StorageClient, number: {data: {value: req.body.CardId}}, @@ -562,7 +562,7 @@ const installPackage = async () => { if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} storageClientLinkId = storageClientLinkInsertQuery.data[0].id; - const Title = await deep.id(${packageName}, "Title"); + const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); const titleLinkInsertQuery = await deep.insert({ type_id: Title, from_id: storageClientLinkId, @@ -575,7 +575,7 @@ const installPackage = async () => { } else { storageClientLinkId = storageClientLinkSelectQuery.data[0]; } - const Income = await deep.id(${packageName}, "Income"); + const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); const incomeLinkInsertQuery = await deep.insert({ type_id: Income, from_id: paymentLink.id, From 5ecbf3c2c0547a40f6a23d3f225ebd4348822537 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 21 Oct 2022 12:52:01 +0000 Subject: [PATCH 596/683] Add packageName parameters --- .../cancelling/insertNotificationHandler.cjs | 14 ++++++------- .../cancelling/insertPayInsertHandler.cjs | 20 +++++++++---------- payments-tinkoff-c2b-cancelling.cjs | 4 ++-- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/deep-packages/payments/tinkoff/cancelling/insertNotificationHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertNotificationHandler.cjs index f9e1d022..e8710e03 100644 --- a/deep-packages/payments/tinkoff/cancelling/insertNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/cancelling/insertNotificationHandler.cjs @@ -1,6 +1,6 @@ const {insertNotificationHandler: baseInsertNotificationHandler} = require("./../../insertNotificationHandler.cjs"); -const insertNotificationHandler = async ({deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { +const insertNotificationHandler = async ({paymentsPackageName,deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { const code = ` async ( req, @@ -17,7 +17,7 @@ async ( return next(); } - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const TinkoffProvider = await deep.id("${paymentsPackageName}", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider }); @@ -35,13 +35,13 @@ async ( const {data: mpUpCancellingPaymentLink, error: mpUpcancellingPaymentLinkSelectQueryError} = await deep.select({ up: { parent_id: { _eq: cancellingPaymentLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } + tree_id: { _eq: await deep.id("${paymentsPackageName}", "paymentTree") } } }); console.log({mpUpCancellingPaymentLink}); if(mpUpcancellingPaymentLinkSelectQueryError) { throw new Error(mpUpcancellingPaymentLinkSelectQueryError.message); } - const Pay = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + const Pay = await deep.id("${paymentsPackageName}", "Pay"); const payLink = mpUpCancellingPaymentLink.find(link => link.type_id === Pay); console.log({payLink}); if(!payLink) { throw new Error("The pay link associated with cancelling payment link " + cancellingPaymentLink + " is not found.") } @@ -52,15 +52,15 @@ async ( const {data: mpUpPayment, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ up: { parent_id: { _eq: cancellingPaymentLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } + tree_id: { _eq: await deep.id("${paymentsPackageName}", "paymentTree") } } }); - const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum") + const Sum = await deep.id("${paymentsPackageName}", "Sum") const sumLink = mpUpPayment.find(link => link.type_id === Sum); if(!sumLink) {throw new Error("Could not find sum link associated with the cancelling payment " + cancellingPaymentLink);} - const Payed = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed") + const Payed = await deep.id("${paymentsPackageName}", "Payed") const payedInsertLinkInsertQuery = await deep.insert({ type_id: Payed, from_id: tinkoffProviderLink.id, diff --git a/deep-packages/payments/tinkoff/cancelling/insertPayInsertHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertPayInsertHandler.cjs index 4a3c4f25..32544096 100644 --- a/deep-packages/payments/tinkoff/cancelling/insertPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/cancelling/insertPayInsertHandler.cjs @@ -1,7 +1,7 @@ const { insertHandler } = require("../../../insertHandler.cjs"); const {cancel} = require("./cancel.cjs"); -const insertPayInsertHandler = async ({deep, syncTextFileTypeId, terminayKey, containTypeId, packageId, dockerSupportsJsId, handlerTypeId, handleInsertTypeId}) => { +const insertPayInsertHandler = async ({paymentsPackageName, cancellingPaymentsPackageName,deep, syncTextFileTypeId, terminalKey, containTypeId, packageId, dockerSupportsJsId, handlerTypeId, handleInsertTypeId}) => { const code = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} @@ -9,32 +9,32 @@ async ({ deep, require, data: { newLink: payLink } }) => { const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ down: { link_id: { _eq: payLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") }, + tree_id: { _eq: await deep.id("${paymentsPackageName}", "paymentTree") }, }, }); console.log({mpDownPay}); if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } - const CancellingPayment = await deep.id("@deep-foundation/payments-tinkoff-c2b", "CancellingPayment"); + const CancellingPayment = await deep.id("${cancellingPaymentsPackageName}", "CancellingPayment"); const cancellingPaymentLink = mpDownPay.find(link => link.type_id === CancellingPayment); console.log({cancellingPaymentLink}); if(!cancellingPaymentLink) { return; } - const TinkoffProvider = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const TinkoffProvider = await deep.id("${paymentsPackageName}", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ type_id: TinkoffProvider }); if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; - const Sum = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); + const Sum = await deep.id("${paymentsPackageName}", "Sum"); const sumLink = mpDownPay.find(link => link.type_id === Sum); console.log({sumLink}); if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); - const Url = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); + const Url = await deep.id("${paymentsPackageName}", "Url"); const cancelledPaymentLinkSelectQuery = await deep.select({ id: cancellingPaymentLink.from_id @@ -43,7 +43,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const cancelledPaymentLink = cancelledPaymentLinkSelectQuery.data[0]; console.log({cancelledPaymentLink}); - const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); + const Income = await deep.id("${paymentsPackageName}", "Income"); const incomeLinkInsertQuery = await deep.insert({ type_id: Income, from_id: cancellingPaymentLink.id, @@ -64,7 +64,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { await deep.insert({link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value}, {table: "objects"}); const cancelOptions = { - TerminalKey: "${terminayKey}", + TerminalKey: "${terminalKey}", PaymentId: cancelledPaymentLink.value.value.bankPaymentId, Amount: sumLink.value.value, }; @@ -76,7 +76,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const errorMessage = "Could not cancel the order. " + JSON.stringify(cancelResult.error); const {error: errorLinkInsertQueryError} = await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), + type_id: (await deep.id("${paymentsPackageName}", "Error")), from_id: tinkoffProviderLink.id, to_id: payLink.id, string: { data: { value: errorMessage } }, @@ -86,7 +86,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { } const {error: payedLinkInsertQueryError} = await deep.insert({ - type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), + type_id: await deep.id("${paymentsPackageName}", "Payed"), from_id: tinkoffProviderLink.id, to_id: payLink.id, }); diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 2d228f38..6fda5ab2 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -264,8 +264,8 @@ const installPackage = async () => { - await insertPayInsertHandler({ containTypeId, deep, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, packageId, syncTextFileTypeId, terminayKey: process.env.PAYMENTS_C2B_TERMINAL_KEY }); - await insertNotificationHandler({ deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId }); + await insertPayInsertHandler({ paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b",cancellingPaymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",containTypeId, deep, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, packageId, syncTextFileTypeId, terminayKey: process.env.PAYMENTS_C2B_TERMINAL_KEY }); + await insertNotificationHandler({ paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId }); const callTests = async () => { console.log('callTests-start'); From 647d0ff4e87aec2f5a6f3080622b6c8af051f7e4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 21 Oct 2022 12:59:41 +0000 Subject: [PATCH 597/683] Fix paths --- .../payments/tinkoff/cancelling/insertNotificationHandler.cjs | 2 +- .../payments/tinkoff/cancelling/insertPayInsertHandler.cjs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/deep-packages/payments/tinkoff/cancelling/insertNotificationHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertNotificationHandler.cjs index e8710e03..3ef73379 100644 --- a/deep-packages/payments/tinkoff/cancelling/insertNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/cancelling/insertNotificationHandler.cjs @@ -1,4 +1,4 @@ -const {insertNotificationHandler: baseInsertNotificationHandler} = require("./../../insertNotificationHandler.cjs"); +const {insertNotificationHandler: baseInsertNotificationHandler} = require("./../insertNotificationHandler.cjs"); const insertNotificationHandler = async ({paymentsPackageName,deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { const code = ` diff --git a/deep-packages/payments/tinkoff/cancelling/insertPayInsertHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertPayInsertHandler.cjs index 32544096..955e1fec 100644 --- a/deep-packages/payments/tinkoff/cancelling/insertPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/cancelling/insertPayInsertHandler.cjs @@ -1,5 +1,5 @@ const { insertHandler } = require("../../../insertHandler.cjs"); -const {cancel} = require("./cancel.cjs"); +const {cancel} = require("./../cancel.cjs"); const insertPayInsertHandler = async ({paymentsPackageName, cancellingPaymentsPackageName,deep, syncTextFileTypeId, terminalKey, containTypeId, packageId, dockerSupportsJsId, handlerTypeId, handleInsertTypeId}) => { const code = ` From 2fb613013822531ad558f5a10df146e3d23e17fe Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 21 Oct 2022 12:59:50 +0000 Subject: [PATCH 598/683] LinkId -> Id --- payments-tinkoff-c2b-cancelling.cjs | 174 ++++++++++++++-------------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 6fda5ab2..68f2bde5 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -128,10 +128,10 @@ const installPackage = async () => { 'SelectorFilter' ); const Query = await deep.id('@deep-foundation/core', 'Query'); - const usersLinkId = await deep.id('deep', 'users'); + const usersId = await deep.id('deep', 'users'); const { - data: [{ id: packageLinkId }], + data: [{ id: packageId }], } = await deep.insert({ type_id: packageTypeId, string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, @@ -157,7 +157,7 @@ const installPackage = async () => { }, }); - console.log({ packageLinkId }); + console.log({ packageId }); const sumProviderTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "SumProvider"); console.log({ sumProviderTypeId }); @@ -186,7 +186,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeId, - from_id: packageLinkId, + from_id: packageId, string: { data: { value: 'CancellingPay' } }, }, }, @@ -202,8 +202,8 @@ const installPackage = async () => { const errorTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error"); console.log({ errorTypeId }); - const paymentTreeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree"); - console.log({ paymentTreeLinkId }); + const paymentTreeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree"); + console.log({ paymentTreeId }); const storageBusinessTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageBusiness"); console.log({ storageBusinessTypeId }); @@ -227,7 +227,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeId, - from_id: packageLinkId, + from_id: packageId, string: { data: { value: 'CancellingPayment' } }, }, }, @@ -236,7 +236,7 @@ const installPackage = async () => { await deep.insert({ type_id: treeIncludeUpTypeId, - from_id: paymentTreeLinkId, + from_id: paymentTreeId, to_id: cancellingPaymentTypeId, in: { data: [ @@ -250,7 +250,7 @@ const installPackage = async () => { await deep.insert({ type_id: treeIncludeUpTypeId, - from_id: paymentTreeLinkId, + from_id: paymentTreeId, to_id: cancellingPayTypeId, in: { data: [ @@ -595,7 +595,7 @@ const installPackage = async () => { const createdLinkIds = []; const { - data: [{ id: tinkoffProviderLinkId }], + data: [{ id: tinkoffProviderId }], } = await deep.insert({ type_id: tinkoffProviderTypeId, in: { @@ -607,12 +607,12 @@ const installPackage = async () => { ], }, }); - console.log({ tinkoffProviderLinkId }); - createdLinkIds.push(tinkoffProviderLinkId); - allCreatedLinkIds.push(tinkoffProviderLinkId); + console.log({ tinkoffProviderId }); + createdLinkIds.push(tinkoffProviderId); + allCreatedLinkIds.push(tinkoffProviderId); const { - data: [{ id: sumProviderLinkId }], + data: [{ id: sumProviderId }], } = await deep.insert({ type_id: sumProviderTypeId, in: { @@ -624,12 +624,12 @@ const installPackage = async () => { ], }, }); - console.log({ sumProviderLinkId }); - createdLinkIds.push(sumProviderLinkId); - allCreatedLinkIds.push(sumProviderLinkId); + console.log({ sumProviderId }); + createdLinkIds.push(sumProviderId); + allCreatedLinkIds.push(sumProviderId); const { - data: [{ id: storageBusinessLinkId }], + data: [{ id: storageBusinessId }], } = await deep.insert({ type_id: storageBusinessTypeId, in: { @@ -641,16 +641,16 @@ const installPackage = async () => { ], }, }); - console.log({ storageBusinessLinkId }); - createdLinkIds.push(storageBusinessLinkId); - allCreatedLinkIds.push(storageBusinessLinkId); + console.log({ storageBusinessId }); + createdLinkIds.push(storageBusinessId); + allCreatedLinkIds.push(storageBusinessId); const { - data: [{ id: tokenLinkId }], + data: [{ id: tokenId }], } = await deep.insert({ type_id: tokenTypeId, - from_id: storageBusinessLinkId, - to_id: storageBusinessLinkId, + from_id: storageBusinessId, + to_id: storageBusinessId, string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, in: { data: [ @@ -661,9 +661,9 @@ const installPackage = async () => { ], }, }); - console.log({ tokenLinkId }); - createdLinkIds.push(tokenLinkId); - allCreatedLinkIds.push(tokenLinkId); + console.log({ tokenId }); + createdLinkIds.push(tokenId); + allCreatedLinkIds.push(tokenId); const { data: [{ id: Product }], @@ -685,7 +685,7 @@ const installPackage = async () => { allCreatedLinkIds.push(Product); const { - data: [{ id: productLinkId }], + data: [{ id: productId }], } = await deep.insert({ type_id: Product, in: { @@ -697,9 +697,9 @@ const installPackage = async () => { ], }, }); - console.log({ productLinkId }); - createdLinkIds.push(productLinkId); - allCreatedLinkIds.push(productLinkId); + console.log({ productId }); + createdLinkIds.push(productId); + allCreatedLinkIds.push(productId); const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); @@ -707,12 +707,12 @@ const installPackage = async () => { const createdLinkIds = []; const { - data: [{ id: paymentLinkId }], + data: [{ id: paymentId }], } = await deep.insert({ type_id: paymentTypeId, object: { data: { value: { orderId: uniqid() } } }, from_id: deep.linkId, - to_id: storageBusinessLinkId, + to_id: storageBusinessId, in: { data: [ { @@ -722,16 +722,16 @@ const installPackage = async () => { ], }, }); - console.log({ paymentLinkId }); - createdLinkIds.push(paymentLinkId); - allCreatedLinkIds.push(paymentLinkId); + console.log({ paymentId }); + createdLinkIds.push(paymentId); + allCreatedLinkIds.push(paymentId); const { - data: [{ id: sumLinkId }], + data: [{ id: sumId }], } = await deep.insert({ type_id: sumTypeid, - from_id: sumProviderLinkId, - to_id: paymentLinkId, + from_id: sumProviderId, + to_id: paymentId, number: { data: { value: PRICE } }, in: { data: [ @@ -742,16 +742,16 @@ const installPackage = async () => { ], }, }); - console.log({ sumLinkId }); - createdLinkIds.push(sumLinkId); - allCreatedLinkIds.push(sumLinkId); + console.log({ sumId }); + createdLinkIds.push(sumId); + allCreatedLinkIds.push(sumId); const { - data: [{ id: objectLinkId }], + data: [{ id: objectId }], } = await deep.insert({ type_id: objectTypeId, - from_id: paymentLinkId, - to_id: productLinkId, + from_id: paymentId, + to_id: productId, in: { data: [ { @@ -761,16 +761,16 @@ const installPackage = async () => { ], }, }); - console.log({ objectLinkId }); - createdLinkIds.push(objectLinkId); - allCreatedLinkIds.push(objectLinkId); + console.log({ objectId }); + createdLinkIds.push(objectId); + allCreatedLinkIds.push(objectId); const { - data: [{ id: payLinkId }], + data: [{ id: payId }], } = await deep.insert({ type_id: payTypeId, from_id: deep.linkId, - to_id: sumLinkId, + to_id: sumId, in: { data: [ { @@ -780,15 +780,15 @@ const installPackage = async () => { ], }, }); - console.log({ payLinkId }); - createdLinkIds.push(payLinkId); - allCreatedLinkIds.push(payLinkId); + console.log({ payId }); + createdLinkIds.push(payId); + allCreatedLinkIds.push(payId); var urlLinkSelectQuery; for (let i = 0; i < 10; i++) { urlLinkSelectQuery = await deep.select({ type_id: urlTypeId, - to_id: payLinkId, + to_id: payId, }); if (urlLinkSelectQuery.data.length > 0) { @@ -904,15 +904,15 @@ const installPackage = async () => { }, }); if (cancellingPaymentLinkInsertQuery.error) { throw new errorTypeId(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; - console.log({ cancellingPaymentLinkId }); - createdLinkIds.push(cancellingPaymentLinkId); - allCreatedLinkIds.push(cancellingPaymentLinkId); + const cancellingPaymentId = cancellingPaymentLinkInsertQuery.data[0].id; + console.log({ cancellingPaymentId }); + createdLinkIds.push(cancellingPaymentId); + allCreatedLinkIds.push(cancellingPaymentId); const sumLinkOfCancellingPaymentQuery = await deep.insert({ type_id: sumTypeid, - from_id: sumProviderLinkId, - to_id: cancellingPaymentLinkId, + from_id: sumProviderId, + to_id: cancellingPaymentId, number: { data: { value: PRICE } }, in: { data: [ @@ -943,16 +943,16 @@ const installPackage = async () => { }, }); if (cancellingPayLinkInsertQuery.error) { throw new errorTypeId(cancellingPayLinkInsertQuery.error.message); } - const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; - console.log({ cancellingPayLinkId }); - createdLinkIds.push(cancellingPayLinkId); - allCreatedLinkIds.push(cancellingPayLinkId); + const cancellingPayId = cancellingPayLinkInsertQuery.data[0].id; + console.log({ cancellingPayId }); + createdLinkIds.push(cancellingPayId); + allCreatedLinkIds.push(cancellingPayId); var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { payedLinkSelectQuery = await deep.select({ type_id: payedTypeId, - to_id: cancellingPayLinkId + to_id: cancellingPayId }); if (payedLinkSelectQuery.data.length > 0) { @@ -999,17 +999,17 @@ const installPackage = async () => { }, }); if (cancellingPaymentLinkInsertQuery.error) { throw new errorTypeId(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; - console.log({ cancellingPaymentLinkId }); - createdLinkIds.push(cancellingPaymentLinkId); - allCreatedLinkIds.push(cancellingPaymentLinkId); + const cancellingPaymentId = cancellingPaymentLinkInsertQuery.data[0].id; + console.log({ cancellingPaymentId }); + createdLinkIds.push(cancellingPaymentId); + allCreatedLinkIds.push(cancellingPaymentId); const { data: [{ id: sumLinkIdOfCancellingPayment }] } = await deep.insert({ type_id: sumTypeid, - from_id: sumProviderLinkId, - to_id: cancellingPaymentLinkId, + from_id: sumProviderId, + to_id: cancellingPaymentId, number: { data: { value: Math.floor(PRICE / 3) } }, in: { data: [ @@ -1038,16 +1038,16 @@ const installPackage = async () => { }, }); if (cancellingPayLinkInsertQuery.error) { throw new errorTypeId(cancellingPayLinkInsertQuery.error.message); } - const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; - console.log({ cancellingPayLinkId }); - createdLinkIds.push(cancellingPayLinkId); - allCreatedLinkIds.push(cancellingPayLinkId); + const cancellingPayId = cancellingPayLinkInsertQuery.data[0].id; + console.log({ cancellingPayId }); + createdLinkIds.push(cancellingPayId); + allCreatedLinkIds.push(cancellingPayId); var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { payedLinkSelectQuery = await deep.select({ type_id: payedTypeId, - to_id: cancellingPayLinkId + to_id: cancellingPayId }); if (payedLinkSelectQuery.data.length > 0) { @@ -1096,15 +1096,15 @@ const installPackage = async () => { }, }); if (cancellingPaymentLinkInsertQuery.error) { throw new errorTypeId(cancellingPaymentLinkInsertQuery.error.message); } - const cancellingPaymentLinkId = cancellingPaymentLinkInsertQuery.data[0].id; - console.log({ cancellingPaymentLinkId }); - createdLinkIds.push(cancellingPaymentLinkId); - allCreatedLinkIds.push(cancellingPaymentLinkId); + const cancellingPaymentId = cancellingPaymentLinkInsertQuery.data[0].id; + console.log({ cancellingPaymentId }); + createdLinkIds.push(cancellingPaymentId); + allCreatedLinkIds.push(cancellingPaymentId); const sumLinkOfCancellingPaymentSelectQuery = await deep.insert({ type_id: sumTypeid, - from_id: sumProviderLinkId, - to_id: cancellingPaymentLinkId, + from_id: sumProviderId, + to_id: cancellingPaymentId, number: { data: { value: PRICE } }, in: { data: [ @@ -1135,16 +1135,16 @@ const installPackage = async () => { }, }); if (cancellingPayLinkInsertQuery.error) { throw new errorTypeId(cancellingPayLinkInsertQuery.error.message); } - const cancellingPayLinkId = cancellingPayLinkInsertQuery.data[0].id; - console.log({ cancellingPayLinkId }); - createdLinkIds.push(cancellingPayLinkId); - allCreatedLinkIds.push(cancellingPayLinkId); + const cancellingPayId = cancellingPayLinkInsertQuery.data[0].id; + console.log({ cancellingPayId }); + createdLinkIds.push(cancellingPayId); + allCreatedLinkIds.push(cancellingPayId); var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { payedLinkSelectQuery = await deep.select({ type_id: payedTypeId, - to_id: cancellingPayLinkId + to_id: cancellingPayId }); if (payedLinkSelectQuery.data.length > 0) { From 1895361ae549c06a284f6db8fcf093da1fe882bf Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 21 Oct 2022 13:18:16 +0000 Subject: [PATCH 599/683] Rename handlers --- ...js => insertTinkoffCancellingNotificationHandler.cjs} | 7 ++++--- ...r.cjs => insertTinkoffCancellingPayInsertHandler.cjs} | 9 +++++---- payments-tinkoff-c2b-cancelling.cjs | 8 ++++---- 3 files changed, 13 insertions(+), 11 deletions(-) rename deep-packages/payments/tinkoff/cancelling/{insertNotificationHandler.cjs => insertTinkoffCancellingNotificationHandler.cjs} (86%) rename deep-packages/payments/tinkoff/cancelling/{insertPayInsertHandler.cjs => insertTinkoffCancellingPayInsertHandler.cjs} (85%) diff --git a/deep-packages/payments/tinkoff/cancelling/insertNotificationHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs similarity index 86% rename from deep-packages/payments/tinkoff/cancelling/insertNotificationHandler.cjs rename to deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs index 3ef73379..b4e6e70f 100644 --- a/deep-packages/payments/tinkoff/cancelling/insertNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs @@ -1,6 +1,7 @@ -const {insertNotificationHandler: baseInsertNotificationHandler} = require("./../insertNotificationHandler.cjs"); +const { handlersDependencies } = require("../handlersDependencies.cjs"); +const {insertNotificationHandler: baseInsertNotificationHandler} = require("../insertNotificationHandler.cjs"); -const insertNotificationHandler = async ({paymentsPackageName,deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { +const insertTinkoffCancellingNotificationHandler = async ({paymentsPackageName,deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { const code = ` async ( req, @@ -75,4 +76,4 @@ async ( return await baseInsertNotificationHandler({adminId, containTypeId, deep, fileTypeId, handlerName: "tinkoffNotificationHandler", handleRouteTypeId,handlerTypeId,notificationPort,notificationRoute,portTypeId,routerListeningTypeId,routerStringUseTypeId,routerTypeId,routeTypeId,supportsId, code}); } -exports.insertNotificationHandler = insertNotificationHandler; \ No newline at end of file +exports.insertTinkoffCancellingNotificationHandler = insertTinkoffCancellingNotificationHandler; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/cancelling/insertPayInsertHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs similarity index 85% rename from deep-packages/payments/tinkoff/cancelling/insertPayInsertHandler.cjs rename to deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs index 955e1fec..2e86f3e2 100644 --- a/deep-packages/payments/tinkoff/cancelling/insertPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs @@ -1,7 +1,8 @@ const { insertHandler } = require("../../../insertHandler.cjs"); -const {cancel} = require("./../cancel.cjs"); +const { handlersDependencies } = require("../handlersDependencies.cjs"); +const {cancel} = require("../cancel.cjs"); -const insertPayInsertHandler = async ({paymentsPackageName, cancellingPaymentsPackageName,deep, syncTextFileTypeId, terminalKey, containTypeId, packageId, dockerSupportsJsId, handlerTypeId, handleInsertTypeId}) => { +const insertTinkoffCancellingPayInsertHandler = async ({paymentsPackageName, cancellingPaymentsPackageName,deep, syncTextFileTypeId, terminalKey, containTypeId, packageId, dockerSupportsJsId, handlerTypeId, handleInsertTypeId, payTypeId}) => { const code = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} @@ -95,7 +96,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }; `; -return await insertHandler({deep,fileTypeId: syncTextFileTypeId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeId, code, supportsId: dockerSupportsJsId, handleOperationTypeId: handleInsertTypeId, containTypeId, packageId, handlerTypeId, code}); +return await insertHandler({deep,fileTypeId: syncTextFileTypeId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeId: payTypeId, code, supportsId: dockerSupportsJsId, handleOperationTypeId: handleInsertTypeId, containTypeId, packageId, handlerTypeId, code}); } -exports.insertPayInsertHandler = insertPayInsertHandler; \ No newline at end of file +exports.insertTinkoffCancellingPayInsertHandler = insertTinkoffCancellingPayInsertHandler; \ No newline at end of file diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 68f2bde5..4beee2e5 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -20,8 +20,8 @@ const { getError } = require("./deep-packages/payments/tinkoff/getError.cjs"); const { init } = require("./deep-packages/payments/tinkoff/init.cjs"); const { cancel } = require("./deep-packages/payments/tinkoff/cancel.cjs"); const { handlersDependencies } = require("./deep-packages/payments/tinkoff/handlersDependencies.cjs"); -const { insertPayInsertHandler } = require("./deep-packages/payments/tinkoff/cancelling/insertPayInsertHandler.cjs"); -const { insertNotificationHandler } = require("./deep-packages/payments/tinkoff/cancelling/insertNotificationHandler.cjs"); +const { insertTinkoffCancellingPayInsertHandler } = require("./deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs"); +const { insertTinkoffCancellingNotificationHandler } = require("./deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs"); var myEnv = dotenv.config(); dotenvExpand.expand(myEnv); @@ -264,8 +264,8 @@ const installPackage = async () => { - await insertPayInsertHandler({ paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b",cancellingPaymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",containTypeId, deep, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, packageId, syncTextFileTypeId, terminayKey: process.env.PAYMENTS_C2B_TERMINAL_KEY }); - await insertNotificationHandler({ paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId }); + await insertTinkoffCancellingPayInsertHandler({ payTypeId, terminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY,paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b",cancellingPaymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",containTypeId, deep, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, packageId, syncTextFileTypeId, terminayKey: process.env.PAYMENTS_C2B_TERMINAL_KEY }); + await insertTinkoffCancellingNotificationHandler({ paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJs }); const callTests = async () => { console.log('callTests-start'); From 47bead6e0fab3b77a3e3511f419b24a8b11ec5a0 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 21 Oct 2022 13:20:25 +0000 Subject: [PATCH 600/683] Rename --- ...rtTinkoffCancellingNotificationHandler.cjs | 79 +++++++++++++++++++ ...s => insertTinkoffNotificationHandler.cjs} | 6 +- ....cjs => insertTinkoffPayInsertHandler.cjs} | 4 +- payments-tinkoff-c2b.cjs | 8 +- 4 files changed, 88 insertions(+), 9 deletions(-) create mode 100644 deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs rename deep-packages/payments/tinkoff/{insertNotificationHandler.cjs => insertTinkoffNotificationHandler.cjs} (89%) rename deep-packages/payments/tinkoff/{insertPayInsertHandler.cjs => insertTinkoffPayInsertHandler.cjs} (94%) diff --git a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs new file mode 100644 index 00000000..6e91e427 --- /dev/null +++ b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs @@ -0,0 +1,79 @@ +const { handlersDependencies } = require("../handlersDependencies.cjs"); +const {insertNotificationHandler: baseInsertNotificationHandler} = require("../insertTinkoffNotificationHandler.cjs"); + +const insertTinkoffCancellingNotificationHandler = async ({paymentsPackageName,deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { + const code = ` +async ( + req, + res, + next, + { deep, require, gql } +) => { + ${handlersDependencies} + const reqBody = req.body; + console.log({reqBody}); + + // Canceled is used instead of Cancelled because tinkoff team is not goos at english + if (req.body.Status !== 'CANCELED') { + return next(); + } + + const TinkoffProvider = await deep.id("${paymentsPackageName}", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: TinkoffProvider + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; + + const cancellingPaymentLinkSelectQuery = await deep.select({ + object: {value: {_contains: {orderId: req.body.OrderId}}} + }); + if(cancellingPaymentLinkSelectQuery.error) { throw new Error(cancellingPaymentLinkSelectQuery.error.message); } + const cancellingPaymentLink = cancellingPaymentLinkSelectQuery.data[0]; + console.log({cancellingPaymentLink}); + if(!cancellingPaymentLink) { throw new Error("The cancelling payment link associated with the order id " + req.body.OrderId + " is not found."); } + + const {data: mpUpCancellingPaymentLink, error: mpUpcancellingPaymentLinkSelectQueryError} = await deep.select({ + up: { + parent_id: { _eq: cancellingPaymentLink.id }, + tree_id: { _eq: await deep.id("${paymentsPackageName}", "paymentTree") } + } + }); + console.log({mpUpCancellingPaymentLink}); + if(mpUpcancellingPaymentLinkSelectQueryError) { throw new Error(mpUpcancellingPaymentLinkSelectQueryError.message); } + + const Pay = await deep.id("${paymentsPackageName}", "Pay"); + const payLink = mpUpCancellingPaymentLink.find(link => link.type_id === Pay); + console.log({payLink}); + if(!payLink) { throw new Error("The pay link associated with cancelling payment link " + cancellingPaymentLink + " is not found.") } + + + const bankPaymentId = req.body.PaymentId; + + const {data: mpUpPayment, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ + up: { + parent_id: { _eq: cancellingPaymentLink.id }, + tree_id: { _eq: await deep.id("${paymentsPackageName}", "paymentTree") } + } + }); + + const Sum = await deep.id("${paymentsPackageName}", "Sum") + const sumLink = mpUpPayment.find(link => link.type_id === Sum); + if(!sumLink) {throw new Error("Could not find sum link associated with the cancelling payment " + cancellingPaymentLink);} + + const Payed = await deep.id("${paymentsPackageName}", "Payed") + const payedInsertLinkInsertQuery = await deep.insert({ + type_id: Payed, + from_id: tinkoffProviderLink.id, + to_id: sumLink.id, + }); + if(payedInsertLinkInsertQuery.error) {throw new Error(payedInsertLinkInsertQuery.error.message);} + + res.send('ok'); +}; +`; + +return await baseInsertNotificationHandler({adminId, containTypeId, deep, fileTypeId, handlerName: "tinkoffNotificationHandler", handleRouteTypeId,handlerTypeId,notificationPort,notificationRoute,portTypeId,routerListeningTypeId,routerStringUseTypeId,routerTypeId,routeTypeId,supportsId, code}); +} + +exports.insertTinkoffCancellingNotificationHandler = insertTinkoffCancellingNotificationHandler; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/insertNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs similarity index 89% rename from deep-packages/payments/tinkoff/insertNotificationHandler.cjs rename to deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs index afdfe4e6..da6476ae 100644 --- a/deep-packages/payments/tinkoff/insertNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs @@ -1,8 +1,8 @@ -const {insertNotificationHandler: baseInsertNotificationHandler} = require("./../../insertNotificationHandler.cjs"); +const {insertNotificationHandler: baseInsertNotificationHandler} = require("../../insertNotificationHandler.cjs"); const {handlersDependencies} = require("./handlersDependencies.cjs"); const {confirm} = require("./confirm.cjs"); -const insertNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, onCofirmedCode}) => { +const insertTinkoffNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, onCofirmedCode}) => { const code = ` async ( req, @@ -104,4 +104,4 @@ async ( return await baseInsertNotificationHandler({packageId, adminId, containTypeId, deep, fileTypeId, handlerName: "tinkoffNotificationHandler", handleRouteTypeId,handlerTypeId,notificationPort,notificationRoute,portTypeId,routerListeningTypeId,routerStringUseTypeId,routerTypeId,routeTypeId,supportsId, code}); } -exports.insertNotificationHandler = insertNotificationHandler; \ No newline at end of file +exports.insertTinkoffNotificationHandler = insertTinkoffNotificationHandler; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/insertPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs similarity index 94% rename from deep-packages/payments/tinkoff/insertPayInsertHandler.cjs rename to deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs index 4ec46dfa..85a0ba9c 100644 --- a/deep-packages/payments/tinkoff/insertPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs @@ -2,7 +2,7 @@ const { insertHandler } = require("../../insertHandler.cjs"); const {handlersDependencies} = require("./handlersDependencies.cjs"); const {init} = require("./init.cjs"); -const insertPayInsertHandler = async ({packageName, deep, notificationUrl, userEmail, userPhone, fileTypeId, containTypeId, packageId, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, payTypeId}) => { +const insertTinkoffPayInsertHandler = async ({packageName, deep, notificationUrl, userEmail, userPhone, fileTypeId, containTypeId, packageId, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, payTypeId}) => { const code = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} @@ -124,4 +124,4 @@ async ({ deep, require, data: { newLink: payLink } }) => { return await insertHandler({deep, fileTypeId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeId: payTypeId, code, supportsId: dockerSupportsJsId, handleOperationTypeId: handleInsertTypeId, containTypeId, packageId, handlerTypeId, code}); } -exports.insertPayInsertHandler = insertPayInsertHandler; \ No newline at end of file +exports.insertTinkoffPayInsertHandler = insertTinkoffPayInsertHandler; \ No newline at end of file diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 187fdeaf..693711dd 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -34,8 +34,8 @@ const { addCustomer } = require("./deep-packages/payments/tinkoff/addCustomer.cj const { getCustomer } = require("./deep-packages/payments/tinkoff/getCustomer.cjs"); const { removeCustomer } = require("./deep-packages/payments/tinkoff/removeCustomer.cjs"); const { handlersDependencies } = require("./deep-packages/payments/tinkoff/handlersDependencies.cjs"); -const { insertPayInsertHandler } = require("./deep-packages/payments/tinkoff/insertPayInsertHandler.cjs"); -const { insertNotificationHandler } = require("./deep-packages/payments/tinkoff/insertNotificationHandler.cjs"); +const { insertPayInsertHandler: insertTinkoffPayInsertHandler } = require("./deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs"); +const { insertTinkoffNotificationHandler } = require("./deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs"); const {sleep} = require("./deep-packages/sleep.cjs"); const {confirm} = require("./deep-packages/payments/tinkoff/confirm.cjs"); @@ -529,7 +529,7 @@ const installPackage = async () => { console.log({ incomeTypeId }); debugger; - await insertPayInsertHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",deep, containTypeId, fileTypeId: syncTextFileTypeId, handleInsertTypeId, handlerTypeId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE, dockerSupportsJsId, payTypeId}); + await insertTinkoffPayInsertHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",deep, containTypeId, fileTypeId: syncTextFileTypeId, handleInsertTypeId, handlerTypeId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE, dockerSupportsJsId, payTypeId}); const tinkoffNotificationOnConfirmedCode = ` @@ -587,7 +587,7 @@ const installPackage = async () => { } `; - await insertNotificationHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",packageId,deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJsId, onCofirmedCode: tinkoffNotificationOnConfirmedCode}); + await insertTinkoffNotificationHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",packageId,deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJsId, onCofirmedCode: tinkoffNotificationOnConfirmedCode}); const callTests = async () => { console.log('callTests-start'); From cc4d352784da38ef4b23a555da8d6d5d688c1211 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 21 Oct 2022 13:20:44 +0000 Subject: [PATCH 601/683] Rename --- payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 693711dd..76b52a5d 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -34,7 +34,7 @@ const { addCustomer } = require("./deep-packages/payments/tinkoff/addCustomer.cj const { getCustomer } = require("./deep-packages/payments/tinkoff/getCustomer.cjs"); const { removeCustomer } = require("./deep-packages/payments/tinkoff/removeCustomer.cjs"); const { handlersDependencies } = require("./deep-packages/payments/tinkoff/handlersDependencies.cjs"); -const { insertPayInsertHandler: insertTinkoffPayInsertHandler } = require("./deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs"); +const { insertTinkoffPayInsertHandler } = require("./deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs"); const { insertTinkoffNotificationHandler } = require("./deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs"); const {sleep} = require("./deep-packages/sleep.cjs"); const {confirm} = require("./deep-packages/payments/tinkoff/confirm.cjs"); From 1f618deb960d6b1ce03e5ae4fb40c6b437b4f92c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 21 Oct 2022 14:08:17 +0000 Subject: [PATCH 602/683] Fix handlers --- .../insertTinkoffCancellingNotificationHandler.cjs | 9 ++++----- payments-tinkoff-c2b-cancelling.cjs | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs index 6e91e427..a70c15a8 100644 --- a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs @@ -1,7 +1,7 @@ const { handlersDependencies } = require("../handlersDependencies.cjs"); -const {insertNotificationHandler: baseInsertNotificationHandler} = require("../insertTinkoffNotificationHandler.cjs"); +const {insertNotificationHandler: baseInsertNotificationHandler} = require("../../../insertNotificationHandler.cjs"); -const insertTinkoffCancellingNotificationHandler = async ({paymentsPackageName,deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { +const insertTinkoffCancellingNotificationHandler = async ({packageId,paymentsPackageName,deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { const code = ` async ( req, @@ -9,6 +9,7 @@ async ( next, { deep, require, gql } ) => { + res.send('ok'); ${handlersDependencies} const reqBody = req.body; console.log({reqBody}); @@ -68,12 +69,10 @@ async ( to_id: sumLink.id, }); if(payedInsertLinkInsertQuery.error) {throw new Error(payedInsertLinkInsertQuery.error.message);} - - res.send('ok'); }; `; -return await baseInsertNotificationHandler({adminId, containTypeId, deep, fileTypeId, handlerName: "tinkoffNotificationHandler", handleRouteTypeId,handlerTypeId,notificationPort,notificationRoute,portTypeId,routerListeningTypeId,routerStringUseTypeId,routerTypeId,routeTypeId,supportsId, code}); +return await baseInsertNotificationHandler({packageId,adminId, containTypeId, deep, fileTypeId, handlerName: "tinkoffNotificationHandler", handleRouteTypeId,handlerTypeId,notificationPort,notificationRoute,portTypeId,routerListeningTypeId,routerStringUseTypeId,routerTypeId,routeTypeId,supportsId, code}); } exports.insertTinkoffCancellingNotificationHandler = insertTinkoffCancellingNotificationHandler; \ No newline at end of file diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 4beee2e5..b7160cc8 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -265,7 +265,7 @@ const installPackage = async () => { await insertTinkoffCancellingPayInsertHandler({ payTypeId, terminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY,paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b",cancellingPaymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",containTypeId, deep, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, packageId, syncTextFileTypeId, terminayKey: process.env.PAYMENTS_C2B_TERMINAL_KEY }); - await insertTinkoffCancellingNotificationHandler({ paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJs }); + await insertTinkoffCancellingNotificationHandler({ paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJs , packageId}); const callTests = async () => { console.log('callTests-start'); From d100910a459f425851811c25c39e80e56289cec4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 23 Oct 2022 06:48:05 +0000 Subject: [PATCH 603/683] Fix handlers --- .../insertTinkoffCancellingPayInsertHandler.cjs | 4 ++-- payments-tinkoff-c2b-cancelling.cjs | 11 ++++++----- payments-tinkoff-c2b.cjs | 9 +++++---- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs index 2e86f3e2..6a6b064d 100644 --- a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs @@ -2,7 +2,7 @@ const { insertHandler } = require("../../../insertHandler.cjs"); const { handlersDependencies } = require("../handlersDependencies.cjs"); const {cancel} = require("../cancel.cjs"); -const insertTinkoffCancellingPayInsertHandler = async ({paymentsPackageName, cancellingPaymentsPackageName,deep, syncTextFileTypeId, terminalKey, containTypeId, packageId, dockerSupportsJsId, handlerTypeId, handleInsertTypeId, payTypeId}) => { +const insertTinkoffCancellingPayInsertHandler = async ({paymentsPackageName, cancellingPaymentsPackageName,deep, syncTextFileTypeId, terminalKey, containTypeId, packageId, dockerSupportsJsId, handlerTypeId, handleInsertTypeId, cancellingPayTypeId}) => { const code = ` async ({ deep, require, data: { newLink: payLink } }) => { ${handlersDependencies} @@ -96,7 +96,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { }; `; -return await insertHandler({deep,fileTypeId: syncTextFileTypeId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeId: payTypeId, code, supportsId: dockerSupportsJsId, handleOperationTypeId: handleInsertTypeId, containTypeId, packageId, handlerTypeId, code}); +return await insertHandler({deep,fileTypeId: syncTextFileTypeId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeId: cancellingPayTypeId, code, supportsId: dockerSupportsJsId, handleOperationTypeId: handleInsertTypeId, containTypeId, packageId, handlerTypeId, code}); } exports.insertTinkoffCancellingPayInsertHandler = insertTinkoffCancellingPayInsertHandler; \ No newline at end of file diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index b7160cc8..0f289c93 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -15,6 +15,10 @@ const crypto = require('crypto'); const axios = require('axios'); const uniqid = require('uniqid'); const { expect } = require('chai'); + +var myEnv = dotenv.config(); +dotenvExpand.expand(myEnv); + const { payInBrowser } = require("./deep-packages/payments/tinkoff/payInBrowser.cjs"); const { getError } = require("./deep-packages/payments/tinkoff/getError.cjs"); const { init } = require("./deep-packages/payments/tinkoff/init.cjs"); @@ -23,9 +27,6 @@ const { handlersDependencies } = require("./deep-packages/payments/tinkoff/handl const { insertTinkoffCancellingPayInsertHandler } = require("./deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs"); const { insertTinkoffCancellingNotificationHandler } = require("./deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs"); -var myEnv = dotenv.config(); -dotenvExpand.expand(myEnv); - console.log("Installing @deep-foundation/payments-tinkoff-c2b-cancelling package"); const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); @@ -134,7 +135,7 @@ const installPackage = async () => { data: [{ id: packageId }], } = await deep.insert({ type_id: packageTypeId, - string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, + string: { data: { value: '@deep-foundation/payments-tinkoff-c2b-cancelling' } }, in: { data: [ { @@ -264,7 +265,7 @@ const installPackage = async () => { - await insertTinkoffCancellingPayInsertHandler({ payTypeId, terminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY,paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b",cancellingPaymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",containTypeId, deep, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, packageId, syncTextFileTypeId, terminayKey: process.env.PAYMENTS_C2B_TERMINAL_KEY }); + await insertTinkoffCancellingPayInsertHandler({ cancellingPayTypeId, terminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY,paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b",cancellingPaymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",containTypeId, deep, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, packageId, syncTextFileTypeId, terminayKey: process.env.PAYMENTS_C2B_TERMINAL_KEY }); await insertTinkoffCancellingNotificationHandler({ paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJs , packageId}); const callTests = async () => { diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 76b52a5d..7e6106d3 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -547,17 +547,18 @@ const installPackage = async () => { type_id: StorageClient, number: {value: req.body.CardId} }); - console.log({storageClientLinkSelectQuery}); if(storageClientLinkSelectQuery.error) {throw new Error(storageClientLinkSelectQuery.error.message);} - if(fromLinkOfPayment.type_id !== StorageClient) { var storageClientLinkId; if(storageClientLinkSelectQuery.data.length === 0) { + console.log(1); const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + console.log(2); const storageClientLinkInsertQuery = await deep.insert({ type_id: StorageClient, number: {data: {value: req.body.CardId}}, }); + console.log(3); console.log({storageClientLinkInsertQuery}); if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} storageClientLinkId = storageClientLinkInsertQuery.data[0].id; @@ -573,6 +574,7 @@ const installPackage = async () => { const titleLinkId = titleLinkInsertQuery.data[0].id; console.log({titleLinkId}); } else { + console.log(11111111111111111111); storageClientLinkId = storageClientLinkSelectQuery.data[0]; } const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); @@ -584,8 +586,7 @@ const installPackage = async () => { if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} const incomeLinkId = incomeLinkInsertQuery.data[0].id; console.log({incomeLinkId}); - - } + `; await insertTinkoffNotificationHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",packageId,deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJsId, onCofirmedCode: tinkoffNotificationOnConfirmedCode}); From 6c75fa549dafc3363fa77e1cfa0ab9eb876bd644 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 30 Oct 2022 11:06:29 +0000 Subject: [PATCH 604/683] Install puppeteer --- package-lock.json | 405 +++++++++++++++++++++------------------------- package.json | 2 +- 2 files changed, 184 insertions(+), 223 deletions(-) diff --git a/package-lock.json b/package-lock.json index 93d790de..a63b9642 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1037,7 +1037,7 @@ "ansi-gray": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", "requires": { "ansi-wrap": "0.1.0" } @@ -1045,7 +1045,7 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" }, "ansi-styles": { "version": "2.2.1", @@ -1055,7 +1055,7 @@ "ansi-wrap": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==" }, "anymatch": { "version": "3.1.2", @@ -1792,7 +1792,7 @@ "append-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", "requires": { "buffer-equal": "^1.0.0" } @@ -1800,7 +1800,7 @@ "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" }, "arg": { "version": "4.1.3", @@ -1810,12 +1810,12 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==" }, "arr-filter": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", "requires": { "make-iterator": "^1.0.0" } @@ -1828,7 +1828,7 @@ "arr-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", "requires": { "make-iterator": "^1.0.0" } @@ -1836,12 +1836,12 @@ "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" }, "array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==" }, "array-flatten": { "version": "1.1.1", @@ -1851,7 +1851,7 @@ "array-initial": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", "requires": { "array-slice": "^1.0.0", "is-number": "^4.0.0" @@ -1902,7 +1902,7 @@ "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==" }, "array.prototype.reduce": { "version": "1.0.4", @@ -1937,7 +1937,7 @@ "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" }, "async": { "version": "0.9.2", @@ -1971,7 +1971,7 @@ "async-settle": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", "requires": { "async-done": "^1.2.2" } @@ -2097,7 +2097,7 @@ "babel-plugin-transform-runtime": { "version": "6.15.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.15.0.tgz", - "integrity": "sha1-PXW02Umtga8VdXAnOEb7Wa6w1Xw=", + "integrity": "sha512-sS2r8bFVzJ36EHlzzOvJvlre/Sec92V+oWQVb/pMwo/EKADB/cHdVD1jVXXsOgMRvCEwNyvDcpNWSh80N3N/KA==", "requires": { "babel-runtime": "^6.9.0" } @@ -2129,7 +2129,7 @@ "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", "requires": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" @@ -2197,7 +2197,7 @@ "bach": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", "requires": { "arr-filter": "^1.1.1", "arr-flatten": "^1.0.1", @@ -2237,7 +2237,7 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "requires": { "is-descriptor": "^1.0.0" } @@ -2583,7 +2583,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } @@ -2669,17 +2669,17 @@ "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" }, "clone-buffer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==" }, "clone-stats": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==" }, "cloneable-readable": { "version": "1.1.3", @@ -2705,12 +2705,12 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==" }, "collection-map": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", "requires": { "arr-map": "^2.0.2", "for-own": "^1.0.0", @@ -2720,7 +2720,7 @@ "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "requires": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" @@ -2737,7 +2737,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "color-support": { "version": "1.1.3", @@ -2770,7 +2770,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "concat-stream": { "version": "1.6.2", @@ -2883,7 +2883,7 @@ "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==" }, "copy-props": { "version": "2.0.5", @@ -2972,7 +2972,7 @@ "cycle": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" + "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==" }, "d": { "version": "1.0.1", @@ -3012,12 +3012,12 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" }, "deep-eql": { "version": "3.0.1", @@ -3082,7 +3082,7 @@ "default-resolution": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=" + "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==" }, "default-shell": { "version": "1.0.1", @@ -3151,7 +3151,7 @@ "detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==" }, "detect-indent": { "version": "4.0.0", @@ -3345,7 +3345,7 @@ "es6-iterator": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", "requires": { "d": "1", "es5-ext": "^0.10.35", @@ -3380,7 +3380,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "esutils": { "version": "2.0.3", @@ -3447,7 +3447,7 @@ "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "requires": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -3469,7 +3469,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } @@ -3477,7 +3477,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -3543,7 +3543,7 @@ "expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "requires": { "homedir-polyfill": "^1.0.1" } @@ -3651,7 +3651,7 @@ "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -3675,7 +3675,7 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "requires": { "is-descriptor": "^1.0.0" } @@ -3683,7 +3683,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -3733,7 +3733,7 @@ "eyes": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==" }, "fancy-log": { "version": "1.3.3", @@ -3771,7 +3771,7 @@ "fast-levenshtein": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=" + "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==" }, "fastq": { "version": "1.13.0", @@ -3837,15 +3837,6 @@ } } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, "findup-sync": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", @@ -3877,7 +3868,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -3887,7 +3878,7 @@ "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -3898,7 +3889,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -3913,7 +3904,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "requires": { "kind-of": "^3.0.2" }, @@ -3921,7 +3912,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -3956,7 +3947,7 @@ "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -4024,12 +4015,12 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" }, "for-own": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", "requires": { "for-in": "^1.0.1" } @@ -4062,7 +4053,7 @@ "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "requires": { "map-cache": "^0.2.2" } @@ -4085,7 +4076,7 @@ "fs-mkdirp-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", "requires": { "graceful-fs": "^4.1.11", "through2": "^2.0.3" @@ -4094,7 +4085,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "fsevents": { "version": "2.3.2", @@ -4234,7 +4225,7 @@ "glob-stream": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", "requires": { "extend": "^3.0.0", "glob": "^7.1.1", @@ -4251,7 +4242,7 @@ "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", "requires": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" @@ -4260,7 +4251,7 @@ "is-glob": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", "requires": { "is-extglob": "^2.1.0" } @@ -4293,7 +4284,7 @@ "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "requires": { "remove-trailing-separator": "^1.0.1" } @@ -4325,7 +4316,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -4354,7 +4345,7 @@ "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -4365,7 +4356,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -4385,7 +4376,7 @@ "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", "requires": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" @@ -4394,7 +4385,7 @@ "is-glob": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", "requires": { "is-extglob": "^2.1.0" } @@ -4404,7 +4395,7 @@ "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", "requires": { "binary-extensions": "^1.0.0" } @@ -4417,7 +4408,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "requires": { "kind-of": "^3.0.2" } @@ -4470,7 +4461,7 @@ "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -4491,7 +4482,7 @@ "global-prefix": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", "requires": { "expand-tilde": "^2.0.2", "homedir-polyfill": "^1.0.1", @@ -4809,7 +4800,7 @@ "cross-spawn": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.0.tgz", - "integrity": "sha1-glR3SrR4a4xbPPTfumbOVjkywlI=", + "integrity": "sha512-dAZV+Hv1PRxSUrJd9Hk9MS4gL5eEafKhrmsRlod5oHg8aP3A2FsXkga4ihfMFxlEgmMa+LS84jPKFdhk5wZwuw==", "requires": { "lru-cache": "^4.0.1", "which": "^1.2.9" @@ -4835,14 +4826,14 @@ "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" } } }, "gulplog": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", "requires": { "glogg": "^1.0.0" } @@ -4911,7 +4902,7 @@ "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", "requires": { "get-value": "^2.0.6", "has-values": "^1.0.0", @@ -4921,7 +4912,7 @@ "has-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", "requires": { "is-number": "^3.0.0", "kind-of": "^4.0.0" @@ -4930,7 +4921,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "requires": { "kind-of": "^3.0.2" }, @@ -4938,7 +4929,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -4948,7 +4939,7 @@ "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", "requires": { "is-buffer": "^1.1.5" } @@ -5096,7 +5087,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "requires": { "once": "^1.3.0", "wrappy": "1" @@ -5149,7 +5140,7 @@ "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==" }, "ip-regex": { "version": "4.3.0", @@ -5188,7 +5179,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "is-bigint": { "version": "1.0.4", @@ -5302,7 +5293,7 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, "is-finite": { "version": "1.1.0", @@ -5312,7 +5303,7 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" }, "is-glob": { "version": "4.0.3", @@ -5333,7 +5324,7 @@ "is-negated-glob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==" }, "is-negative-zero": { "version": "2.0.2", @@ -5435,12 +5426,12 @@ "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" }, "is-valid-glob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==" }, "is-weakref": { "version": "1.0.2", @@ -5463,22 +5454,22 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, "iterall": { "version": "1.3.0", @@ -5649,7 +5640,7 @@ "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=" + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, "json-stringify-safe": { "version": "5.0.1", @@ -5738,7 +5729,7 @@ "last-run": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", "requires": { "default-resolution": "^2.0.0", "es6-weak-map": "^2.0.1" @@ -5755,7 +5746,7 @@ "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", "requires": { "invert-kv": "^1.0.0" } @@ -5763,7 +5754,7 @@ "lead": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", "requires": { "flush-write-stream": "^1.0.2" } @@ -5796,7 +5787,7 @@ "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", @@ -5808,7 +5799,7 @@ "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", "requires": { "error-ex": "^1.2.0" } @@ -5816,7 +5807,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" }, "strip-bom": { "version": "2.0.0", @@ -5828,14 +5819,6 @@ } } }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -5938,12 +5921,12 @@ "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "requires": { "object-visit": "^1.0.0" } @@ -5951,7 +5934,7 @@ "matchdep": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", "requires": { "findup-sync": "^2.0.0", "micromatch": "^3.0.4", @@ -5979,7 +5962,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -5989,7 +5972,7 @@ "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -6000,7 +5983,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -6010,7 +5993,7 @@ "findup-sync": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", "requires": { "detect-file": "^1.0.0", "is-glob": "^3.1.0", @@ -6026,7 +6009,7 @@ "is-glob": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", "requires": { "is-extglob": "^2.1.0" } @@ -6034,7 +6017,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "requires": { "kind-of": "^3.0.2" }, @@ -6042,7 +6025,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -6077,7 +6060,7 @@ "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -8378,7 +8361,7 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==" }, "oauth-sign": { "version": "0.9.0", @@ -8393,7 +8376,7 @@ "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "requires": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", @@ -8403,7 +8386,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } @@ -8444,7 +8427,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -8469,7 +8452,7 @@ "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "requires": { "isobject": "^3.0.0" } @@ -8488,7 +8471,7 @@ "object.defaults": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", "requires": { "array-each": "^1.0.1", "array-slice": "^1.0.0", @@ -8521,7 +8504,7 @@ "object.map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", "requires": { "for-own": "^1.0.0", "make-iterator": "^1.0.0" @@ -8530,7 +8513,7 @@ "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "requires": { "isobject": "^3.0.1" } @@ -8538,7 +8521,7 @@ "object.reduce": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", "requires": { "for-own": "^1.0.0", "make-iterator": "^1.0.0" @@ -8555,7 +8538,7 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "requires": { "wrappy": "1" } @@ -8580,7 +8563,7 @@ "ordered-read-streams": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", "requires": { "readable-stream": "^2.0.1" } @@ -8593,7 +8576,7 @@ "os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", "requires": { "lcid": "^1.0.0" } @@ -8624,14 +8607,6 @@ "p-try": "^2.0.0" } }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, "p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -8664,7 +8639,7 @@ "parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", "requires": { "is-absolute": "^1.0.0", "map-cache": "^0.2.0", @@ -8674,7 +8649,7 @@ "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "requires": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -8696,7 +8671,7 @@ "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==" }, "parseurl": { "version": "1.3.3", @@ -8706,7 +8681,7 @@ "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==" }, "path": { "version": "0.12.7", @@ -8720,17 +8695,12 @@ "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" }, "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=" + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "path-key": { "version": "3.1.1", @@ -8745,7 +8715,7 @@ "path-root": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", "requires": { "path-root-regex": "^0.1.0" } @@ -8753,7 +8723,7 @@ "path-root-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==" }, "path-to-regexp": { "version": "0.1.7", @@ -8788,29 +8758,21 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "requires": { "pinkie": "^2.0.0" } }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "requires": { - "find-up": "^4.0.0" - } - }, "platform": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", @@ -8819,7 +8781,7 @@ "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==" }, "pretty-format": { "version": "26.6.2", @@ -8868,7 +8830,7 @@ "pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==" }, "private": { "version": "0.1.8", @@ -8929,7 +8891,7 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" }, "psl": { "version": "1.9.0", @@ -8966,16 +8928,15 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "puppeteer": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-16.1.0.tgz", - "integrity": "sha512-lhykJLbH2bbBaP3NfYI2Vj0T4ctrdfVdEVf8glZITPnLfqrJ0nfUzAYuIz5YcA79k5lmFKANIhEXex+jQChU3g==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-16.2.0.tgz", + "integrity": "sha512-7Au6iC98rS6WEAD110V4Bxd0iIbqoFtzz9XzkG1BSofidS1VAJ881E1+GFR7Xn2Yea0hbj8n0ErzRyseMp1Ctg==", "requires": { "cross-fetch": "3.1.5", "debug": "4.3.4", "devtools-protocol": "0.0.1019158", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", "progress": "2.0.3", "proxy-from-env": "1.1.0", "rimraf": "3.0.2", @@ -9079,7 +9040,7 @@ "read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", "requires": { "mute-stream": "~0.0.4" } @@ -9087,7 +9048,7 @@ "read-pkg": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "integrity": "sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==", "requires": { "normalize-package-data": "^2.3.2", "parse-json": "^4.0.0", @@ -9129,7 +9090,7 @@ "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "requires": { "resolve": "^1.1.6" } @@ -9170,7 +9131,7 @@ "remove-bom-stream": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", "requires": { "remove-bom-buffer": "^3.0.0", "safe-buffer": "^5.1.0", @@ -9180,7 +9141,7 @@ "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" }, "repeat-element": { "version": "1.1.4", @@ -9190,7 +9151,7 @@ "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" }, "repeating": { "version": "2.0.1", @@ -9208,7 +9169,7 @@ "replace-homedir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", "requires": { "homedir-polyfill": "^1.0.1", "is-absolute": "^1.0.0", @@ -9265,7 +9226,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" }, "require-main-filename": { "version": "2.0.0", @@ -9289,7 +9250,7 @@ "resolve-dir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", "requires": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" @@ -9298,7 +9259,7 @@ "resolve-options": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", "requires": { "value-or-function": "^3.0.0" } @@ -9306,7 +9267,7 @@ "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==" }, "ret": { "version": "0.1.15", @@ -9326,7 +9287,7 @@ "revalidator": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", - "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=" + "integrity": "sha512-xcBILK2pA9oh4SiinPEZfhP8HfrB/ha+a2fTMyl7Om2WjlDVrOQy99N2MXXlUHqGJz4qEu2duXxHJjDWuK/0xg==" }, "rimraf": { "version": "3.0.2", @@ -9367,7 +9328,7 @@ "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "requires": { "ret": "~0.1.10" } @@ -9393,7 +9354,7 @@ "semver-greatest-satisfied-range": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", "requires": { "sver-compat": "^1.5.0" } @@ -9476,7 +9437,7 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "set-value": { "version": "2.0.1", @@ -9492,7 +9453,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -9633,7 +9594,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } @@ -9641,7 +9602,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -9717,7 +9678,7 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "requires": { "is-descriptor": "^1.0.0" } @@ -9735,7 +9696,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -9745,7 +9706,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" }, "source-map-resolve": { "version": "0.5.3", @@ -9788,12 +9749,12 @@ "spawn-args": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/spawn-args/-/spawn-args-0.2.0.tgz", - "integrity": "sha1-+30L0dcP1DFr2ePew4nmX51jYbs=" + "integrity": "sha512-73BoniQDcRWgnLAf/suKH6V5H54gd1KLzwYN9FB6J/evqTV33htH9xwV/4BHek+++jzxpVlZQKKZkqstPQPmQg==" }, "spawn-command": { "version": "0.0.2-1", "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=" + "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==" }, "spdx-correct": { "version": "3.1.1", @@ -9850,12 +9811,12 @@ "stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==" }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "requires": { "define-property": "^0.2.5", "object-copy": "^0.1.0" @@ -9864,7 +9825,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } @@ -10027,7 +9988,7 @@ "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "requires": { "ansi-regex": "^2.0.0" } @@ -10071,7 +10032,7 @@ "sver-compat": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", "requires": { "es6-iterator": "^2.0.1", "es6-symbol": "^3.1.1" @@ -10154,17 +10115,17 @@ "time-stamp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" + "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==" }, "timeout-as-promise": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/timeout-as-promise/-/timeout-as-promise-1.0.0.tgz", - "integrity": "sha1-c2foEfyZKs/Nzaq/LlDfr4shV28=" + "integrity": "sha512-G4so1NA+qeCiBK+IX3vi6YyumjdDr86q2Y+RjyGjcw3qrRnFFNmi3Y76Ijk8EtqZxcgDdeq/qj8JFxQcsqaEmA==" }, "to-absolute-glob": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", "requires": { "is-absolute": "^1.0.0", "is-negated-glob": "^1.0.0" @@ -10178,7 +10139,7 @@ "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "requires": { "kind-of": "^3.0.2" }, @@ -10186,7 +10147,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -10215,7 +10176,7 @@ "to-through": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", "requires": { "through2": "^2.0.3" } @@ -10352,7 +10313,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "typescript": { "version": "4.4.4", @@ -10400,7 +10361,7 @@ "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==" }, "undefsafe": { "version": "2.0.5", @@ -10427,7 +10388,7 @@ "undertaker-registry": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=" + "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==" }, "union-value": { "version": "1.0.1", @@ -10485,7 +10446,7 @@ "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "requires": { "has-value": "^0.3.1", "isobject": "^3.0.0" @@ -10494,7 +10455,7 @@ "has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", "requires": { "get-value": "^2.0.3", "has-values": "^0.1.4", @@ -10504,7 +10465,7 @@ "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "requires": { "isarray": "1.0.0" } @@ -10514,7 +10475,7 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==" } } }, @@ -10534,7 +10495,7 @@ "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==" }, "use": { "version": "3.1.1", @@ -10559,7 +10520,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "util.promisify": { "version": "1.1.1", @@ -10608,7 +10569,7 @@ "value-or-function": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=" + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==" }, "value-or-promise": { "version": "1.0.11", @@ -10677,7 +10638,7 @@ "vinyl-sourcemap": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", "requires": { "append-buffer": "^1.0.2", "convert-source-map": "^1.5.0", @@ -10691,7 +10652,7 @@ "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "requires": { "remove-trailing-separator": "^1.0.1" } @@ -10770,7 +10731,7 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" }, "winston": { "version": "2.4.5", @@ -10833,7 +10794,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "ws": { "version": "7.5.9", diff --git a/package.json b/package.json index 0a587f5d..71803371 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "minimist": "^1.2.5", "npm": "^7.5.4", "prompt": "^1.2.0", - "puppeteer": "^16.1.0", + "puppeteer": "^16.2.0", "rimraf": "^3.0.2", "simple-git": "^2.45.0", "ts-node": "^9.1.1", From 3a0c46587f5da9e94fdf5d3207242cf0557b6af2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 30 Oct 2022 11:07:11 +0000 Subject: [PATCH 605/683] Check if all the required env vars are set --- payments-tinkoff-c2b.cjs | 42 +++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 76b52a5d..6a3cb9e1 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -41,19 +41,35 @@ const {confirm} = require("./deep-packages/payments/tinkoff/confirm.cjs"); console.log('Installing payments-tinkoff-c2b package'); -expect(process.env.PAYMENTS_C2B_TERMINAL_KEY).to.not.be.equal(undefined) -expect(process.env.PAYMENTS_C2B_TERMINAL_PASSWORD).to.not.be.equal(undefined) -expect(process.env.PAYMENTS_C2B_URL).to.not.be.equal(undefined) -expect(process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE).to.not.be.equal(undefined) -expect(process.env.PAYMENTS_C2B_NOTIFICATION_PORT).to.not.be.equal(undefined) -expect(process.env.PAYMENTS_C2B_NOTIFICATION_URL).to.not.be.equal(undefined) -expect(process.env.PAYMENTS_C2B_CANCELLING_NOTIFICATION_PORT).to.not.be.equal(undefined) -expect(process.env.PAYMENTS_C2B_CANCELLING_NOTIFICATION_URL).to.not.be.equal(undefined) -expect(process.env.PAYMENTS_C2B_CARD_NUMBER_SUCCESS).to.not.be.equal(undefined) -expect(process.env.PAYMENTS_C2B_CARD_EXPDATE).to.not.be.equal(undefined) -expect(process.env.PAYMENTS_C2B_CARD_CVC).to.not.be.equal(undefined) -expect(process.env.PAYMENTS_C2B_PHONE).to.not.be.equal(undefined) -expect(process.env.PAYMENTS_C2B_EMAIL).to.not.be.equal(undefined) +const requiredEnvVariableNames = [ +"PAYMENTS_C2B_TERMINAL_KEY", +"PAYMENTS_C2B_TERMINAL_PASSWORD", +"PAYMENTS_C2B_URL", +"PAYMENTS_C2B_NOTIFICATION_ROUTE", +"PAYMENTS_C2B_NOTIFICATION_PORT", +"PAYMENTS_C2B_NOTIFICATION_URL", +"PAYMENTS_C2B_CANCELLING_NOTIFICATION_PORT", +"PAYMENTS_C2B_CANCELLING_NOTIFICATION_URL", +"PAYMENTS_C2B_CARD_NUMBER_SUCCESS", +"PAYMENTS_C2B_CARD_EXPDATE", +"PAYMENTS_C2B_CARD_CVC", +"PAYMENTS_C2B_PHONE", +"PAYMENTS_C2B_EMAIL", +]; + +for (const requiredEnvVariableName of requiredEnvVariableNames) { + if(!process.env[requiredEnvVariableName]) { + throw new Error(`The environment variable ${requiredEnvVariableName} is required. All the required environment variables: \n${requiredEnvVariableNames.join("\n")}`); + } +} + +for (let i = 0; i < requiredEnvVariableNames.length; i++) { + const envItem = envi[i]; + if(envItem) { + throw new Error(``) + } +} + const allCreatedLinkIds = []; From d9f846e09f57d7ffb3c5ca8f5dda59c837c8c81c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 30 Oct 2022 11:08:08 +0000 Subject: [PATCH 606/683] Check if all the required env vars set --- payments-tinkoff-c2b-cancelling.cjs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 0f289c93..b21bf3d6 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -31,6 +31,28 @@ console.log("Installing @deep-foundation/payments-tinkoff-c2b-cancelling package const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); +const requiredEnvVariableNames = [ + "PAYMENTS_C2B_TERMINAL_KEY", + "PAYMENTS_C2B_TERMINAL_PASSWORD", + "PAYMENTS_C2B_URL", + "PAYMENTS_C2B_NOTIFICATION_ROUTE", + "PAYMENTS_C2B_NOTIFICATION_PORT", + "PAYMENTS_C2B_NOTIFICATION_URL", + "PAYMENTS_C2B_CANCELLING_NOTIFICATION_PORT", + "PAYMENTS_C2B_CANCELLING_NOTIFICATION_URL", + "PAYMENTS_C2B_CARD_NUMBER_SUCCESS", + "PAYMENTS_C2B_CARD_EXPDATE", + "PAYMENTS_C2B_CARD_CVC", + "PAYMENTS_C2B_PHONE", + "PAYMENTS_C2B_EMAIL", + ]; + + for (const requiredEnvVariableName of requiredEnvVariableNames) { + if(!process.env[requiredEnvVariableName]) { + throw new Error(`The environment variable ${requiredEnvVariableName} is required. All the required environment variables: \n${requiredEnvVariableNames.join("\n")}`); + } + } + const allCreatedLinkIds = []; const installPackage = async () => { From 84267d8d02ddd2b6a4de9666d35e4254be3fc7cb Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 30 Oct 2022 11:08:44 +0000 Subject: [PATCH 607/683] Remove cancelling package nv vars --- payments-tinkoff-c2b.cjs | 2 -- 1 file changed, 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 6a3cb9e1..2510da21 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -48,8 +48,6 @@ const requiredEnvVariableNames = [ "PAYMENTS_C2B_NOTIFICATION_ROUTE", "PAYMENTS_C2B_NOTIFICATION_PORT", "PAYMENTS_C2B_NOTIFICATION_URL", -"PAYMENTS_C2B_CANCELLING_NOTIFICATION_PORT", -"PAYMENTS_C2B_CANCELLING_NOTIFICATION_URL", "PAYMENTS_C2B_CARD_NUMBER_SUCCESS", "PAYMENTS_C2B_CARD_EXPDATE", "PAYMENTS_C2B_CARD_CVC", From 54c039bb37d49e768eb171b8109f6086e9b76c2c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 30 Oct 2022 11:11:13 +0000 Subject: [PATCH 608/683] Remove unused code --- payments-tinkoff-c2b.cjs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 2510da21..470bcb3a 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -61,14 +61,6 @@ for (const requiredEnvVariableName of requiredEnvVariableNames) { } } -for (let i = 0; i < requiredEnvVariableNames.length; i++) { - const envItem = envi[i]; - if(envItem) { - throw new Error(``) - } -} - - const allCreatedLinkIds = []; const installPackage = async () => { From 5d021523fdec9c604eeaf23ab8e2134292bf3cc2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 1 Nov 2022 12:45:48 +0000 Subject: [PATCH 609/683] Fix typo --- .../payments/tinkoff/insertTinkoffNotificationHandler.cjs | 4 ++-- payments-tinkoff-c2b.cjs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs index da6476ae..c1b21322 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs @@ -2,7 +2,7 @@ const {insertNotificationHandler: baseInsertNotificationHandler} = require("../. const {handlersDependencies} = require("./handlersDependencies.cjs"); const {confirm} = require("./confirm.cjs"); -const insertTinkoffNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, onCofirmedCode}) => { +const insertTinkoffNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, onConfirmedCode}) => { const code = ` async ( req, @@ -95,7 +95,7 @@ async ( return confirmResult; } else if (req.body.Status === 'CONFIRMED') { - ${onCofirmedCode} + ${onConfirmedCode} } res.send('ok'); }; diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 470bcb3a..a7a3e34b 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -593,7 +593,7 @@ const installPackage = async () => { } `; - await insertTinkoffNotificationHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",packageId,deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJsId, onCofirmedCode: tinkoffNotificationOnConfirmedCode}); + await insertTinkoffNotificationHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",packageId,deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJsId, onConfirmedCode: tinkoffNotificationOnConfirmedCode}); const callTests = async () => { console.log('callTests-start'); From 46ffc2a321e8f0dc9db2d438e73dcb500bb34173 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 1 Nov 2022 12:45:48 +0000 Subject: [PATCH 610/683] Fix typo --- .../payments/tinkoff/insertTinkoffNotificationHandler.cjs | 4 ++-- payments-tinkoff-c2b.cjs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs index da6476ae..c1b21322 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs @@ -2,7 +2,7 @@ const {insertNotificationHandler: baseInsertNotificationHandler} = require("../. const {handlersDependencies} = require("./handlersDependencies.cjs"); const {confirm} = require("./confirm.cjs"); -const insertTinkoffNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, onCofirmedCode}) => { +const insertTinkoffNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, onConfirmedCode}) => { const code = ` async ( req, @@ -95,7 +95,7 @@ async ( return confirmResult; } else if (req.body.Status === 'CONFIRMED') { - ${onCofirmedCode} + ${onConfirmedCode} } res.send('ok'); }; diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 470bcb3a..a7a3e34b 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -593,7 +593,7 @@ const installPackage = async () => { } `; - await insertTinkoffNotificationHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",packageId,deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJsId, onCofirmedCode: tinkoffNotificationOnConfirmedCode}); + await insertTinkoffNotificationHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",packageId,deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJsId, onConfirmedCode: tinkoffNotificationOnConfirmedCode}); const callTests = async () => { console.log('callTests-start'); From 7715f65c3c71093eadd5524044758e8d47c30f8f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 1 Nov 2022 13:07:27 +0000 Subject: [PATCH 611/683] Renames --- .../insertTinkoffNotificationHandler.cjs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs index c1b21322..3bcb90ad 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs @@ -24,8 +24,8 @@ async ( type_id: TinkoffProvider }); if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; - console.log({tinkoffProviderLinkId}); + const tinkoffProviderId = tinkoffProviderLinkSelectQuery.data[0].id; + console.log({tinkoffProviderId}); const paymentLinkSelectQuery = await deep.select({ object: {value: {_contains: {orderId: req.body.OrderId}}} @@ -53,18 +53,18 @@ async ( if (req.body.Status === 'AUTHORIZED') { const confirm = ${confirm.toString()}; - const storageBusinessLinkSelectQuery = await deep.select({ + const storageReceiverLinkSelectQuery = await deep.select({ id: paymentLink.to_id }); - if(storageBusinessLinkSelectQuery.error) {throw new Error(storageBusinessLinkSelectQuery.error.message);} - const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; - console.log({storageBusinessLinkId}); + if(storageReceiverLinkSelectQuery.error) {throw new Error(storageReceiverLinkSelectQuery.error.message);} + const storageReceiverId = storageReceiverLinkSelectQuery.data[0].id; + console.log({storageReceiverId}); const Token = await deep.id("${packageName}", "Token"); const tokenLinkSelectQuery = await deep.select({ type_id: Token, - from_id: storageBusinessLinkId, - to_id: storageBusinessLinkId + from_id: storageReceiverId, + to_id: storageReceiverId }); if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} const tokenLink = tokenLinkSelectQuery.data[0]; @@ -85,7 +85,7 @@ async ( const errorMessage = "Could not confirm the pay. " + confirmResult.error; const {error: errorLinkInsertError} = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), - from_id: tinkoffProviderLinkId, + from_id: tinkoffProviderId, to_id: payLink.id, string: { data: { value: errorMessage } }, }); From d57508e2ddcc97bd6f6d2103e99d539f9aec0561 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 1 Nov 2022 13:10:47 +0000 Subject: [PATCH 612/683] Put authorized code into if block --- .../insertTinkoffNotificationHandler.cjs | 152 +++++++++--------- 1 file changed, 75 insertions(+), 77 deletions(-) diff --git a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs index 3bcb90ad..4d8d9008 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs @@ -16,84 +16,82 @@ async ( return next(); } - const reqBody = req.body; - console.log({reqBody}); - - const TinkoffProvider = await deep.id("${packageName}", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: TinkoffProvider - }); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderId = tinkoffProviderLinkSelectQuery.data[0].id; - console.log({tinkoffProviderId}); - - const paymentLinkSelectQuery = await deep.select({ - object: {value: {_contains: {orderId: req.body.OrderId}}} - }); - if(paymentLinkSelectQuery.error) { throw new Error(paymentLinkSelectQuery.error.message); } - const paymentLink = paymentLinkSelectQuery.data[0]; - console.log({paymentLink}); - if(!paymentLink) { throw new Error("The payment link associated with the order id " + req.body.OrderId + " is not found."); } - - const {data: mpUpPayment, error: mpUpPaymentSelectQueryError} = await deep.select({ - up: { - parent_id: { _eq: paymentLink.id }, - tree_id: { _eq: await deep.id("${packageName}", "paymentTree") } - } - }); - console.log({mpUpPayment}); - if(mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } - - const Pay = await deep.id("${packageName}", "Pay"); - const payLink = mpUpPayment.find(link => link.type_id === Pay); - console.log({payLink}); - if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } - - if (req.body.Status === 'AUTHORIZED') { - const confirm = ${confirm.toString()}; - - const storageReceiverLinkSelectQuery = await deep.select({ - id: paymentLink.to_id - }); - if(storageReceiverLinkSelectQuery.error) {throw new Error(storageReceiverLinkSelectQuery.error.message);} - const storageReceiverId = storageReceiverLinkSelectQuery.data[0].id; - console.log({storageReceiverId}); - - const Token = await deep.id("${packageName}", "Token"); - const tokenLinkSelectQuery = await deep.select({ - type_id: Token, - from_id: storageReceiverId, - to_id: storageReceiverId - }); - if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} - const tokenLink = tokenLinkSelectQuery.data[0]; - console.log({tokenLink}); - - const confirmOptions = { - TerminalKey: tokenLink.value.value, - PaymentId: req.body.PaymentId, - Amount: req.body.Amount, - // Receipt: req.body.Receipt, - }; - console.log({confirmOptions}); - - const confirmResult = await confirm(confirmOptions); - console.log({confirmResult}); - - if (confirmResult.error) { - const errorMessage = "Could not confirm the pay. " + confirmResult.error; - const {error: errorLinkInsertError} = await deep.insert({ - type_id: (await deep.id("${packageName}", "Error")), - from_id: tinkoffProviderId, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - }); - if(errorLinkInsertError) { throw new Error(errorLinkInsertError); } - throw new Error(errorMessage); - } - - return confirmResult; + const reqBody = req.body; + console.log({reqBody}); + + const TinkoffProvider = await deep.id("${packageName}", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: TinkoffProvider + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderId = tinkoffProviderLinkSelectQuery.data[0].id; + console.log({tinkoffProviderId}); + + const paymentLinkSelectQuery = await deep.select({ + object: {value: {_contains: {orderId: req.body.OrderId}}} + }); + if(paymentLinkSelectQuery.error) { throw new Error(paymentLinkSelectQuery.error.message); } + const paymentLink = paymentLinkSelectQuery.data[0]; + console.log({paymentLink}); + if(!paymentLink) { throw new Error("The payment link associated with the order id " + req.body.OrderId + " is not found."); } + + const {data: mpUpPayment, error: mpUpPaymentSelectQueryError} = await deep.select({ + up: { + parent_id: { _eq: paymentLink.id }, + tree_id: { _eq: await deep.id("${packageName}", "paymentTree") } + } + }); + console.log({mpUpPayment}); + if(mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } + + const Pay = await deep.id("${packageName}", "Pay"); + const payLink = mpUpPayment.find(link => link.type_id === Pay); + console.log({payLink}); + if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } + const confirm = ${confirm.toString()}; + + const storageReceiverLinkSelectQuery = await deep.select({ + id: paymentLink.to_id + }); + if(storageReceiverLinkSelectQuery.error) {throw new Error(storageReceiverLinkSelectQuery.error.message);} + const storageReceiverId = storageReceiverLinkSelectQuery.data[0].id; + console.log({storageReceiverId}); + + const Token = await deep.id("${packageName}", "Token"); + const tokenLinkSelectQuery = await deep.select({ + type_id: Token, + from_id: storageReceiverId, + to_id: storageReceiverId + }); + if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} + const tokenLink = tokenLinkSelectQuery.data[0]; + console.log({tokenLink}); + + const confirmOptions = { + TerminalKey: tokenLink.value.value, + PaymentId: req.body.PaymentId, + Amount: req.body.Amount, + // Receipt: req.body.Receipt, + }; + console.log({confirmOptions}); + + const confirmResult = await confirm(confirmOptions); + console.log({confirmResult}); + + if (confirmResult.error) { + const errorMessage = "Could not confirm the pay. " + confirmResult.error; + const {error: errorLinkInsertError} = await deep.insert({ + type_id: (await deep.id("${packageName}", "Error")), + from_id: tinkoffProviderId, + to_id: payLink.id, + string: { data: { value: errorMessage } }, + }); + if(errorLinkInsertError) { throw new Error(errorLinkInsertError); } + throw new Error(errorMessage); + } + + return confirmResult; } else if (req.body.Status === 'CONFIRMED') { ${onConfirmedCode} } From 13033c5dd6c37372e28d87cf35cb7c8fa0948db9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 1 Nov 2022 13:36:19 +0000 Subject: [PATCH 613/683] Support checked status --- .../payments/tinkoff/insertTinkoffNotificationHandler.cjs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs index 4d8d9008..b9998f4f 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs @@ -12,7 +12,7 @@ async ( ) => { ${handlersDependencies} - if(!(req.body.Status === "AUTHORIZED" || req.body.Status === "CONFIRMED")) { + if(!(req.body.Status === "AUTHORIZED" || req.body.Status === "CONFIRMED" || req.body.Status === "CHECKED" )) { return next(); } @@ -94,7 +94,9 @@ async ( return confirmResult; } else if (req.body.Status === 'CONFIRMED') { ${onConfirmedCode} - } + } else if (req.body.Status === "CHECKED") { + ${onCheckedCode} + } res.send('ok'); }; `; From de5159339c343a937ab1b9eb029e1ccc589bda8d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 1 Nov 2022 13:38:39 +0000 Subject: [PATCH 614/683] Add onCheckedCode parameter --- .../payments/tinkoff/insertTinkoffNotificationHandler.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs index b9998f4f..ea063053 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs @@ -2,7 +2,7 @@ const {insertNotificationHandler: baseInsertNotificationHandler} = require("../. const {handlersDependencies} = require("./handlersDependencies.cjs"); const {confirm} = require("./confirm.cjs"); -const insertTinkoffNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, onConfirmedCode}) => { +const insertTinkoffNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, onConfirmedCode, onCheckedCode}) => { const code = ` async ( req, From 1dd405b39b7568add62e12bfe46f68610455c9e9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 1 Nov 2022 16:13:17 +0000 Subject: [PATCH 615/683] Do not rename newLink arg --- .../tinkoff/insertTinkoffPayInsertHandler.cjs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs index 85a0ba9c..19549dfa 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs @@ -4,7 +4,7 @@ const {init} = require("./init.cjs"); const insertTinkoffPayInsertHandler = async ({packageName, deep, notificationUrl, userEmail, userPhone, fileTypeId, containTypeId, packageId, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, payTypeId}) => { const code = ` -async ({ deep, require, data: { newLink: payLink } }) => { +async ({ deep, require, data: { newLink } }) => { ${handlersDependencies} const TinkoffProvider = await deep.id("${packageName}", "TinkoffProvider"); @@ -16,7 +16,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ down: { - link_id: { _eq: payLink.id }, + link_id: { _eq: newLink.id }, tree_id: { _eq: await deep.id("${packageName}", "paymentTree") }, }, }); @@ -26,12 +26,12 @@ async ({ deep, require, data: { newLink: payLink } }) => { const Payment = await deep.id("${packageName}", "Payment"); const paymentLink = mpDownPay.find(link => link.type_id === Payment); console.log({paymentLink}); - if(!paymentLink) throw new Error("Payment link associated with the pay link " + payLink.id + " is not found."); + if(!paymentLink) throw new Error("Payment link associated with the pay link " + newLink.id + " is not found."); const Sum = await deep.id("${packageName}", "Sum"); const sumLink = mpDownPay.find(link => link.type_id === Sum); console.log({sumLink}); - if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); + if(!sumLink) throw new Error("Sum link associated with the pay link " + newLink.id + " is not found."); const fromLinkOfPaymentSelectQuery = await deep.select({ id: paymentLink.from_id @@ -97,7 +97,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const {error: errorLinkInsertQueryError} = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), from_id: tinkoffProviderLinkId, - to_id: payLink.id, + to_id: newLink.id, string: { data: { value: errorMessage } }, }); if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } @@ -108,7 +108,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const {error: urlLinkInsertQueryError} = await deep.insert({ type_id: Url, from_id: tinkoffProviderLinkId, - to_id: payLink.id, + to_id: newLink.id, string: { data: { value: initResult.response.PaymentURL } }, }); if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } From f2c716ed81504886a6b3748e11a8c3ecb050dc66 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 09:35:35 +0000 Subject: [PATCH 616/683] Rename variables: `Type` -> `typeLinkId` --- .../payments/tinkoff/addCustomer.cjs | 2 +- ...rtTinkoffCancellingNotificationHandler.cjs | 12 ++++----- deep-packages/payments/tinkoff/charge.cjs | 2 +- deep-packages/payments/tinkoff/checkOrder.cjs | 2 +- .../payments/tinkoff/getCardList.cjs | 2 +- .../payments/tinkoff/getCustomer.cjs | 2 +- deep-packages/payments/tinkoff/getState.cjs | 2 +- deep-packages/payments/tinkoff/init.cjs | 2 +- .../insertTinkoffNotificationHandler.cjs | 12 ++++----- .../tinkoff/insertTinkoffPayInsertHandler.cjs | 20 +++++++------- .../payments/tinkoff/removeCustomer.cjs | 2 +- deep-packages/payments/tinkoff/resend.cjs | 2 +- payments-tinkoff-c2b.cjs | 26 +++++++++---------- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/deep-packages/payments/tinkoff/addCustomer.cjs b/deep-packages/payments/tinkoff/addCustomer.cjs index 8394fe6b..8947a0f6 100644 --- a/deep-packages/payments/tinkoff/addCustomer.cjs +++ b/deep-packages/payments/tinkoff/addCustomer.cjs @@ -11,7 +11,7 @@ const addCustomer = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, Token: generateToken(options) }, + data: { ...options, tokenTypeId: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs index 6e91e427..d20bcba7 100644 --- a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs @@ -18,9 +18,9 @@ async ( return next(); } - const TinkoffProvider = await deep.id("${paymentsPackageName}", "TinkoffProvider"); + const tinkoffProviderTypeLinkId = await deep.id("${paymentsPackageName}", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: TinkoffProvider + type_id: tinkoffProviderTypeLinkId }); if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; @@ -42,8 +42,8 @@ async ( console.log({mpUpCancellingPaymentLink}); if(mpUpcancellingPaymentLinkSelectQueryError) { throw new Error(mpUpcancellingPaymentLinkSelectQueryError.message); } - const Pay = await deep.id("${paymentsPackageName}", "Pay"); - const payLink = mpUpCancellingPaymentLink.find(link => link.type_id === Pay); + const payTypeLinkId = await deep.id("${paymentsPackageName}", "Pay"); + const payLink = mpUpCancellingPaymentLink.find(link => link.type_id === payTypeLinkId); console.log({payLink}); if(!payLink) { throw new Error("The pay link associated with cancelling payment link " + cancellingPaymentLink + " is not found.") } @@ -57,8 +57,8 @@ async ( } }); - const Sum = await deep.id("${paymentsPackageName}", "Sum") - const sumLink = mpUpPayment.find(link => link.type_id === Sum); + const sumTypeLinkId = await deep.id("${paymentsPackageName}", "Sum") + const sumLink = mpUpPayment.find(link => link.type_id === sumTypeLinkId); if(!sumLink) {throw new Error("Could not find sum link associated with the cancelling payment " + cancellingPaymentLink);} const Payed = await deep.id("${paymentsPackageName}", "Payed") diff --git a/deep-packages/payments/tinkoff/charge.cjs b/deep-packages/payments/tinkoff/charge.cjs index 1eb50e0b..f5b6b776 100644 --- a/deep-packages/payments/tinkoff/charge.cjs +++ b/deep-packages/payments/tinkoff/charge.cjs @@ -11,7 +11,7 @@ const charge = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, Token: generateToken(options) }, + data: { ...options, tokenTypeId: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/checkOrder.cjs b/deep-packages/payments/tinkoff/checkOrder.cjs index ea24d212..180fc0ad 100644 --- a/deep-packages/payments/tinkoff/checkOrder.cjs +++ b/deep-packages/payments/tinkoff/checkOrder.cjs @@ -11,7 +11,7 @@ const checkOrder = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, Token: generateToken(options) }, + data: { ...options, tokenTypeId: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/getCardList.cjs b/deep-packages/payments/tinkoff/getCardList.cjs index a40e0a35..1e970ed6 100644 --- a/deep-packages/payments/tinkoff/getCardList.cjs +++ b/deep-packages/payments/tinkoff/getCardList.cjs @@ -11,7 +11,7 @@ const getCardList = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, Token: generateToken(options) }, + data: { ...options, tokenTypeId: generateToken(options) }, }); const error = getError(response.data.ErrorCode || '0'); diff --git a/deep-packages/payments/tinkoff/getCustomer.cjs b/deep-packages/payments/tinkoff/getCustomer.cjs index 900b61b4..5731b67b 100644 --- a/deep-packages/payments/tinkoff/getCustomer.cjs +++ b/deep-packages/payments/tinkoff/getCustomer.cjs @@ -11,7 +11,7 @@ const getCustomer = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, Token: generateToken(options) }, + data: { ...options, tokenTypeId: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/getState.cjs b/deep-packages/payments/tinkoff/getState.cjs index 1196cc8e..3a36d592 100644 --- a/deep-packages/payments/tinkoff/getState.cjs +++ b/deep-packages/payments/tinkoff/getState.cjs @@ -8,7 +8,7 @@ const getState = async (options) => { const response = await axios({ method: 'post', url: getUrl('GetState'), - data: { ...options, Token: generateToken(options) }, + data: { ...options, tokenTypeId: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/init.cjs b/deep-packages/payments/tinkoff/init.cjs index 8d178167..6d3b1dd0 100644 --- a/deep-packages/payments/tinkoff/init.cjs +++ b/deep-packages/payments/tinkoff/init.cjs @@ -11,7 +11,7 @@ const init = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, Token: generateToken(options) }, + data: { ...options, tokenTypeId: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs index ea063053..4b4cc407 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs @@ -20,9 +20,9 @@ async ( const reqBody = req.body; console.log({reqBody}); - const TinkoffProvider = await deep.id("${packageName}", "TinkoffProvider"); + const tinkoffProviderTypeLinkId = await deep.id("${packageName}", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: TinkoffProvider + type_id: tinkoffProviderTypeLinkId }); if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} const tinkoffProviderId = tinkoffProviderLinkSelectQuery.data[0].id; @@ -45,8 +45,8 @@ async ( console.log({mpUpPayment}); if(mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } - const Pay = await deep.id("${packageName}", "Pay"); - const payLink = mpUpPayment.find(link => link.type_id === Pay); + const payTypeLinkId = await deep.id("${packageName}", "Pay"); + const payLink = mpUpPayment.find(link => link.type_id === payTypeLinkId); console.log({payLink}); if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } const confirm = ${confirm.toString()}; @@ -58,9 +58,9 @@ async ( const storageReceiverId = storageReceiverLinkSelectQuery.data[0].id; console.log({storageReceiverId}); - const Token = await deep.id("${packageName}", "Token"); + const tokenTypeId = await deep.id("${packageName}", "Token"); const tokenLinkSelectQuery = await deep.select({ - type_id: Token, + type_id: tokenTypeId, from_id: storageReceiverId, to_id: storageReceiverId }); diff --git a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs index 19549dfa..73bf45c7 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs @@ -7,9 +7,9 @@ const insertTinkoffPayInsertHandler = async ({packageName, deep, notificationUrl async ({ deep, require, data: { newLink } }) => { ${handlersDependencies} - const TinkoffProvider = await deep.id("${packageName}", "TinkoffProvider"); + const tinkoffProviderTypeLinkId = await deep.id("${packageName}", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: TinkoffProvider + type_id: tinkoffProviderTypeLinkId }); if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; @@ -23,13 +23,13 @@ async ({ deep, require, data: { newLink } }) => { console.log({mpDownPay}); if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } - const Payment = await deep.id("${packageName}", "Payment"); - const paymentLink = mpDownPay.find(link => link.type_id === Payment); + const paymentTypeLinkId = await deep.id("${packageName}", "Payment"); + const paymentLink = mpDownPay.find(link => link.type_id === paymentTypeLinkId); console.log({paymentLink}); if(!paymentLink) throw new Error("Payment link associated with the pay link " + newLink.id + " is not found."); - const Sum = await deep.id("${packageName}", "Sum"); - const sumLink = mpDownPay.find(link => link.type_id === Sum); + const sumTypeLinkId = await deep.id("${packageName}", "Sum"); + const sumLink = mpDownPay.find(link => link.type_id === sumTypeLinkId); console.log({sumLink}); if(!sumLink) throw new Error("Sum link associated with the pay link " + newLink.id + " is not found."); @@ -47,9 +47,9 @@ async ({ deep, require, data: { newLink } }) => { const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; console.log({storageBusinessLinkId}); - const Token = await deep.id("${packageName}", "Token"); + const tokenTypeLinkId = await deep.id("${packageName}", "Token"); const tokenLinkSelectQuery = await deep.select({ - type_id: Token, + type_id: tokenTypeLinkId, from_id: storageBusinessLinkId, to_id: storageBusinessLinkId }); @@ -104,9 +104,9 @@ async ({ deep, require, data: { newLink } }) => { throw new Error(errorMessage); } - const Url = await deep.id("${packageName}", "Url"); + const urlTypeLinkId = await deep.id("${packageName}", "Url"); const {error: urlLinkInsertQueryError} = await deep.insert({ - type_id: Url, + type_id: urlTypeLinkId, from_id: tinkoffProviderLinkId, to_id: newLink.id, string: { data: { value: initResult.response.PaymentURL } }, diff --git a/deep-packages/payments/tinkoff/removeCustomer.cjs b/deep-packages/payments/tinkoff/removeCustomer.cjs index b2057487..721eba4e 100644 --- a/deep-packages/payments/tinkoff/removeCustomer.cjs +++ b/deep-packages/payments/tinkoff/removeCustomer.cjs @@ -11,7 +11,7 @@ const removeCustomer = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, Token: generateToken(options) }, + data: { ...options, tokenTypeId: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/resend.cjs b/deep-packages/payments/tinkoff/resend.cjs index eb7a0338..1ddbc4cc 100644 --- a/deep-packages/payments/tinkoff/resend.cjs +++ b/deep-packages/payments/tinkoff/resend.cjs @@ -8,7 +8,7 @@ const resend = async (options) => { const response = await axios({ method: 'post', url: getUrl('Resend'), - data: { ...options, Token: generateToken(options) }, + data: { ...options, tokenTypeId: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index a7a3e34b..d9b8a68b 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -82,7 +82,7 @@ const installPackage = async () => { const deep = new DeepClient({ deep: guestDeep, ...admin }); try { - const User = await deep.id('@deep-foundation/core', 'User'); + const userTypeLinkId = await deep.id('@deep-foundation/core', 'User'); const typeTypeId = await deep.id('@deep-foundation/core', 'Type'); const anyTypeId = await deep.id('@deep-foundation/core', 'Any'); const joinTypeId = await deep.id('@deep-foundation/core', 'Join'); @@ -160,14 +160,14 @@ const installPackage = async () => { const Query = await deep.id('@deep-foundation/core', 'Query'); const usersId = await deep.id('deep', 'users'); - const BasePayment = await deep.id('@deep-foundation/payments', 'Payment'); - const BaseObject = await deep.id('@deep-foundation/payments', 'Object'); - const BaseSum = await deep.id('@deep-foundation/payments', 'Sum'); - const BasePay = await deep.id('@deep-foundation/payments', 'Pay'); - const BaseUrl = await deep.id('@deep-foundation/payments', 'Url'); - const BasePayed = await deep.id('@deep-foundation/payments', 'Payed'); - const BaseError = await deep.id('@deep-foundation/payments', 'Error'); - const Storage = await deep.id('@deep-foundation/payments', 'Storage'); + const basePaymentTypeLinkId = await deep.id('@deep-foundation/payments', 'Payment'); + const baseObjectTypeLinkId = await deep.id('@deep-foundation/payments', 'Object'); + const baseSumTypeLinkId = await deep.id('@deep-foundation/payments', 'Sum'); + const basePayTypeLinkId = await deep.id('@deep-foundation/payments', 'Pay'); + const baseUrlTypeLinkId = await deep.id('@deep-foundation/payments', 'Url'); + const basePayedTypeLinkId = await deep.id('@deep-foundation/payments', 'Payed'); + const baseErrorTypeLinkId = await deep.id('@deep-foundation/payments', 'Error'); + const storageTypeLinkId = await deep.id('@deep-foundation/payments', 'Storage'); const { data: [{ id: packageId }], @@ -961,7 +961,7 @@ const installPackage = async () => { allCreatedLinkIds.push(tokenLinkId); const { - data: [{ id: Product }], + data: [{ id: productTypeLinkId }], } = await deep.insert({ type_id: typeTypeId, from_id: anyTypeId, @@ -975,14 +975,14 @@ const installPackage = async () => { ], }, }); - console.log({ Product }); + console.log({ productTypeLinkId }); createdLinkIds.push(Product); allCreatedLinkIds.push(Product); const { data: [{ id: productLinkId }], } = await deep.insert({ - type_id: Product, + type_id: productTypeLinkId, in: { data: [ { @@ -1181,7 +1181,7 @@ const installPackage = async () => { const { data: [payLink], - } = await deep.select({ type_id: Pay }); + } = await deep.select({ type_id: payTypeLinkId }); const bankPaymentId = await getBankPaymentId( payLink?.value?.value ?? payLink.id From eb3642f7e5f9719f7c76ce3c01b219dd56a38b94 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 09:38:06 +0000 Subject: [PATCH 617/683] Export directly --- deep-packages/insertHandler.cjs | 4 ++-- deep-packages/insertNotificationHandler.cjs | 3 +-- .../payments/tinkoff/addCustomer.cjs | 6 ++--- ...rtTinkoffCancellingNotificationHandler.cjs | 3 +-- deep-packages/payments/tinkoff/charge.cjs | 6 ++--- deep-packages/payments/tinkoff/checkOrder.cjs | 6 ++--- deep-packages/payments/tinkoff/confirm.cjs | 6 ++--- deep-packages/payments/tinkoff/errors.cjs | 4 ++-- .../payments/tinkoff/fetchTinkoff.cjs | 23 +++++++++++++++++++ .../payments/tinkoff/generateToken.cjs | 6 ++--- .../payments/tinkoff/getCardList.cjs | 6 ++--- .../payments/tinkoff/getCustomer.cjs | 6 ++--- deep-packages/payments/tinkoff/getError.cjs | 3 +-- deep-packages/payments/tinkoff/getState.cjs | 6 ++--- deep-packages/payments/tinkoff/getUrl.cjs | 6 ++--- .../payments/tinkoff/handlersDependencies.cjs | 15 ++++++------ deep-packages/payments/tinkoff/init.cjs | 6 ++--- .../insertTinkoffNotificationHandler.cjs | 3 +-- .../tinkoff/insertTinkoffPayInsertHandler.cjs | 3 +-- .../payments/tinkoff/payInBrowser.cjs | 4 ++-- .../payments/tinkoff/removeCustomer.cjs | 6 ++--- deep-packages/payments/tinkoff/resend.cjs | 6 ++--- deep-packages/sleep.cjs | 3 +-- 23 files changed, 77 insertions(+), 63 deletions(-) create mode 100644 deep-packages/payments/tinkoff/fetchTinkoff.cjs diff --git a/deep-packages/insertHandler.cjs b/deep-packages/insertHandler.cjs index 99f7b278..07900063 100644 --- a/deep-packages/insertHandler.cjs +++ b/deep-packages/insertHandler.cjs @@ -1,4 +1,4 @@ -const insertHandler = async ({deep,fileTypeId, fileName, handlerName, handleName, triggerTypeId, code, supportsId, handleOperationTypeId, containTypeId, packageId, handlerTypeId}) => { +exports.insertHandler = async ({deep,fileTypeId, fileName, handlerName, handleName, triggerTypeId, code, supportsId, handleOperationTypeId, containTypeId, packageId, handlerTypeId}) => { return await deep.insert({ type_id: fileTypeId, in: { @@ -44,4 +44,4 @@ const insertHandler = async ({deep,fileTypeId, fileName, handlerName, handleName }); }; - exports.insertHandler = insertHandler; \ No newline at end of file + \ No newline at end of file diff --git a/deep-packages/insertNotificationHandler.cjs b/deep-packages/insertNotificationHandler.cjs index 3e357a9f..fce1c499 100644 --- a/deep-packages/insertNotificationHandler.cjs +++ b/deep-packages/insertNotificationHandler.cjs @@ -1,4 +1,4 @@ -const insertNotificationHandler = async ({deep, packageId,notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, handlerName, code}) => { +exports.insertNotificationHandler = async ({deep, packageId,notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, handlerName, code}) => { return await deep.insert( { type_id: portTypeId, @@ -82,4 +82,3 @@ return await deep.insert( ) } -exports.insertNotificationHandler = insertNotificationHandler; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/addCustomer.cjs b/deep-packages/payments/tinkoff/addCustomer.cjs index 8947a0f6..50adc985 100644 --- a/deep-packages/payments/tinkoff/addCustomer.cjs +++ b/deep-packages/payments/tinkoff/addCustomer.cjs @@ -1,9 +1,9 @@ -const axios = require('axios'); +exports.axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); -const addCustomer = async (options) => { +exports.addCustomer = async (options) => { try { const response = await axios({ method: 'post', @@ -30,4 +30,4 @@ const addCustomer = async (options) => { } }; - exports.addCustomer = addCustomer; \ No newline at end of file + \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs index d20bcba7..23fd6f1f 100644 --- a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs @@ -1,7 +1,7 @@ const { handlersDependencies } = require("../handlersDependencies.cjs"); const {insertNotificationHandler: baseInsertNotificationHandler} = require("../insertTinkoffNotificationHandler.cjs"); -const insertTinkoffCancellingNotificationHandler = async ({paymentsPackageName,deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { +exports.insertTinkoffCancellingNotificationHandler = async ({paymentsPackageName,deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { const code = ` async ( req, @@ -76,4 +76,3 @@ async ( return await baseInsertNotificationHandler({adminId, containTypeId, deep, fileTypeId, handlerName: "tinkoffNotificationHandler", handleRouteTypeId,handlerTypeId,notificationPort,notificationRoute,portTypeId,routerListeningTypeId,routerStringUseTypeId,routerTypeId,routeTypeId,supportsId, code}); } -exports.insertTinkoffCancellingNotificationHandler = insertTinkoffCancellingNotificationHandler; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/charge.cjs b/deep-packages/payments/tinkoff/charge.cjs index f5b6b776..98140500 100644 --- a/deep-packages/payments/tinkoff/charge.cjs +++ b/deep-packages/payments/tinkoff/charge.cjs @@ -1,9 +1,9 @@ -const axios = require('axios'); +exports.axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); -const charge = async (options) => { +exports.charge = async (options) => { try { const response = await axios({ method: 'post', @@ -30,4 +30,4 @@ const charge = async (options) => { } }; - exports.charge = charge; \ No newline at end of file + \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/checkOrder.cjs b/deep-packages/payments/tinkoff/checkOrder.cjs index 180fc0ad..4fb2cd61 100644 --- a/deep-packages/payments/tinkoff/checkOrder.cjs +++ b/deep-packages/payments/tinkoff/checkOrder.cjs @@ -1,9 +1,9 @@ -const axios = require('axios'); +exports.axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); -const checkOrder = async (options) => { +exports.checkOrder = async (options) => { try { const response = await axios({ method: 'post', @@ -30,4 +30,4 @@ const checkOrder = async (options) => { } }; - exports.checkOrder = checkOrder; \ No newline at end of file + \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/confirm.cjs b/deep-packages/payments/tinkoff/confirm.cjs index 5b3fcfe2..eaf55b42 100644 --- a/deep-packages/payments/tinkoff/confirm.cjs +++ b/deep-packages/payments/tinkoff/confirm.cjs @@ -3,7 +3,7 @@ const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); -const confirm = async (options) => { +exports.confirm = async (options) => { try { const response = await axios({ method: 'post', @@ -25,6 +25,4 @@ const confirm = async (options) => { response: null, }; } - }; - - exports.confirm = confirm; \ No newline at end of file + }; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/errors.cjs b/deep-packages/payments/tinkoff/errors.cjs index e1bc28c8..cab4c5df 100644 --- a/deep-packages/payments/tinkoff/errors.cjs +++ b/deep-packages/payments/tinkoff/errors.cjs @@ -1,4 +1,4 @@ -const errors = { +exports.errors = { 7: 'Покупатель не найден', 53: 'Обратитесь к продавцу', 99: 'Платеж отклонен', @@ -55,4 +55,4 @@ const errors = { 9999: 'Внутренняя ошибка системы', }; - exports.errors = errors; \ No newline at end of file + \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/fetchTinkoff.cjs b/deep-packages/payments/tinkoff/fetchTinkoff.cjs new file mode 100644 index 00000000..c8ab879f --- /dev/null +++ b/deep-packages/payments/tinkoff/fetchTinkoff.cjs @@ -0,0 +1,23 @@ + + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: { ...options, tokenTypeId: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + } \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/generateToken.cjs b/deep-packages/payments/tinkoff/generateToken.cjs index e3dde5c6..24b3eed7 100644 --- a/deep-packages/payments/tinkoff/generateToken.cjs +++ b/deep-packages/payments/tinkoff/generateToken.cjs @@ -1,4 +1,4 @@ -const crypto = require('crypto'); +exports.crypto = require('crypto'); const generateToken = (data) => { const { Receipt, DATA, Shops, ...restData } = data; @@ -24,5 +24,5 @@ const crypto = require('crypto'); `"${process.env.PAYMENTS_C2B_TERMINAL_PASSWORD}"` ); - exports.generateToken = generateToken; - exports.generateTokenStringWithInsertedTerminalPassword = generateTokenStringWithInsertedTerminalPassword; \ No newline at end of file + + \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/getCardList.cjs b/deep-packages/payments/tinkoff/getCardList.cjs index 1e970ed6..e84918eb 100644 --- a/deep-packages/payments/tinkoff/getCardList.cjs +++ b/deep-packages/payments/tinkoff/getCardList.cjs @@ -1,9 +1,9 @@ -const axios = require('axios'); +exports.axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); -const getCardList = async (options) => { +exports.getCardList = async (options) => { try { const response = await axios({ method: 'post', @@ -30,4 +30,4 @@ const getCardList = async (options) => { } }; - exports.getCardList = getCardList; \ No newline at end of file + \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/getCustomer.cjs b/deep-packages/payments/tinkoff/getCustomer.cjs index 5731b67b..c6a1bd06 100644 --- a/deep-packages/payments/tinkoff/getCustomer.cjs +++ b/deep-packages/payments/tinkoff/getCustomer.cjs @@ -1,9 +1,9 @@ -const axios = require('axios'); +exports.axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); -const getCustomer = async (options) => { +exports.getCustomer = async (options) => { try { const response = await axios({ method: 'post', @@ -30,4 +30,4 @@ const getCustomer = async (options) => { } }; - exports.getCustomer = getCustomer; \ No newline at end of file + \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/getError.cjs b/deep-packages/payments/tinkoff/getError.cjs index 620ebfe6..c6080a94 100644 --- a/deep-packages/payments/tinkoff/getError.cjs +++ b/deep-packages/payments/tinkoff/getError.cjs @@ -1,7 +1,6 @@ const {errors} = require("./errors.cjs"); -const getError = (errorCode) => +exports.getError = (errorCode) => errorCode === '0' ? undefined : errors[errorCode] || 'broken'; -exports.getError = getError; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/getState.cjs b/deep-packages/payments/tinkoff/getState.cjs index 3a36d592..96d40570 100644 --- a/deep-packages/payments/tinkoff/getState.cjs +++ b/deep-packages/payments/tinkoff/getState.cjs @@ -1,9 +1,9 @@ -const axios = require('axios'); +exports.axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); -const getState = async (options) => { +exports.getState = async (options) => { try { const response = await axios({ method: 'post', @@ -27,4 +27,4 @@ const getState = async (options) => { } }; - exports.getState = getState; \ No newline at end of file + \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/getUrl.cjs b/deep-packages/payments/tinkoff/getUrl.cjs index 3354a2c0..01466ada 100644 --- a/deep-packages/payments/tinkoff/getUrl.cjs +++ b/deep-packages/payments/tinkoff/getUrl.cjs @@ -1,4 +1,4 @@ -const getUrl = (method) => +exports.getUrl = (method) => `${process.env.PAYMENTS_C2B_URL}/${method}`; getUrlString = getUrl .toString() @@ -8,5 +8,5 @@ const getUrl = (method) => ); console.log({ getUrlString }); - exports.getUrl = getUrl; - exports.getUrlString = getUrlString; \ No newline at end of file + + \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/handlersDependencies.cjs b/deep-packages/payments/tinkoff/handlersDependencies.cjs index bfbd6b3b..4bdfbdd8 100644 --- a/deep-packages/payments/tinkoff/handlersDependencies.cjs +++ b/deep-packages/payments/tinkoff/handlersDependencies.cjs @@ -4,13 +4,12 @@ const { getUrlString } = require("./getUrl.cjs"); const { generateTokenStringWithInsertedTerminalPassword } = require("./generateToken.cjs"); -const handlersDependencies = ` -const crypto = require('crypto'); -const axios = require('axios'); -const errors = ${JSON.stringify(errors)}; -const getError = ${getError.toString()}; -const getUrl = ${getUrlString}; -const generateToken = ${generateTokenStringWithInsertedTerminalPassword}; +exports.handlersDependencies = ` +exports.crypto = require('crypto'); +exports.axios = require('axios'); +exports.errors = ${JSON.stringify(errors)}; +exports.getError = ${getError.toString()}; +exports.getUrl = ${getUrlString}; +exports.generateToken = ${generateTokenStringWithInsertedTerminalPassword}; `; -exports.handlersDependencies = handlersDependencies; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/init.cjs b/deep-packages/payments/tinkoff/init.cjs index 6d3b1dd0..6a485c45 100644 --- a/deep-packages/payments/tinkoff/init.cjs +++ b/deep-packages/payments/tinkoff/init.cjs @@ -1,9 +1,9 @@ -const axios = require('axios'); +exports.axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); -const init = async (options) => { +exports.init = async (options) => { try { const response = await axios({ method: 'post', @@ -30,4 +30,4 @@ const init = async (options) => { } }; - exports.init = init; \ No newline at end of file + \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs index 4b4cc407..b6cb0292 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs @@ -2,7 +2,7 @@ const {insertNotificationHandler: baseInsertNotificationHandler} = require("../. const {handlersDependencies} = require("./handlersDependencies.cjs"); const {confirm} = require("./confirm.cjs"); -const insertTinkoffNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, onConfirmedCode, onCheckedCode}) => { +exports.insertTinkoffNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, onConfirmedCode, onCheckedCode}) => { const code = ` async ( req, @@ -104,4 +104,3 @@ async ( return await baseInsertNotificationHandler({packageId, adminId, containTypeId, deep, fileTypeId, handlerName: "tinkoffNotificationHandler", handleRouteTypeId,handlerTypeId,notificationPort,notificationRoute,portTypeId,routerListeningTypeId,routerStringUseTypeId,routerTypeId,routeTypeId,supportsId, code}); } -exports.insertTinkoffNotificationHandler = insertTinkoffNotificationHandler; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs index 73bf45c7..e5571107 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs @@ -2,7 +2,7 @@ const { insertHandler } = require("../../insertHandler.cjs"); const {handlersDependencies} = require("./handlersDependencies.cjs"); const {init} = require("./init.cjs"); -const insertTinkoffPayInsertHandler = async ({packageName, deep, notificationUrl, userEmail, userPhone, fileTypeId, containTypeId, packageId, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, payTypeId}) => { +exports.insertTinkoffPayInsertHandler = async ({packageName, deep, notificationUrl, userEmail, userPhone, fileTypeId, containTypeId, packageId, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, payTypeId}) => { const code = ` async ({ deep, require, data: { newLink } }) => { ${handlersDependencies} @@ -124,4 +124,3 @@ async ({ deep, require, data: { newLink } }) => { return await insertHandler({deep, fileTypeId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeId: payTypeId, code, supportsId: dockerSupportsJsId, handleOperationTypeId: handleInsertTypeId, containTypeId, packageId, handlerTypeId, code}); } -exports.insertTinkoffPayInsertHandler = insertTinkoffPayInsertHandler; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/payInBrowser.cjs b/deep-packages/payments/tinkoff/payInBrowser.cjs index 7dd006ec..e62218ca 100644 --- a/deep-packages/payments/tinkoff/payInBrowser.cjs +++ b/deep-packages/payments/tinkoff/payInBrowser.cjs @@ -1,6 +1,6 @@ const {sleep} = require('./../../sleep.cjs'); -const payInBrowser = async ({ page, browser, url }) => { +exports.payInBrowser = async ({ page, browser, url }) => { await page.goto(url, { waitUntil: 'networkidle2' }); await sleep(5000); const oldForm = await page.evaluate(() => { @@ -97,4 +97,4 @@ const payInBrowser = async ({ page, browser, url }) => { await browser.close(); }; - exports.payInBrowser = payInBrowser; \ No newline at end of file + \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/removeCustomer.cjs b/deep-packages/payments/tinkoff/removeCustomer.cjs index 721eba4e..afe497a6 100644 --- a/deep-packages/payments/tinkoff/removeCustomer.cjs +++ b/deep-packages/payments/tinkoff/removeCustomer.cjs @@ -1,9 +1,9 @@ -const axios = require('axios'); +exports.axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); -const removeCustomer = async (options) => { +exports.removeCustomer = async (options) => { try { const response = await axios({ method: 'post', @@ -30,4 +30,4 @@ const removeCustomer = async (options) => { } }; - exports.removeCustomer = removeCustomer; \ No newline at end of file + \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/resend.cjs b/deep-packages/payments/tinkoff/resend.cjs index 1ddbc4cc..b80ea6c5 100644 --- a/deep-packages/payments/tinkoff/resend.cjs +++ b/deep-packages/payments/tinkoff/resend.cjs @@ -1,9 +1,9 @@ -const axios = require('axios'); +exports.axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); -const resend = async (options) => { +exports.resend = async (options) => { try { const response = await axios({ method: 'post', @@ -27,4 +27,4 @@ const resend = async (options) => { } }; - exports.resend = resend; \ No newline at end of file + \ No newline at end of file diff --git a/deep-packages/sleep.cjs b/deep-packages/sleep.cjs index 2f580a86..2363f045 100644 --- a/deep-packages/sleep.cjs +++ b/deep-packages/sleep.cjs @@ -1,3 +1,2 @@ -const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); +exports.sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); -exports.sleep = sleep; \ No newline at end of file From 512305cc42ab6f0f002a67ad3fb111c853b78a18 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 09:39:01 +0000 Subject: [PATCH 618/683] Remove unused code --- .../payments/tinkoff/fetchTinkoff.cjs | 23 ------ payments-tinkoff-c2b.cjs | 78 +------------------ 2 files changed, 1 insertion(+), 100 deletions(-) delete mode 100644 deep-packages/payments/tinkoff/fetchTinkoff.cjs diff --git a/deep-packages/payments/tinkoff/fetchTinkoff.cjs b/deep-packages/payments/tinkoff/fetchTinkoff.cjs deleted file mode 100644 index c8ab879f..00000000 --- a/deep-packages/payments/tinkoff/fetchTinkoff.cjs +++ /dev/null @@ -1,23 +0,0 @@ - - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: { ...options, tokenTypeId: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - } \ No newline at end of file diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index d9b8a68b..f9e720a3 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -82,13 +82,10 @@ const installPackage = async () => { const deep = new DeepClient({ deep: guestDeep, ...admin }); try { - const userTypeLinkId = await deep.id('@deep-foundation/core', 'User'); const typeTypeId = await deep.id('@deep-foundation/core', 'Type'); const anyTypeId = await deep.id('@deep-foundation/core', 'Any'); const joinTypeId = await deep.id('@deep-foundation/core', 'Join'); const containTypeId = await deep.id('@deep-foundation/core', 'Contain'); - const Value = await deep.id('@deep-foundation/core', 'Value'); - const String = await deep.id('@deep-foundation/core', 'String'); const packageTypeId = await deep.id('@deep-foundation/core', 'Package'); @@ -130,36 +127,6 @@ const installPackage = async () => { 'TreeIncludeDown' ); - const Rule = await deep.id('@deep-foundation/core', 'Rule'); - const RuleSubject = await deep.id('@deep-foundation/core', 'RuleSubject'); - const RuleObject = await deep.id('@deep-foundation/core', 'RuleObject'); - const RuleAction = await deep.id('@deep-foundation/core', 'RuleAction'); - const Selector = await deep.id('@deep-foundation/core', 'Selector'); - const SelectorInclude = await deep.id( - '@deep-foundation/core', - 'SelectorInclude' - ); - const SelectorExclude = await deep.id( - '@deep-foundation/core', - 'SelectorExclude' - ); - const SelectorTree = await deep.id('@deep-foundation/core', 'SelectorTree'); - const containTree = await deep.id('@deep-foundation/core', 'containTree'); - const AllowInsertType = await deep.id( - '@deep-foundation/core', - 'AllowInsertType' - ); - const AllowDeleteType = await deep.id( - '@deep-foundation/core', - 'AllowDeleteType' - ); - const SelectorFilter = await deep.id( - '@deep-foundation/core', - 'SelectorFilter' - ); - const Query = await deep.id('@deep-foundation/core', 'Query'); - const usersId = await deep.id('deep', 'users'); - const basePaymentTypeLinkId = await deep.id('@deep-foundation/payments', 'Payment'); const baseObjectTypeLinkId = await deep.id('@deep-foundation/payments', 'Object'); const baseSumTypeLinkId = await deep.id('@deep-foundation/payments', 'Sum'); @@ -1174,46 +1141,6 @@ const installPackage = async () => { } }; - /* - const testGetState = async () => { - console.log('testGetState-start'); - await testFinishAuthorize(); - - const { - data: [payLink], - } = await deep.select({ type_id: payTypeLinkId }); - - const bankPaymentId = await getBankPaymentId( - payLink?.value?.value ?? payLink.id - ); - - const getStateOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - PaymentId: bankPaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.error).to.equal(undefined); - console.log('testGetState-end'); - }; - - const testGetCardList = async () => { - console.log('testGetCardList-end'); - await testFinishAuthorize(); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.error).to.equal(undefined); - console.log('testGetCardList-end'); - }; - */ - const callTest = async (testFunction) => { const { createdLinks } = await testFunction(); for (const createdLink of createdLinks) { @@ -1233,12 +1160,9 @@ const installPackage = async () => { await callTest(testConfirm); await deep.delete(createdLinkIds); - - /*await testGetState(); - await testGetCardList();*/ }; - // await callRealizationTests(); + await callRealizationTests(); await callIntegrationTests(); }; From beaf2ef9c83d587c81f92fb21e462812fa10c3d7 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 09:40:24 +0000 Subject: [PATCH 619/683] Remove checked if branch and parameter onChecked --- .../payments/tinkoff/insertTinkoffNotificationHandler.cjs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs index b6cb0292..56a330eb 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs @@ -12,7 +12,7 @@ async ( ) => { ${handlersDependencies} - if(!(req.body.Status === "AUTHORIZED" || req.body.Status === "CONFIRMED" || req.body.Status === "CHECKED" )) { + if(!(req.body.Status === "AUTHORIZED" || req.body.Status === "CONFIRMED" )) { return next(); } @@ -94,8 +94,6 @@ async ( return confirmResult; } else if (req.body.Status === 'CONFIRMED') { ${onConfirmedCode} - } else if (req.body.Status === "CHECKED") { - ${onCheckedCode} } res.send('ok'); }; From 673e311d822c406daaddb52109c8e14a53b2544b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 09:40:57 +0000 Subject: [PATCH 620/683] Fix typo --- .../payments/tinkoff/insertTinkoffNotificationHandler.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs index 56a330eb..3bfda8c7 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs @@ -2,7 +2,7 @@ const {insertNotificationHandler: baseInsertNotificationHandler} = require("../. const {handlersDependencies} = require("./handlersDependencies.cjs"); const {confirm} = require("./confirm.cjs"); -exports.insertTinkoffNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, onConfirmedCode, onCheckedCode}) => { +exports.insertTinkoffNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, onConfirmedCode}) => { const code = ` async ( req, @@ -58,9 +58,9 @@ async ( const storageReceiverId = storageReceiverLinkSelectQuery.data[0].id; console.log({storageReceiverId}); - const tokenTypeId = await deep.id("${packageName}", "Token"); + const tokenTypeLinkId = await deep.id("${packageName}", "Token"); const tokenLinkSelectQuery = await deep.select({ - type_id: tokenTypeId, + type_id: tokenTypeLinkId, from_id: storageReceiverId, to_id: storageReceiverId }); From 59eb530012fdb0afbbba7b8747c59c56f0d237ce Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 09:41:10 +0000 Subject: [PATCH 621/683] Fix typo --- deep-packages/payments/tinkoff/addCustomer.cjs | 2 +- deep-packages/payments/tinkoff/charge.cjs | 2 +- deep-packages/payments/tinkoff/checkOrder.cjs | 2 +- deep-packages/payments/tinkoff/getCardList.cjs | 2 +- deep-packages/payments/tinkoff/getCustomer.cjs | 2 +- deep-packages/payments/tinkoff/getState.cjs | 2 +- deep-packages/payments/tinkoff/init.cjs | 2 +- deep-packages/payments/tinkoff/removeCustomer.cjs | 2 +- deep-packages/payments/tinkoff/resend.cjs | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/deep-packages/payments/tinkoff/addCustomer.cjs b/deep-packages/payments/tinkoff/addCustomer.cjs index 50adc985..e51bb749 100644 --- a/deep-packages/payments/tinkoff/addCustomer.cjs +++ b/deep-packages/payments/tinkoff/addCustomer.cjs @@ -11,7 +11,7 @@ exports.addCustomer = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, tokenTypeId: generateToken(options) }, + data: { ...options, tokenTypeLinkId: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/charge.cjs b/deep-packages/payments/tinkoff/charge.cjs index 98140500..7d7b64d9 100644 --- a/deep-packages/payments/tinkoff/charge.cjs +++ b/deep-packages/payments/tinkoff/charge.cjs @@ -11,7 +11,7 @@ exports.charge = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, tokenTypeId: generateToken(options) }, + data: { ...options, tokenTypeLinkId: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/checkOrder.cjs b/deep-packages/payments/tinkoff/checkOrder.cjs index 4fb2cd61..cbba8b0e 100644 --- a/deep-packages/payments/tinkoff/checkOrder.cjs +++ b/deep-packages/payments/tinkoff/checkOrder.cjs @@ -11,7 +11,7 @@ exports.checkOrder = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, tokenTypeId: generateToken(options) }, + data: { ...options, tokenTypeLinkId: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/getCardList.cjs b/deep-packages/payments/tinkoff/getCardList.cjs index e84918eb..a52bbb39 100644 --- a/deep-packages/payments/tinkoff/getCardList.cjs +++ b/deep-packages/payments/tinkoff/getCardList.cjs @@ -11,7 +11,7 @@ exports.getCardList = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, tokenTypeId: generateToken(options) }, + data: { ...options, tokenTypeLinkId: generateToken(options) }, }); const error = getError(response.data.ErrorCode || '0'); diff --git a/deep-packages/payments/tinkoff/getCustomer.cjs b/deep-packages/payments/tinkoff/getCustomer.cjs index c6a1bd06..f734107e 100644 --- a/deep-packages/payments/tinkoff/getCustomer.cjs +++ b/deep-packages/payments/tinkoff/getCustomer.cjs @@ -11,7 +11,7 @@ exports.getCustomer = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, tokenTypeId: generateToken(options) }, + data: { ...options, tokenTypeLinkId: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/getState.cjs b/deep-packages/payments/tinkoff/getState.cjs index 96d40570..051d0d96 100644 --- a/deep-packages/payments/tinkoff/getState.cjs +++ b/deep-packages/payments/tinkoff/getState.cjs @@ -8,7 +8,7 @@ exports.getState = async (options) => { const response = await axios({ method: 'post', url: getUrl('GetState'), - data: { ...options, tokenTypeId: generateToken(options) }, + data: { ...options, tokenTypeLinkId: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/init.cjs b/deep-packages/payments/tinkoff/init.cjs index 6a485c45..af6a8e10 100644 --- a/deep-packages/payments/tinkoff/init.cjs +++ b/deep-packages/payments/tinkoff/init.cjs @@ -11,7 +11,7 @@ exports.init = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, tokenTypeId: generateToken(options) }, + data: { ...options, tokenTypeLinkId: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/removeCustomer.cjs b/deep-packages/payments/tinkoff/removeCustomer.cjs index afe497a6..62e90dad 100644 --- a/deep-packages/payments/tinkoff/removeCustomer.cjs +++ b/deep-packages/payments/tinkoff/removeCustomer.cjs @@ -11,7 +11,7 @@ exports.removeCustomer = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, tokenTypeId: generateToken(options) }, + data: { ...options, tokenTypeLinkId: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/resend.cjs b/deep-packages/payments/tinkoff/resend.cjs index b80ea6c5..010ef914 100644 --- a/deep-packages/payments/tinkoff/resend.cjs +++ b/deep-packages/payments/tinkoff/resend.cjs @@ -8,7 +8,7 @@ exports.resend = async (options) => { const response = await axios({ method: 'post', url: getUrl('Resend'), - data: { ...options, tokenTypeId: generateToken(options) }, + data: { ...options, tokenTypeLinkId: generateToken(options) }, }); const error = getError(response.data.ErrorCode); From b2bd8805120314b0db3626ed32628a537662dd1e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 09:42:04 +0000 Subject: [PATCH 622/683] Format --- .../insertTinkoffNotificationHandler.cjs | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs index 3bfda8c7..acb618ac 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs @@ -68,30 +68,30 @@ async ( const tokenLink = tokenLinkSelectQuery.data[0]; console.log({tokenLink}); - const confirmOptions = { - TerminalKey: tokenLink.value.value, - PaymentId: req.body.PaymentId, - Amount: req.body.Amount, - // Receipt: req.body.Receipt, - }; - console.log({confirmOptions}); + const confirmOptions = { + TerminalKey: tokenLink.value.value, + PaymentId: req.body.PaymentId, + Amount: req.body.Amount, + // Receipt: req.body.Receipt, + }; + console.log({confirmOptions}); - const confirmResult = await confirm(confirmOptions); - console.log({confirmResult}); + const confirmResult = await confirm(confirmOptions); + console.log({confirmResult}); - if (confirmResult.error) { - const errorMessage = "Could not confirm the pay. " + confirmResult.error; - const {error: errorLinkInsertError} = await deep.insert({ - type_id: (await deep.id("${packageName}", "Error")), - from_id: tinkoffProviderId, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - }); - if(errorLinkInsertError) { throw new Error(errorLinkInsertError); } - throw new Error(errorMessage); - } + if (confirmResult.error) { + const errorMessage = "Could not confirm the pay. " + confirmResult.error; + const {error: errorLinkInsertError} = await deep.insert({ + type_id: (await deep.id("${packageName}", "Error")), + from_id: tinkoffProviderId, + to_id: payLink.id, + string: { data: { value: errorMessage } }, + }); + if(errorLinkInsertError) { throw new Error(errorLinkInsertError); } + throw new Error(errorMessage); + } - return confirmResult; + return confirmResult; } else if (req.body.Status === 'CONFIRMED') { ${onConfirmedCode} } From afc50ba0949b5cc44ff43d133291e3c632d1cbdb Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 09:46:20 +0000 Subject: [PATCH 623/683] Remove customer key from test parameters --- payments-tinkoff-c2b.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index f9e720a3..d2d8c8d1 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -963,7 +963,7 @@ const installPackage = async () => { createdLinkIds.push(productLinkId); allCreatedLinkIds.push(productLinkId); - const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { + const testInit = async (payTypeLinkId) => { console.log('testInit-start'); const createdLinkIds = []; @@ -1075,7 +1075,7 @@ const installPackage = async () => { } }; - const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { + const testFinishAuthorize = async (payTypeLinkId) => { console.log('testFinishAuthorize-start'); const { createdLinks } = await testInit({ customerKey }); @@ -1102,7 +1102,7 @@ const installPackage = async () => { } }; - const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { + const testConfirm = async (payTypeLinkId) => { console.log('testConfirm-start'); const { createdLinks } = await testFinishAuthorize({ customerKey }); From d067f60e9981c4b30c3a5396bccaeed608ecc675 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 09:46:58 +0000 Subject: [PATCH 624/683] Insert object with bankPaymentId field for payment link --- .../payments/tinkoff/insertTinkoffPayInsertHandler.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs index e5571107..85839443 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs @@ -115,7 +115,7 @@ async ({ deep, require, data: { newLink } }) => { console.log("paymentLink.value.value", paymentLink.value.value); console.log("paymentLink.value.value", paymentLink.value.value); - const paymentLinkValueUpdateQuery = await deep.update({link_id: {_eq: paymentLink.id}}, {value: {...paymentLink.value.value, bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); + const paymentLinkValueUpdateQuery = await deep.insert({link_id: {_eq: paymentLink.id}}, {value: {bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); if(paymentLinkValueUpdateQuery.error) { throw new Error(paymentLinkValueUpdateQuery.error.message); } return initResult; From 1a9ff9b6cefc295b97fd43f3486c31cb5d829f98 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 09:47:18 +0000 Subject: [PATCH 625/683] Revert "Remove customer key from test parameters" This reverts commit afc50ba0949b5cc44ff43d133291e3c632d1cbdb. --- payments-tinkoff-c2b.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index d2d8c8d1..f9e720a3 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -963,7 +963,7 @@ const installPackage = async () => { createdLinkIds.push(productLinkId); allCreatedLinkIds.push(productLinkId); - const testInit = async (payTypeLinkId) => { + const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testInit-start'); const createdLinkIds = []; @@ -1075,7 +1075,7 @@ const installPackage = async () => { } }; - const testFinishAuthorize = async (payTypeLinkId) => { + const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testFinishAuthorize-start'); const { createdLinks } = await testInit({ customerKey }); @@ -1102,7 +1102,7 @@ const installPackage = async () => { } }; - const testConfirm = async (payTypeLinkId) => { + const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { console.log('testConfirm-start'); const { createdLinks } = await testFinishAuthorize({ customerKey }); From 98c6fa31f5ef88c09126087234f5253d28fa7257 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 09:47:37 +0000 Subject: [PATCH 626/683] Remove customer key from tests parameters --- payments-tinkoff-c2b.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index f9e720a3..5d5fabd7 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -963,7 +963,7 @@ const installPackage = async () => { createdLinkIds.push(productLinkId); allCreatedLinkIds.push(productLinkId); - const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { + const testInit = async () => { console.log('testInit-start'); const createdLinkIds = []; @@ -1075,7 +1075,7 @@ const installPackage = async () => { } }; - const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { + const testFinishAuthorize = async () => { console.log('testFinishAuthorize-start'); const { createdLinks } = await testInit({ customerKey }); @@ -1102,7 +1102,7 @@ const installPackage = async () => { } }; - const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { + const testConfirm = async () => { console.log('testConfirm-start'); const { createdLinks } = await testFinishAuthorize({ customerKey }); From dea449902cc479b82146f813b4c86c5f7d24053f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 09:48:01 +0000 Subject: [PATCH 627/683] Do not create payment link with value --- payments-tinkoff-c2b.cjs | 1 - 1 file changed, 1 deletion(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 5d5fabd7..3c5e4395 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -972,7 +972,6 @@ const installPackage = async () => { data: [{ id: paymentLinkId }], } = await deep.insert({ type_id: paymentTypeId, - object: { data: { value: { orderId: uniqid() } } }, from_id: deep.linkId, to_id: storageBusinessLinkId, in: { From 3c4873c8ab626efa5bf14d12692f5209692f833b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 09:49:50 +0000 Subject: [PATCH 628/683] Use timestamp + paymentLink.id to create order id --- .../payments/tinkoff/insertTinkoffPayInsertHandler.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs index 85839443..25009dab 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs @@ -61,7 +61,7 @@ async ({ deep, require, data: { newLink } }) => { const options = { TerminalKey: tokenLink.value.value, - OrderId: paymentLink?.value?.value.orderId ?? paymentLink.id, + OrderId: "" + Date.now() + paymentLink.id, CustomerKey: deep.linkId, NotificationURL: "${notificationUrl}", PayType: 'T', From c95bb4f22d61c7a761a6f5c40c4ca98444e875ed Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 09:51:14 +0000 Subject: [PATCH 629/683] Fix typo --- deep-packages/payments/tinkoff/getUrl.cjs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/deep-packages/payments/tinkoff/getUrl.cjs b/deep-packages/payments/tinkoff/getUrl.cjs index 01466ada..f23bb797 100644 --- a/deep-packages/payments/tinkoff/getUrl.cjs +++ b/deep-packages/payments/tinkoff/getUrl.cjs @@ -1,12 +1,12 @@ exports.getUrl = (method) => `${process.env.PAYMENTS_C2B_URL}/${method}`; - getUrlString = getUrl - .toString() - .replace( - '${process.env.PAYMENTS_C2B_URL}', - process.env.PAYMENTS_C2B_URL - ); - console.log({ getUrlString }); +exports.getUrlString = exports.getUrl + .toString() + .replace( + '${process.env.PAYMENTS_C2B_URL}', + process.env.PAYMENTS_C2B_URL + ); +console.log({ getUrlString }); \ No newline at end of file From ce14db73c3e1cca097cff10226b8efe15e8e2696 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 09:53:30 +0000 Subject: [PATCH 630/683] Fix typo --- deep-packages/payments/tinkoff/addCustomer.cjs | 2 +- deep-packages/payments/tinkoff/charge.cjs | 2 +- deep-packages/payments/tinkoff/checkOrder.cjs | 2 +- deep-packages/payments/tinkoff/getCardList.cjs | 2 +- deep-packages/payments/tinkoff/getCustomer.cjs | 2 +- deep-packages/payments/tinkoff/getState.cjs | 2 +- deep-packages/payments/tinkoff/getUrl.cjs | 1 - deep-packages/payments/tinkoff/handlersDependencies.cjs | 2 +- deep-packages/payments/tinkoff/init.cjs | 2 +- deep-packages/payments/tinkoff/removeCustomer.cjs | 2 +- deep-packages/payments/tinkoff/resend.cjs | 2 +- 11 files changed, 10 insertions(+), 11 deletions(-) diff --git a/deep-packages/payments/tinkoff/addCustomer.cjs b/deep-packages/payments/tinkoff/addCustomer.cjs index e51bb749..33d9fe99 100644 --- a/deep-packages/payments/tinkoff/addCustomer.cjs +++ b/deep-packages/payments/tinkoff/addCustomer.cjs @@ -1,4 +1,4 @@ -exports.axios = require('axios'); +const axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); diff --git a/deep-packages/payments/tinkoff/charge.cjs b/deep-packages/payments/tinkoff/charge.cjs index 7d7b64d9..2b37dbdb 100644 --- a/deep-packages/payments/tinkoff/charge.cjs +++ b/deep-packages/payments/tinkoff/charge.cjs @@ -1,4 +1,4 @@ -exports.axios = require('axios'); +const axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); diff --git a/deep-packages/payments/tinkoff/checkOrder.cjs b/deep-packages/payments/tinkoff/checkOrder.cjs index cbba8b0e..c8825d2e 100644 --- a/deep-packages/payments/tinkoff/checkOrder.cjs +++ b/deep-packages/payments/tinkoff/checkOrder.cjs @@ -1,4 +1,4 @@ -exports.axios = require('axios'); +const axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); diff --git a/deep-packages/payments/tinkoff/getCardList.cjs b/deep-packages/payments/tinkoff/getCardList.cjs index a52bbb39..a3feb482 100644 --- a/deep-packages/payments/tinkoff/getCardList.cjs +++ b/deep-packages/payments/tinkoff/getCardList.cjs @@ -1,4 +1,4 @@ -exports.axios = require('axios'); +const axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); diff --git a/deep-packages/payments/tinkoff/getCustomer.cjs b/deep-packages/payments/tinkoff/getCustomer.cjs index f734107e..5facebaf 100644 --- a/deep-packages/payments/tinkoff/getCustomer.cjs +++ b/deep-packages/payments/tinkoff/getCustomer.cjs @@ -1,4 +1,4 @@ -exports.axios = require('axios'); +const axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); diff --git a/deep-packages/payments/tinkoff/getState.cjs b/deep-packages/payments/tinkoff/getState.cjs index 051d0d96..994702ec 100644 --- a/deep-packages/payments/tinkoff/getState.cjs +++ b/deep-packages/payments/tinkoff/getState.cjs @@ -1,4 +1,4 @@ -exports.axios = require('axios'); +const axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); diff --git a/deep-packages/payments/tinkoff/getUrl.cjs b/deep-packages/payments/tinkoff/getUrl.cjs index f23bb797..3dc0988e 100644 --- a/deep-packages/payments/tinkoff/getUrl.cjs +++ b/deep-packages/payments/tinkoff/getUrl.cjs @@ -6,7 +6,6 @@ exports.getUrlString = exports.getUrl '${process.env.PAYMENTS_C2B_URL}', process.env.PAYMENTS_C2B_URL ); -console.log({ getUrlString }); \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/handlersDependencies.cjs b/deep-packages/payments/tinkoff/handlersDependencies.cjs index 4bdfbdd8..6849d916 100644 --- a/deep-packages/payments/tinkoff/handlersDependencies.cjs +++ b/deep-packages/payments/tinkoff/handlersDependencies.cjs @@ -6,7 +6,7 @@ const { generateTokenStringWithInsertedTerminalPassword } = require("./generateT exports.handlersDependencies = ` exports.crypto = require('crypto'); -exports.axios = require('axios'); +const axios = require('axios'); exports.errors = ${JSON.stringify(errors)}; exports.getError = ${getError.toString()}; exports.getUrl = ${getUrlString}; diff --git a/deep-packages/payments/tinkoff/init.cjs b/deep-packages/payments/tinkoff/init.cjs index af6a8e10..ce3846f7 100644 --- a/deep-packages/payments/tinkoff/init.cjs +++ b/deep-packages/payments/tinkoff/init.cjs @@ -1,4 +1,4 @@ -exports.axios = require('axios'); +const axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); diff --git a/deep-packages/payments/tinkoff/removeCustomer.cjs b/deep-packages/payments/tinkoff/removeCustomer.cjs index 62e90dad..44343d80 100644 --- a/deep-packages/payments/tinkoff/removeCustomer.cjs +++ b/deep-packages/payments/tinkoff/removeCustomer.cjs @@ -1,4 +1,4 @@ -exports.axios = require('axios'); +const axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); diff --git a/deep-packages/payments/tinkoff/resend.cjs b/deep-packages/payments/tinkoff/resend.cjs index 010ef914..96add949 100644 --- a/deep-packages/payments/tinkoff/resend.cjs +++ b/deep-packages/payments/tinkoff/resend.cjs @@ -1,4 +1,4 @@ -exports.axios = require('axios'); +const axios = require('axios'); const { generateToken } = require("./generateToken.cjs"); const { getError } = require("./getError.cjs"); const { getUrl } = require("./getUrl.cjs"); From 469863cb556cd2524cd500267b52cd26addfa018 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 09:57:40 +0000 Subject: [PATCH 631/683] Fix typo --- .../payments/tinkoff/generateToken.cjs | 39 ++++++++++--------- .../payments/tinkoff/handlersDependencies.cjs | 2 +- payments-tinkoff-c2b.cjs | 6 +-- 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/deep-packages/payments/tinkoff/generateToken.cjs b/deep-packages/payments/tinkoff/generateToken.cjs index 24b3eed7..cecc9879 100644 --- a/deep-packages/payments/tinkoff/generateToken.cjs +++ b/deep-packages/payments/tinkoff/generateToken.cjs @@ -1,28 +1,29 @@ -exports.crypto = require('crypto'); +const crypto = require('crypto'); - const generateToken = (data) => { - const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { - Password: process.env.PAYMENTS_C2B_TERMINAL_PASSWORD, - ...restData, - }; - console.log({ dataWithPassword }); +exports.generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + Password: process.env.PAYMENTS_C2B_TERMINAL_PASSWORD, + ...restData, + }; + console.log({ dataWithPassword }); - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => `${acc}${item}`, ''); + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); console.log({ dataString }); const hash = crypto.createHash('sha256').update(dataString).digest('hex'); console.log({ hash }); return hash; - }; - const generateTokenStringWithInsertedTerminalPassword = generateToken - .toString() - .replace( - 'process.env.PAYMENTS_C2B_TERMINAL_PASSWORD', - `"${process.env.PAYMENTS_C2B_TERMINAL_PASSWORD}"` - ); +}; + +exports.generateTokenStringWithInsertedTerminalPassword = exports.generateToken +.toString() +.replace( + 'process.env.PAYMENTS_C2B_TERMINAL_PASSWORD', + `"${process.env.PAYMENTS_C2B_TERMINAL_PASSWORD}"` +); \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/handlersDependencies.cjs b/deep-packages/payments/tinkoff/handlersDependencies.cjs index 6849d916..9d65abd7 100644 --- a/deep-packages/payments/tinkoff/handlersDependencies.cjs +++ b/deep-packages/payments/tinkoff/handlersDependencies.cjs @@ -5,7 +5,7 @@ const { generateTokenStringWithInsertedTerminalPassword } = require("./generateT exports.handlersDependencies = ` -exports.crypto = require('crypto'); +const crypto = require('crypto'); const axios = require('axios'); exports.errors = ${JSON.stringify(errors)}; exports.getError = ${getError.toString()}; diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 3c5e4395..95314a8b 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -943,8 +943,8 @@ const installPackage = async () => { }, }); console.log({ productTypeLinkId }); - createdLinkIds.push(Product); - allCreatedLinkIds.push(Product); + createdLinkIds.push(productTypeLinkId); + allCreatedLinkIds.push(productTypeLinkId); const { data: [{ id: productLinkId }], @@ -1161,7 +1161,7 @@ const installPackage = async () => { await deep.delete(createdLinkIds); }; - await callRealizationTests(); + // await callRealizationTests(); await callIntegrationTests(); }; From 10bca3059118dbdf175da7adce43cca7931eaa06 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 09:59:38 +0000 Subject: [PATCH 632/683] Fix typo --- deep-packages/payments/tinkoff/handlersDependencies.cjs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deep-packages/payments/tinkoff/handlersDependencies.cjs b/deep-packages/payments/tinkoff/handlersDependencies.cjs index 9d65abd7..d810878a 100644 --- a/deep-packages/payments/tinkoff/handlersDependencies.cjs +++ b/deep-packages/payments/tinkoff/handlersDependencies.cjs @@ -7,9 +7,9 @@ const { generateTokenStringWithInsertedTerminalPassword } = require("./generateT exports.handlersDependencies = ` const crypto = require('crypto'); const axios = require('axios'); -exports.errors = ${JSON.stringify(errors)}; -exports.getError = ${getError.toString()}; -exports.getUrl = ${getUrlString}; -exports.generateToken = ${generateTokenStringWithInsertedTerminalPassword}; +const errors = ${JSON.stringify(errors)}; +const getError = ${getError.toString()}; +const getUrl = ${getUrlString}; +const generateToken = ${generateTokenStringWithInsertedTerminalPassword}; `; From 9d7d6dcdde0473c10407707405c055b35b57aa48 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 10:00:29 +0000 Subject: [PATCH 633/683] Do not pass customer key to tests --- payments-tinkoff-c2b.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 95314a8b..b90cff9a 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -1076,7 +1076,7 @@ const installPackage = async () => { const testFinishAuthorize = async () => { console.log('testFinishAuthorize-start'); - const { createdLinks } = await testInit({ customerKey }); + const { createdLinks } = await testInit(); const urlLink = createdLinks.find(link => link.type_id === urlTypeId); expect(urlLink).to.not.be.equal(undefined) @@ -1103,7 +1103,7 @@ const installPackage = async () => { const testConfirm = async () => { console.log('testConfirm-start'); - const { createdLinks } = await testFinishAuthorize({ customerKey }); + const { createdLinks } = await testFinishAuthorize(); const createdLinkIds = []; From a072957a6e1ffb7a653e21dd366fe558eae97de8 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 10:02:28 +0000 Subject: [PATCH 634/683] Fix typo --- .../payments/tinkoff/insertTinkoffPayInsertHandler.cjs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs index 25009dab..70346be7 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs @@ -113,10 +113,8 @@ async ({ deep, require, data: { newLink } }) => { }); if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } - console.log("paymentLink.value.value", paymentLink.value.value); - console.log("paymentLink.value.value", paymentLink.value.value); - const paymentLinkValueUpdateQuery = await deep.insert({link_id: {_eq: paymentLink.id}}, {value: {bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); - if(paymentLinkValueUpdateQuery.error) { throw new Error(paymentLinkValueUpdateQuery.error.message); } + const paymentLinkValueInsertQuery = await deep.insert({link_id: {_eq: paymentLink.id}}, {value: {bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); + if(paymentLinkValueInsertQuery.error) { throw new Error(paymentLinkValueInsertQuery.error.message); } return initResult; }; From 337905047284fec0792052ac3d881aa12dc3f417 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 16:07:41 +0000 Subject: [PATCH 635/683] Fix typo --- .../payments/tinkoff/insertTinkoffPayInsertHandler.cjs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs index 70346be7..2328908f 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs @@ -113,12 +113,13 @@ async ({ deep, require, data: { newLink } }) => { }); if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } - const paymentLinkValueInsertQuery = await deep.insert({link_id: {_eq: paymentLink.id}}, {value: {bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}); - if(paymentLinkValueInsertQuery.error) { throw new Error(paymentLinkValueInsertQuery.error.message); } + const paymentValueLinkInsertQuery await deep.insert({link_id: paymentLink.id, value: {bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}) + if(paymentValueLinkInsertQuery.error) { throw new Error(paymentValueLinkInsertQuery.error.message); } return initResult; }; `; + return await insertHandler({deep, fileTypeId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeId: payTypeId, code, supportsId: dockerSupportsJsId, handleOperationTypeId: handleInsertTypeId, containTypeId, packageId, handlerTypeId, code}); } From 44bb3a00f578bc1f637e1f7f6f7b3dd862a15c05 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 4 Dec 2022 16:43:19 +0000 Subject: [PATCH 636/683] Fix typos --- .../insertTinkoffNotificationHandler.cjs | 16 ++++++--- .../tinkoff/insertTinkoffPayInsertHandler.cjs | 3 +- payments-tinkoff-c2b.cjs | 35 ++++++++++++++++++- 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs index acb618ac..201ca5b8 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs @@ -25,16 +25,21 @@ async ( type_id: tinkoffProviderTypeLinkId }); if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderId = tinkoffProviderLinkSelectQuery.data[0].id; - console.log({tinkoffProviderId}); + const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; + console.log({tinkoffProviderLinkId}); + console.log(JSON.stringify(await deep.select({type_id: await deep.id("${packageName}", "Payment")}))) + console.log("Select args:" ,JSON.stringify({ + object: {value: {_contains: {bankPaymentId: req.body.PaymentId}}} + })) + const paymentLinkSelectQuery = await deep.select({ - object: {value: {_contains: {orderId: req.body.OrderId}}} + object: {value: {_contains: {bankPaymentId: parseInt(req.body.PaymentId)}}} }); if(paymentLinkSelectQuery.error) { throw new Error(paymentLinkSelectQuery.error.message); } const paymentLink = paymentLinkSelectQuery.data[0]; console.log({paymentLink}); - if(!paymentLink) { throw new Error("The payment link associated with the order id " + req.body.OrderId + " is not found."); } + if(!paymentLink) { throw new Error("The payment link associated with the bank payment id " + req.body.PaymentId + " is not found."); } const {data: mpUpPayment, error: mpUpPaymentSelectQueryError} = await deep.select({ up: { @@ -49,6 +54,7 @@ async ( const payLink = mpUpPayment.find(link => link.type_id === payTypeLinkId); console.log({payLink}); if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } + const confirm = ${confirm.toString()}; const storageReceiverLinkSelectQuery = await deep.select({ @@ -83,7 +89,7 @@ async ( const errorMessage = "Could not confirm the pay. " + confirmResult.error; const {error: errorLinkInsertError} = await deep.insert({ type_id: (await deep.id("${packageName}", "Error")), - from_id: tinkoffProviderId, + from_id: tinkoffProviderLinkId, to_id: payLink.id, string: { data: { value: errorMessage } }, }); diff --git a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs index 2328908f..304a928c 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs @@ -113,8 +113,9 @@ async ({ deep, require, data: { newLink } }) => { }); if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } - const paymentValueLinkInsertQuery await deep.insert({link_id: paymentLink.id, value: {bankPaymentId: initResult.response.PaymentId}}, {table: "objects"}) + const paymentValueLinkInsertQuery = await deep.insert({link_id: paymentLink.id, value: {bankPaymentId: parseInt(initResult.response.PaymentId)}}, {table: "objects"}) if(paymentValueLinkInsertQuery.error) { throw new Error(paymentValueLinkInsertQuery.error.message); } + console.log(JSON.stringify(paymentValueLinkInsertQuery)); return initResult; }; diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index b90cff9a..906d269b 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -61,6 +61,9 @@ for (const requiredEnvVariableName of requiredEnvVariableNames) { } } +// console.log(process.env.PAYMENTS_C2B_NOTIFICATION_URL); +// process.exit(1); + const allCreatedLinkIds = []; const installPackage = async () => { @@ -505,7 +508,37 @@ const installPackage = async () => { await insertTinkoffPayInsertHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",deep, containTypeId, fileTypeId: syncTextFileTypeId, handleInsertTypeId, handlerTypeId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE, dockerSupportsJsId, payTypeId}); const tinkoffNotificationOnConfirmedCode = ` - + + const tinkoffProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: tinkoffProviderTypeLinkId + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; + console.log({tinkoffProviderLinkId}); + + const paymentLinkSelectQuery = await deep.select({ + object: {value: {_contains: {bankPaymentId: parseInt(req.body.PaymentId)}}} + }); + if(paymentLinkSelectQuery.error) { throw new Error(paymentLinkSelectQuery.error.message); } + const paymentLink = paymentLinkSelectQuery.data[0]; + console.log({paymentLink}); + if(!paymentLink) { throw new Error("The payment link associated with the bank payment id " + req.body.PaymentId + " is not found."); } + + const {data: mpUpPayment, error: mpUpPaymentSelectQueryError} = await deep.select({ + up: { + parent_id: { _eq: paymentLink.id }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } + } + }); + console.log({mpUpPayment}); + if(mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } + + const payTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + const payLink = mpUpPayment.find(link => link.type_id === payTypeLinkId); + console.log({payLink}); + if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } + const payedLinkInsertQuery = await deep.insert({ type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), from_id: tinkoffProviderLinkId, From 600670f60cd524ec8c60d7c72bdcb3afa8655f0d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 5 Dec 2022 06:35:41 +0000 Subject: [PATCH 637/683] Rename: Type -> typeTypeLinkId --- ...ertTinkoffCancellingNotificationHandler.cjs | 4 ++-- ...insertTinkoffCancellingPayInsertHandler.cjs | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs index eac1088a..d48acdfa 100644 --- a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs @@ -62,9 +62,9 @@ async ( const sumLink = mpUpPayment.find(link => link.type_id === sumTypeLinkId); if(!sumLink) {throw new Error("Could not find sum link associated with the cancelling payment " + cancellingPaymentLink);} - const Payed = await deep.id("${paymentsPackageName}", "Payed") + const payedTypeLinkId = await deep.id("${paymentsPackageName}", "Payed") const payedInsertLinkInsertQuery = await deep.insert({ - type_id: Payed, + type_id: payedTypeLinkId, from_id: tinkoffProviderLink.id, to_id: sumLink.id, }); diff --git a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs index 6a6b064d..68fcb0dd 100644 --- a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs @@ -16,26 +16,26 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({mpDownPay}); if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } - const CancellingPayment = await deep.id("${cancellingPaymentsPackageName}", "CancellingPayment"); - const cancellingPaymentLink = mpDownPay.find(link => link.type_id === CancellingPayment); + const cancellingPaymentTypeLinkId = await deep.id("${cancellingPaymentsPackageName}", "CancellingPayment"); + const cancellingPaymentLink = mpDownPay.find(link => link.type_id === cancellingPaymentTypeLinkId); console.log({cancellingPaymentLink}); if(!cancellingPaymentLink) { return; } - const TinkoffProvider = await deep.id("${paymentsPackageName}", "TinkoffProvider"); + const tinkoffProviderTypeLinkId = await deep.id("${paymentsPackageName}", "TinkoffProvider"); const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: TinkoffProvider + type_id: tinkoffProviderTypeLinkId }); if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; - const Sum = await deep.id("${paymentsPackageName}", "Sum"); - const sumLink = mpDownPay.find(link => link.type_id === Sum); + const sumTypeLinkId = await deep.id("${paymentsPackageName}", "Sum"); + const sumLink = mpDownPay.find(link => link.type_id === sumTypeLinkId); console.log({sumLink}); if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); - const Url = await deep.id("${paymentsPackageName}", "Url"); + const urlTypeLinkId = await deep.id("${paymentsPackageName}", "Url"); const cancelledPaymentLinkSelectQuery = await deep.select({ id: cancellingPaymentLink.from_id @@ -44,9 +44,9 @@ async ({ deep, require, data: { newLink: payLink } }) => { const cancelledPaymentLink = cancelledPaymentLinkSelectQuery.data[0]; console.log({cancelledPaymentLink}); - const Income = await deep.id("${paymentsPackageName}", "Income"); + const incomeTypeLinkId = await deep.id("${paymentsPackageName}", "Income"); const incomeLinkInsertQuery = await deep.insert({ - type_id: Income, + type_id: incomeTypeLinkId, from_id: cancellingPaymentLink.id, to_id: cancelledPaymentLink.to_id }); From 69ae87ade7265737bd3cd4df05019d270fe8c39d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 5 Dec 2022 06:35:55 +0000 Subject: [PATCH 638/683] Remove customer key parameter from tests --- payments-tinkoff-c2b-cancelling.cjs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index b21bf3d6..3380fbba 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -724,7 +724,7 @@ const installPackage = async () => { createdLinkIds.push(productId); allCreatedLinkIds.push(productId); - const testInit = async ({ customerKey } = { customerKey: uniqid() }) => { + const testInit = async () => { console.log('testInit-start'); const createdLinkIds = []; @@ -836,7 +836,7 @@ const installPackage = async () => { } }; - const testFinishAuthorize = async ({ customerKey } = { customerKey: uniqid() }) => { + const testFinishAuthorize = async () => { console.log('testFinishAuthorize-start'); const { createdLinks } = await testInit({ customerKey }); @@ -863,7 +863,7 @@ const installPackage = async () => { } }; - const testConfirm = async ({ customerKey } = { customerKey: uniqid() }) => { + const testConfirm = async () => { console.log('testConfirm-start'); const { createdLinks } = await testFinishAuthorize({ customerKey }); @@ -904,7 +904,7 @@ const installPackage = async () => { const callCancelTests = async () => { console.log('testCancel-start'); - const testCancelAfterPayAfterConfirmFullPrice = async ({ customerKey } = { customerKey: uniqid() }) => { + const testCancelAfterPayAfterConfirmFullPrice = async () => { console.log('testCancelAfterPayAfterConfirmFullPrice-start'); const { createdLinks } = await testConfirm({ customerKey }); @@ -998,7 +998,7 @@ const installPackage = async () => { }; }; - const testCancelAfterPayAfterConfirmCustomPriceX2 = async ({ customerKey } = { customerKey: uniqid() }) => { + const testCancelAfterPayAfterConfirmCustomPriceX2 = async () => { console.log('testCancelAfterPayAfterConfirmCustomPriceX2-start'); const { createdLinks } = await testConfirm({ customerKey }); @@ -1096,7 +1096,7 @@ const installPackage = async () => { } }; - const testCancelBeforePay = async ({ customerKey } = { customerKey: uniqid() }) => { + const testCancelBeforePay = async () => { console.log('testCancelBeforePay-start'); const { createdLinks } = await testInit({ customerKey }); From 50c63b572423dcf05d66099fe119c37cb6713515 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 5 Dec 2022 07:10:17 +0000 Subject: [PATCH 639/683] Move realization tests to separate files --- .../tests/realization/testAddCustomer.cjs | 18 ++ .../tinkoff/tests/realization/testCharge.cjs | 53 ++++ .../tinkoff/tests/realization/testConfirm.cjs | 30 ++ .../tests/realization/testGetCardList.cjs | 25 ++ .../tests/realization/testGetCustomer.cjs | 29 ++ .../tests/realization/testGetState.cjs | 25 ++ .../tinkoff/tests/realization/testInit.cjs | 37 +++ .../tests/realization/testRemoveCustomer.cjs | 26 ++ .../tinkoff/tests/realization/testResend.cjs | 16 + payments-tinkoff-c2b.cjs | 300 ++---------------- 10 files changed, 277 insertions(+), 282 deletions(-) create mode 100644 deep-packages/payments/tinkoff/tests/realization/testAddCustomer.cjs create mode 100644 deep-packages/payments/tinkoff/tests/realization/testCharge.cjs create mode 100644 deep-packages/payments/tinkoff/tests/realization/testConfirm.cjs create mode 100644 deep-packages/payments/tinkoff/tests/realization/testGetCardList.cjs create mode 100644 deep-packages/payments/tinkoff/tests/realization/testGetCustomer.cjs create mode 100644 deep-packages/payments/tinkoff/tests/realization/testGetState.cjs create mode 100644 deep-packages/payments/tinkoff/tests/realization/testInit.cjs create mode 100644 deep-packages/payments/tinkoff/tests/realization/testRemoveCustomer.cjs create mode 100644 deep-packages/payments/tinkoff/tests/realization/testResend.cjs diff --git a/deep-packages/payments/tinkoff/tests/realization/testAddCustomer.cjs b/deep-packages/payments/tinkoff/tests/realization/testAddCustomer.cjs new file mode 100644 index 00000000..3452a78e --- /dev/null +++ b/deep-packages/payments/tinkoff/tests/realization/testAddCustomer.cjs @@ -0,0 +1,18 @@ +const { expect } = require('chai'); +const { addCustomer } = require('../../addCustomer.cjs'); + +exports.testAddCustomer = async ({customerKey,terminalKey}) => { + console.log('testAddCustomer-start'); + + const addCustomerOptions = { + TerminalKey: terminalKey, + CustomerKey: customerKey, + }; + console.log({ addCustomerOptions }); + + const addCustomerResult = await addCustomer(addCustomerOptions); + console.log({ addCustomerResult }); + + expect(addCustomerResult.error).to.equal(undefined); + console.log('testAddCustomer-end'); + }; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/tests/realization/testCharge.cjs b/deep-packages/payments/tinkoff/tests/realization/testCharge.cjs new file mode 100644 index 00000000..af15238a --- /dev/null +++ b/deep-packages/payments/tinkoff/tests/realization/testCharge.cjs @@ -0,0 +1,53 @@ +const { expect } = require('chai'); +const { charge } = require('../../charge.cjs'); +const { getCardList } = require('../../getCardList.cjs'); +const { getState } = require('../../getState.cjs'); +const { payInBrowser } = require('../../payInBrowser.cjs'); +const { testInit } = require('./testInit.cjs'); +const puppeteer = require('puppeteer'); + +exports.testCharge = async ({amount, customerKey,orderId,terminalKey, email, phone}) => { + console.log('testCharge-start'); + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initResult = await testInit({amount, customerKey,orderId,terminalKey, email, phone}); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getCardListOptions = { + TerminalKey: terminalKey, + CustomerKey: customerKey, + }; + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.response[0].RebillId).to.have.length.above(0); + + const getStateOptions = { + TerminalKey: terminalKey, + PaymentId: initResult.response.PaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.response.Status).to.equal('AUTHORIZED'); + + const newInitResult = await testInit({amount, customerKey,orderId,terminalKey, email, phone}); + + + const newChargeOptions = { + TerminalKey: terminalKey, + PaymentId: newInitResult.response.PaymentId, + RebillId: Number(getCardListResult.response[0].RebillId), + }; + + const chargeResult = await charge(newChargeOptions); + + expect(chargeResult.error).to.equal(undefined); + console.log('testCharge-end'); + }; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/tests/realization/testConfirm.cjs b/deep-packages/payments/tinkoff/tests/realization/testConfirm.cjs new file mode 100644 index 00000000..d84b9773 --- /dev/null +++ b/deep-packages/payments/tinkoff/tests/realization/testConfirm.cjs @@ -0,0 +1,30 @@ +const { expect } = require('chai'); +const { confirm } = require('../../confirm.cjs'); +const { payInBrowser } = require('../../payInBrowser.cjs'); +const { testInit } = require('./testInit.cjs'); +const puppeteer = require('puppeteer'); + +exports.testConfirm = async ({amount, customerKey,orderId,terminalKey, email, phone}) => { + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + + const initResult = await testInit({amount, customerKey,orderId,terminalKey, email, phone}); + + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const confirmOptions = { + TerminalKey: terminalKey, + PaymentId: initResult.response.PaymentId, + }; + + const confirmResult = await confirm(confirmOptions); + + expect(confirmResult.error).to.equal(undefined); + expect(confirmResult.response.Status).to.equal('CONFIRMED'); + + return confirmResult; + }; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/tests/realization/testGetCardList.cjs b/deep-packages/payments/tinkoff/tests/realization/testGetCardList.cjs new file mode 100644 index 00000000..0eea14cd --- /dev/null +++ b/deep-packages/payments/tinkoff/tests/realization/testGetCardList.cjs @@ -0,0 +1,25 @@ +const { expect } = require('chai'); +const { payInBrowser } = require('../../payInBrowser.cjs'); +const { testInit } = require('./testInit.cjs'); +const puppeteer = require('puppeteer'); + +exports.testGetCardList = async ({amount, customerKey,orderId,terminalKey, email, phone}) => { + const initResult = await testInit({amount, customerKey,orderId,terminalKey, email, phone}); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getCardListOptions = { + TerminalKey: terminalKey, + CustomerKey: customerKey, + }; + + const getCardListResult = await getCardList(getCardListOptions); + + expect(getCardListResult.error).to.equal(undefined); + }; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/tests/realization/testGetCustomer.cjs b/deep-packages/payments/tinkoff/tests/realization/testGetCustomer.cjs new file mode 100644 index 00000000..5da286c2 --- /dev/null +++ b/deep-packages/payments/tinkoff/tests/realization/testGetCustomer.cjs @@ -0,0 +1,29 @@ +const {testAddCustomer} = require('./testAddCustomer.cjs'); +const {getCustomer} = require('./../../getCustomer.cjs'); + +exports.testGetCustomer = async ({customerKey,terminalKey, phone}) => { + console.log('testGetCustomer-start'); + + const customerOptions = { + TerminalKey: terminalKey, + CustomerKey: customerKey, + }; + + const addCustomerDataOptions = { + ...customerOptions, + Phone: phone, + }; + + const addResult = await testAddCustomer(addCustomerDataOptions); + + expect(addResult.error).to.equal(undefined); + + const getResult = await getCustomer(customerOptions); + + expect(getResult.error).to.equal(undefined); + expect(getResult.response.Phone).to.equal( + phone + ); + + console.log('testGetCustomer-end'); + }; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/tests/realization/testGetState.cjs b/deep-packages/payments/tinkoff/tests/realization/testGetState.cjs new file mode 100644 index 00000000..04704ddf --- /dev/null +++ b/deep-packages/payments/tinkoff/tests/realization/testGetState.cjs @@ -0,0 +1,25 @@ +const { expect } = require('chai'); +const { payInBrowser } = require('../../payInBrowser.cjs'); +const { testInit } = require('./testInit.cjs'); +const puppeteer = require('puppeteer'); + +exports.testGetState = async ({amount, customerKey,orderId,terminalKey, email, phone}) => { + const initResult = await testInit({amount, customerKey,orderId,terminalKey, email, phone}); + + const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); + const page = await browser.newPage(); + await payInBrowser({ + browser, + page, + url: initResult.response.PaymentURL, + }); + + const getStateOptions = { + TerminalKey: terminalKey, + PaymentId: initResult.response.PaymentId, + }; + + const getStateResult = await getState(getStateOptions); + + expect(getStateResult.error).to.equal(undefined); + }; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/tests/realization/testInit.cjs b/deep-packages/payments/tinkoff/tests/realization/testInit.cjs new file mode 100644 index 00000000..50f83e68 --- /dev/null +++ b/deep-packages/payments/tinkoff/tests/realization/testInit.cjs @@ -0,0 +1,37 @@ +const { expect } = require('chai'); + +exports.testInit = async ({amount, customerKey,orderId,terminalKey, email, phone}) => { + const initOptions = { + TerminalKey: terminalKey, + OrderId: orderId, + Amount: amount, + Description: 'Test shopping', + CustomerKey: customerKey, + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: email, + Phone: phone, + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: PRICE, + // Quantity: 1, + // Amount: PRICE, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: process.env.PAYMENTS_C2B_EMAIL, + // Phone: process.env.PAYMENTS_C2B_PHONE, + // Taxation: 'usn_income', + // }, + }; + + const initResult = await init(initOptions); + + expect(initResult.error).to.equal(undefined); + + return initResult; + }; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/tests/realization/testRemoveCustomer.cjs b/deep-packages/payments/tinkoff/tests/realization/testRemoveCustomer.cjs new file mode 100644 index 00000000..051524d5 --- /dev/null +++ b/deep-packages/payments/tinkoff/tests/realization/testRemoveCustomer.cjs @@ -0,0 +1,26 @@ +const { removeCustomer } = require("../../removeCustomer.cjs"); +const { testAddCustomer } = require("./testAddCustomer.cjs"); + +exports.testRemoveCustomer = async ({customerKey,terminalKey, phone}) => { + console.log('testRemoveCustomer-start'); + + const removeCustomerData = { + TerminalKey: terminalKey, + CustomerKey: customerKey, + }; + + const newAddCustomerData = { + ...removeCustomerData, + Phone: phone, + }; + + const addResult = await testAddCustomer(newAddCustomerData); + + expect(addResult.error).to.equal(undefined); + + const removeResult = await removeCustomer(removeCustomerData); + + expect(removeResult.error).to.equal(undefined); + + console.log('testRemoveCustomer-end'); + }; \ No newline at end of file diff --git a/deep-packages/payments/tinkoff/tests/realization/testResend.cjs b/deep-packages/payments/tinkoff/tests/realization/testResend.cjs new file mode 100644 index 00000000..5a70c541 --- /dev/null +++ b/deep-packages/payments/tinkoff/tests/realization/testResend.cjs @@ -0,0 +1,16 @@ +const { expect } = require('chai'); +const {resend} = require('../../resend.cjs'); + +exports.testResend = async ({terminalKey}) => { + console.log('testResend-start'); + const resendOptions = { + TerminalKey: terminalKey, + }; + console.log({ resendOptions }); + + const resendResult = await resend(resendOptions); + console.log({ resendResult }); + + expect(resendResult.error).to.equal(undefined); + console.log('testResend-end'); + }; \ No newline at end of file diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 906d269b..f88a7cab 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -38,6 +38,15 @@ const { insertTinkoffPayInsertHandler } = require("./deep-packages/payments/tink const { insertTinkoffNotificationHandler } = require("./deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs"); const {sleep} = require("./deep-packages/sleep.cjs"); const {confirm} = require("./deep-packages/payments/tinkoff/confirm.cjs"); +const {testInit: callRealizationTestInit} = require('./deep-packages/payments/tinkoff/tests/realization/testInit.cjs'); +const {testConfirm: callRealizationTestConfirm} = require('./deep-packages/payments/tinkoff/tests/realization/testConfirm.cjs'); +const {testGetState: callRealizationTestGetState} = require('./deep-packages/payments/tinkoff/tests/realization/testGetState.cjs'); +const {testGetCardList: callRealizationTestGetCardList} = require('./deep-packages/payments/tinkoff/tests/realization/testGetCardList.cjs'); +const {testResend: callRealizationTestResend} = require('./deep-packages/payments/tinkoff/tests/realization/testResend.cjs'); +const {testCharge: callRealizationTestCharge} = require('./deep-packages/payments/tinkoff/tests/realization/testCharge.cjs'); +const {testAddCustomer: callRealizationTestAddCustomer} = require('./deep-packages/payments/tinkoff/tests/realization/testAddCustomer.cjs'); +const {testGetCustomer: callRealizationTestGetCustomer} = require('./deep-packages/payments/tinkoff/tests/realization/testGetCustomer.cjs'); +const {testRemoveCustomer: callRealizationTestRemoveCustomer} = require('./deep-packages/payments/tinkoff/tests/realization/testRemoveCustomer.cjs'); console.log('Installing payments-tinkoff-c2b package'); @@ -601,288 +610,15 @@ const installPackage = async () => { const PRICE = 5500; const callRealizationTests = async () => { - const testInit = async () => { - const initOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - OrderId: uniqid(), - Amount: PRICE, - Description: 'Test shopping', - CustomerKey: deep.linkId, - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: process.env.PAYMENTS_C2B_EMAIL, - Phone: process.env.PAYMENTS_C2B_PHONE, - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENTS_C2B_EMAIL, - // Phone: process.env.PAYMENTS_C2B_PHONE, - // Taxation: 'usn_income', - // }, - }; - - const initResult = await init(initOptions); - - expect(initResult.error).to.equal(undefined); - - return initResult; - }; - - const testConfirm = async () => { - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - PayType: 'T', - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: PRICE, - // Quantity: 1, - // Amount: PRICE, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: process.env.PAYMENTS_C2B_EMAIL, - // Phone: process.env.PAYMENTS_C2B_PHONE, - // Taxation: 'usn_income', - // }, - }; - - const initResult = await init(initOptions); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const confirmOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const confirmResult = await confirm(confirmOptions); - - expect(confirmResult.error).to.equal(undefined); - expect(confirmResult.response.Status).to.equal('CONFIRMED'); - - return confirmResult; - }; - - const testGetState = async () => { - const initResult = await init({ - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Amount: PRICE, - }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getStateOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.error).to.equal(undefined); - }; - - const testGetCardList = async () => { - const initResult = await init({ - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - CustomerKey: deep.linkId, - OrderId: uniqid(), - Amount: PRICE, - Recurrent: 'Y', - }); - - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.error).to.equal(undefined); - }; - - const testResend = async () => { - console.log('testResend-start'); - const resendOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - }; - console.log({ resendOptions }); - - const resendResult = await resend(resendOptions); - console.log({ resendResult }); - - expect(resendResult.error).to.equal(undefined); - console.log('testResend-end'); - }; - - const testCharge = async () => { - console.log('testCharge-start'); - const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); - const page = await browser.newPage(); - - const initResult = await init({ - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - Recurrent: 'Y', - }); - - await payInBrowser({ - browser, - page, - url: initResult.response.PaymentURL, - }); - - const getCardListOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - CustomerKey: deep.linkId, - }; - - const getCardListResult = await getCardList(getCardListOptions); - - expect(getCardListResult.response[0].RebillId).to.have.length.above(0); - - const getStateOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - PaymentId: initResult.response.PaymentId, - }; - - const getStateResult = await getState(getStateOptions); - - expect(getStateResult.response.Status).to.equal('AUTHORIZED'); - - const newInitResult = await init({ - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - Amount: PRICE, - OrderId: uniqid(), - CustomerKey: deep.linkId, - }); - - const newChargeOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - PaymentId: newInitResult.response.PaymentId, - RebillId: Number(getCardListResult.response[0].RebillId), - }; - - const chargeResult = await charge(newChargeOptions); - - expect(chargeResult.error).to.equal(undefined); - console.log('testCharge-end'); - }; - - const testAddCustomer = async () => { - console.log('testAddCustomer-start'); - - const addCustomerOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - console.log({ addCustomerOptions }); - - const addCustomerResult = await addCustomer(addCustomerOptions); - console.log({ addCustomerResult }); - - expect(addCustomerResult.error).to.equal(undefined); - console.log('testAddCustomer-end'); - }; - - const testGetCustomer = async () => { - console.log('testGetCustomer-start'); - - const customerOptions = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - - const addCustomerDataOptions = { - ...customerOptions, - Phone: process.env.PAYMENTS_C2B_PHONE, - }; - - const addResult = await addCustomer(addCustomerDataOptions); - - expect(addResult.error).to.equal(undefined); - - const getResult = await getCustomer(customerOptions); - - expect(getResult.error).to.equal(undefined); - expect(getResult.response.Phone).to.equal( - process.env.PAYMENTS_C2B_PHONE - ); - - console.log('testGetCustomer-end'); - }; - - const testRemoveCustomer = async () => { - console.log('testRemoveCustomer-start'); - - const removeCustomerData = { - TerminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY, - CustomerKey: uniqid(), - }; - - const newAddCustomerData = { - ...removeCustomerData, - Phone: process.env.PAYMENTS_C2B_PHONE, - }; - - const addResult = await addCustomer(newAddCustomerData); - - expect(addResult.error).to.equal(undefined); - - const removeResult = await removeCustomer(removeCustomerData); - - expect(removeResult.error).to.equal(undefined); - - console.log('testRemoveCustomer-end'); - }; - - await testInit(); - await testConfirm(); - await testGetState(); - await testGetCardList(); - await testResend(); - await testCharge(); - await testAddCustomer(); - await testGetCustomer(); - await testRemoveCustomer(); + await callRealizationTestInit(); + await callRealizationTestConfirm(); + await callRealizationTestGetState(); + await callRealizationTestGetCardList(); + await callRealizationTestResend(); + await callRealizationTestCharge(); + await callRealizationTestAddCustomer(); + await callRealizationTestGetCustomer(); + await callRealizationTestRemoveCustomer(); }; const callIntegrationTests = async () => { From bbc516ffcd7162ed8d70ca29a890b51a07013e66 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 5 Dec 2022 07:14:13 +0000 Subject: [PATCH 640/683] Rename: typeTypeId -> typeTypeLinKId --- deep-packages/insertHandler.cjs | 16 +- deep-packages/insertNotificationHandler.cjs | 22 +- ...rtTinkoffCancellingNotificationHandler.cjs | 4 +- .../insertTinkoffNotificationHandler.cjs | 4 +- .../tinkoff/insertTinkoffPayInsertHandler.cjs | 4 +- payments-tinkoff-c2b.cjs | 316 +++++++++--------- 6 files changed, 183 insertions(+), 183 deletions(-) diff --git a/deep-packages/insertHandler.cjs b/deep-packages/insertHandler.cjs index 07900063..e5b5d28b 100644 --- a/deep-packages/insertHandler.cjs +++ b/deep-packages/insertHandler.cjs @@ -1,30 +1,30 @@ -exports.insertHandler = async ({deep,fileTypeId, fileName, handlerName, handleName, triggerTypeId, code, supportsId, handleOperationTypeId, containTypeId, packageId, handlerTypeId}) => { +exports.insertHandler = async ({deep,fileTypeLinkId, fileName, handlerName, handleName, triggerTypeLinkId, code, supportsId, handleOperationTypeLinkId, containTypeLinkId, packageId, handlerTypeLinkId}) => { return await deep.insert({ - type_id: fileTypeId, + type_id: fileTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, // before created package string: { data: { value: fileName } }, }, { from_id: supportsId, - type_id: handlerTypeId, + type_id: handlerTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, // before created package string: { data: { value: handlerName } }, }, { - type_id: handleOperationTypeId, - from_id: triggerTypeId, + type_id: handleOperationTypeLinkId, + from_id: triggerTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, // before created package string: { data: { value: handleName } }, }, diff --git a/deep-packages/insertNotificationHandler.cjs b/deep-packages/insertNotificationHandler.cjs index fce1c499..e6be85da 100644 --- a/deep-packages/insertNotificationHandler.cjs +++ b/deep-packages/insertNotificationHandler.cjs @@ -1,19 +1,19 @@ -exports.insertNotificationHandler = async ({deep, packageId,notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, handlerName, code}) => { +exports.insertNotificationHandler = async ({deep, packageId,notificationPort, notificationRoute, portTypeLinkId, routerListeningTypeLinkId, routerTypeLinkId, routerStringUseTypeLinkId, routeTypeLinkId, handleRouteTypeLinkId, handlerTypeLinkId, supportsId, containTypeLinkId, adminId, fileTypeLinkId, handlerName, code}) => { return await deep.insert( { - type_id: portTypeId, + type_id: portTypeLinkId, number: { data: { value: notificationPort }, }, in: { data: { - type_id: routerListeningTypeId, + type_id: routerListeningTypeLinkId, from: { data: { - type_id: routerTypeId, + type_id: routerTypeLinkId, in: { data: { - type_id: routerStringUseTypeId, + type_id: routerStringUseTypeLinkId, string: { data: { value: @@ -22,17 +22,17 @@ return await deep.insert( }, from: { data: { - type_id: routeTypeId, + type_id: routeTypeLinkId, out: { data: { - type_id: handleRouteTypeId, + type_id: handleRouteTypeLinkId, to: { data: { - type_id: handlerTypeId, + type_id: handlerTypeLinkId, from_id: supportsId, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, // from_id: deep.linkId, from_id: adminId, string: { @@ -44,7 +44,7 @@ return await deep.insert( }, to: { data: { - type_id: fileTypeId, + type_id: fileTypeLinkId, string: { data: { value: code, @@ -52,7 +52,7 @@ return await deep.insert( }, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, string: { data: { diff --git a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs index 23fd6f1f..2c3ed445 100644 --- a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs @@ -1,7 +1,7 @@ const { handlersDependencies } = require("../handlersDependencies.cjs"); const {insertNotificationHandler: baseInsertNotificationHandler} = require("../insertTinkoffNotificationHandler.cjs"); -exports.insertTinkoffCancellingNotificationHandler = async ({paymentsPackageName,deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId}) => { +exports.insertTinkoffCancellingNotificationHandler = async ({paymentsPackageName,deep, notificationPort, notificationRoute, portTypeLinkId, routerListeningTypeLinkId, routerTypeLinkId, routerStringUseTypeLinkId, routeTypeLinkId, handleRouteTypeLinkId, handlerTypeLinkId, supportsId, containTypeLinkId, adminId, fileTypeLinkId}) => { const code = ` async ( req, @@ -73,6 +73,6 @@ async ( }; `; -return await baseInsertNotificationHandler({adminId, containTypeId, deep, fileTypeId, handlerName: "tinkoffNotificationHandler", handleRouteTypeId,handlerTypeId,notificationPort,notificationRoute,portTypeId,routerListeningTypeId,routerStringUseTypeId,routerTypeId,routeTypeId,supportsId, code}); +return await baseInsertNotificationHandler({adminId, containTypeLinkId, deep, fileTypeLinkId, handlerName: "tinkoffNotificationHandler", handleRouteTypeLinkId,handlerTypeLinkId,notificationPort,notificationRoute,portTypeLinkId,routerListeningTypeLinkId,routerStringUseTypeLinkId,routerTypeLinkId,routeTypeLinkId,supportsId, code}); } diff --git a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs index 201ca5b8..4f5b8f2e 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs @@ -2,7 +2,7 @@ const {insertNotificationHandler: baseInsertNotificationHandler} = require("../. const {handlersDependencies} = require("./handlersDependencies.cjs"); const {confirm} = require("./confirm.cjs"); -exports.insertTinkoffNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeId, routerListeningTypeId, routerTypeId, routerStringUseTypeId, routeTypeId, handleRouteTypeId, handlerTypeId, supportsId, containTypeId, adminId, fileTypeId, onConfirmedCode}) => { +exports.insertTinkoffNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeLinkId, routerListeningTypeLinkId, routerTypeLinkId, routerStringUseTypeLinkId, routeTypeLinkId, handleRouteTypeLinkId, handlerTypeLinkId, supportsId, containTypeLinkId, adminId, fileTypeLinkId, onConfirmedCode}) => { const code = ` async ( req, @@ -105,6 +105,6 @@ async ( }; `; -return await baseInsertNotificationHandler({packageId, adminId, containTypeId, deep, fileTypeId, handlerName: "tinkoffNotificationHandler", handleRouteTypeId,handlerTypeId,notificationPort,notificationRoute,portTypeId,routerListeningTypeId,routerStringUseTypeId,routerTypeId,routeTypeId,supportsId, code}); +return await baseInsertNotificationHandler({packageId, adminId, containTypeLinkId, deep, fileTypeLinkId, handlerName: "tinkoffNotificationHandler", handleRouteTypeLinkId,handlerTypeLinkId,notificationPort,notificationRoute,portTypeLinkId,routerListeningTypeLinkId,routerStringUseTypeLinkId,routerTypeLinkId,routeTypeLinkId,supportsId, code}); } diff --git a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs index 304a928c..ea40786d 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs @@ -2,7 +2,7 @@ const { insertHandler } = require("../../insertHandler.cjs"); const {handlersDependencies} = require("./handlersDependencies.cjs"); const {init} = require("./init.cjs"); -exports.insertTinkoffPayInsertHandler = async ({packageName, deep, notificationUrl, userEmail, userPhone, fileTypeId, containTypeId, packageId, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, payTypeId}) => { +exports.insertTinkoffPayInsertHandler = async ({packageName, deep, notificationUrl, userEmail, userPhone, fileTypeLinkId, containTypeLinkId, packageId, dockerSupportsJsId, handleInsertTypeLinkId, handlerTypeLinkId, payTypeLinkId}) => { const code = ` async ({ deep, require, data: { newLink } }) => { ${handlersDependencies} @@ -121,6 +121,6 @@ async ({ deep, require, data: { newLink } }) => { }; `; -return await insertHandler({deep, fileTypeId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeId: payTypeId, code, supportsId: dockerSupportsJsId, handleOperationTypeId: handleInsertTypeId, containTypeId, packageId, handlerTypeId, code}); +return await insertHandler({deep, fileTypeLinkId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeLinkId: payTypeLinkId, code, supportsId: dockerSupportsJsId, handleOperationTypeLinkId: handleInsertTypeLinkId, containTypeLinkId, packageId, handlerTypeLinkId, code}); } diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index f88a7cab..d58e0455 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -94,32 +94,32 @@ const installPackage = async () => { const deep = new DeepClient({ deep: guestDeep, ...admin }); try { - const typeTypeId = await deep.id('@deep-foundation/core', 'Type'); - const anyTypeId = await deep.id('@deep-foundation/core', 'Any'); - const joinTypeId = await deep.id('@deep-foundation/core', 'Join'); - const containTypeId = await deep.id('@deep-foundation/core', 'Contain'); - const packageTypeId = await deep.id('@deep-foundation/core', 'Package'); + const typeTypeLinkId = await deep.id('@deep-foundation/core', 'Type'); + const anyTypeLinkId = await deep.id('@deep-foundation/core', 'Any'); + const joinTypeLinkId = await deep.id('@deep-foundation/core', 'Join'); + const containTypeLinkId = await deep.id('@deep-foundation/core', 'Contain'); + const packageTypeLinkId = await deep.id('@deep-foundation/core', 'Package'); - const syncTextFileTypeId = await deep.id('@deep-foundation/core', 'SyncTextFile'); + const syncTextFileTypeLinkId = await deep.id('@deep-foundation/core', 'SyncTextFile'); const dockerSupportsJs = await deep.id( '@deep-foundation/core', 'dockerSupportsJs' ); - const handleInsertTypeId = await deep.id('@deep-foundation/core', 'HandleInsert'); - const portTypeId = await deep.id('@deep-foundation/core', 'Port'); - const routerListeningTypeId = await deep.id('@deep-foundation/core', 'RouterListening'); - const routerTypeId = await deep.id('@deep-foundation/core', 'Router'); - const routerStringUseTypeId = await deep.id( + const handleInsertTypeLinkId = await deep.id('@deep-foundation/core', 'HandleInsert'); + const portTypeLinkId = await deep.id('@deep-foundation/core', 'Port'); + const routerListeningTypeLinkId = await deep.id('@deep-foundation/core', 'RouterListening'); + const routerTypeLinkId = await deep.id('@deep-foundation/core', 'Router'); + const routerStringUseTypeLinkId = await deep.id( '@deep-foundation/core', 'RouterStringUse' ); - const routeTypeId = await deep.id('@deep-foundation/core', 'Route'); - const handleRouteTypeId = await deep.id( + const routeTypeLinkId = await deep.id('@deep-foundation/core', 'Route'); + const handleRouteTypeLinkId = await deep.id( '@deep-foundation/core', 'HandleRoute' ); - const handlerTypeId = await deep.id( + const handlerTypeLinkId = await deep.id( '@deep-foundation/core', 'Handler' ); @@ -128,13 +128,13 @@ const installPackage = async () => { 'dockerSupportsJs' ); - const treeTypeId = await deep.id('@deep-foundation/core', 'Tree'); - const treeIncludeNodeTypeId = await deep.id( + const treeTypeLinkId = await deep.id('@deep-foundation/core', 'Tree'); + const treeIncludeNodeTypeLinkId = await deep.id( '@deep-foundation/core', 'TreeIncludeNode' ); - const treeIncludeUpTypeId = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); - const treeIncludeDownTypeId = await deep.id( + const treeIncludeUpTypeLinkId = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); + const treeIncludeDownTypeLinkId = await deep.id( '@deep-foundation/core', 'TreeIncludeDown' ); @@ -151,12 +151,12 @@ const installPackage = async () => { const { data: [{ id: packageId }], } = await deep.insert({ - type_id: packageTypeId, + type_id: packageTypeLinkId, string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -164,11 +164,11 @@ const installPackage = async () => { out: { data: [ { - type_id: joinTypeId, + type_id: joinTypeLinkId, to_id: await deep.id('deep', 'users', 'packages'), }, { - type_id: joinTypeId, + type_id: joinTypeLinkId, to_id: await deep.id('deep', 'admin'), }, ], @@ -178,166 +178,166 @@ const installPackage = async () => { console.log({ packageId }); const { - data: [{ id: sumProviderTypeId }], + data: [{ id: sumProviderTypeLinkId }], } = await deep.insert({ - type_id: typeTypeId, - from_id: anyTypeId, - to_id: anyTypeId, + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, string: { data: { value: 'SumProvider' } }, }, }, }); - console.log({ sumProviderTypeId }); + console.log({ sumProviderTypeLinkId }); const { - data: [{ id: tinkoffProviderTypeId }], + data: [{ id: tinkoffProviderTypeLinkId }], } = await deep.insert({ - type_id: typeTypeId, - from_id: anyTypeId, - to_id: anyTypeId, + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, string: { data: { value: 'TinkoffProvider' } }, }, }, }); - console.log({ tinkoffProviderTypeId }); + console.log({ tinkoffProviderTypeLinkId }); const { - data: [{ id: paymentTypeId }], + data: [{ id: paymentTypeLinkId }], } = await deep.insert({ - type_id: typeTypeId, - from_id: anyTypeId, - to_id: anyTypeId, + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, string: { data: { value: 'Payment' } }, }, }, }); - console.log({ paymentTypeId }); + console.log({ paymentTypeLinkId }); const { - data: [{ id: objectTypeId }], + data: [{ id: objectTypeLinkId }], } = await deep.insert({ - type_id: typeTypeId, - from_id: paymentTypeId, - to_id: anyTypeId, + type_id: typeTypeLinkId, + from_id: paymentTypeLinkId, + to_id: anyTypeLinkId, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, string: { data: { value: 'Object' } }, }, }, }); - console.log({ objectTypeId }); + console.log({ objectTypeLinkId }); const { - data: [{ id: sumTypeId }], + data: [{ id: sumTypeLinkId }], } = await deep.insert({ - type_id: typeTypeId, - from_id: anyTypeId, - to_id: anyTypeId, + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, // before created package string: { data: { value: 'Sum' } }, }, }, }); - console.log({ sumTypeId }); + console.log({ sumTypeLinkId }); // TODO Rest restrictions const { - data: [{ id: payTypeId }], + data: [{ id: payTypeLinkId }], } = await deep.insert({ - type_id: typeTypeId, - from_id: anyTypeId, - to_id: anyTypeId, + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, // before created package string: { data: { value: 'Pay' } }, }, }, }); - console.log({ payTypeId }); + console.log({ payTypeLinkId }); const { - data: [{ id: urlTypeId }], + data: [{ id: urlTypeLinkId }], } = await deep.insert({ - type_id: typeTypeId, - from_id: anyTypeId, - to_id: anyTypeId, + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, // before created package string: { data: { value: 'Url' } }, }, }, }); - console.log({ urlTypeId }); + console.log({ urlTypeLinkId }); const { - data: [{ id: payedTypeId }], + data: [{ id: payedTypeLinkId }], } = await deep.insert({ - type_id: typeTypeId, - from_id: anyTypeId, - to_id: anyTypeId, + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, // before created package string: { data: { value: 'Payed' } }, }, }, }); - console.log({ payedTypeId }); + console.log({ payedTypeLinkId }); const { - data: [{ id: errorTypeId }], + data: [{ id: errorTypeLinkId }], } = await deep.insert({ - type_id: typeTypeId, - from_id: anyTypeId, - to_id: anyTypeId, + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, // before created package string: { data: { value: 'Error' } }, }, }, }); - console.log({ errorTypeId }); + console.log({ errorTypeLinkId }); const { data: [{ id: paymentTreeId }], } = await deep.insert({ - type_id: treeTypeId, + type_id: treeTypeLinkId, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, string: { data: { value: 'paymentTree' } }, }, @@ -345,84 +345,84 @@ const installPackage = async () => { out: { data: [ { - type_id: treeIncludeNodeTypeId, - to_id: paymentTypeId, + type_id: treeIncludeNodeTypeLinkId, + to_id: paymentTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], }, }, { - type_id: treeIncludeUpTypeId, - to_id: sumTypeId, + type_id: treeIncludeUpTypeLinkId, + to_id: sumTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], }, }, { - type_id: treeIncludeDownTypeId, - to_id: objectTypeId, + type_id: treeIncludeDownTypeLinkId, + to_id: objectTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], }, }, { - type_id: treeIncludeUpTypeId, - to_id: errorTypeId, + type_id: treeIncludeUpTypeLinkId, + to_id: errorTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], }, }, { - type_id: treeIncludeUpTypeId, - to_id: payedTypeId, + type_id: treeIncludeUpTypeLinkId, + to_id: payedTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], }, }, { - type_id: treeIncludeUpTypeId, - to_id: payTypeId, + type_id: treeIncludeUpTypeLinkId, + to_id: payTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], }, }, { - type_id: treeIncludeUpTypeId, - to_id: urlTypeId, + type_id: treeIncludeUpTypeLinkId, + to_id: urlTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -433,88 +433,88 @@ const installPackage = async () => { }); const { - data: [{ id: storageBusinessTypeId }], + data: [{ id: storageBusinessTypeLinkId }], } = await deep.insert({ - type_id: typeTypeId, - from_id: anyTypeId, - to_id: anyTypeId, + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, // before created package string: { data: { value: 'StorageBusiness' } }, }, }, }); - console.log({storageBusinessTypeId}); + console.log({storageBusinessTypeLinkId}); const { - data: [{ id: tokenTypeId }], + data: [{ id: tokenTypeLinkId }], } = await deep.insert({ - type_id: typeTypeId, - from_id: anyTypeId, - to_id: anyTypeId, + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, // before created package string: { data: { value: 'Token' } }, }, }, }); - console.log({tokenTypeId}); + console.log({tokenTypeLinkId}); const { - data: [{ id: storageClientTypeId }], + data: [{ id: storageClientTypeLinkId }], } = await deep.insert({ - type_id: typeTypeId, - from_id: anyTypeId, - to_id: anyTypeId, + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, // before created package string: { data: { value: 'StorageClient' } }, }, }, }); - console.log({storageClientTypeId}); + console.log({storageClientTypeLinkId}); const { - data: [{ id: titleTypeId }], + data: [{ id: titleTypeLinkId }], } = await deep.insert({ - type_id: typeTypeId, - from_id: anyTypeId, - to_id: anyTypeId, + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, // before created package string: { data: { value: 'Title' } }, }, }, }); - console.log({ titleTypeId }); + console.log({ titleTypeLinkId }); const { - data: [{ id: incomeTypeId }], + data: [{ id: incomeTypeLinkId }], } = await deep.insert({ - type_id: typeTypeId, - from_id: anyTypeId, - to_id: anyTypeId, + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, // before created package string: { data: { value: 'Income' } }, }, }, }); - console.log({ incomeTypeId }); + console.log({ incomeTypeLinkId }); debugger; - await insertTinkoffPayInsertHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",deep, containTypeId, fileTypeId: syncTextFileTypeId, handleInsertTypeId, handlerTypeId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE, dockerSupportsJsId, payTypeId}); + await insertTinkoffPayInsertHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",deep, containTypeLinkId, fileTypeLinkId: syncTextFileTypeLinkId, handleInsertTypeLinkId, handlerTypeLinkId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE, dockerSupportsJsId, payTypeLinkId}); const tinkoffNotificationOnConfirmedCode = ` @@ -602,7 +602,7 @@ const installPackage = async () => { } `; - await insertTinkoffNotificationHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",packageId,deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJsId, onConfirmedCode: tinkoffNotificationOnConfirmedCode}); + await insertTinkoffNotificationHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",packageId,deep, adminId: await deep.id('deep', 'admin'), containTypeLinkId, fileTypeLinkId: syncTextFileTypeLinkId, handleRouteTypeLinkId, handlerTypeLinkId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeLinkId, routerListeningTypeLinkId, routerStringUseTypeLinkId, routerTypeLinkId, routeTypeLinkId, supportsId: dockerSupportsJsId, onConfirmedCode: tinkoffNotificationOnConfirmedCode}); const callTests = async () => { console.log('callTests-start'); @@ -628,11 +628,11 @@ const installPackage = async () => { const { data: [{ id: tinkoffProviderLinkId }], } = await deep.insert({ - type_id: tinkoffProviderTypeId, + type_id: tinkoffProviderTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -645,11 +645,11 @@ const installPackage = async () => { const { data: [{ id: sumProviderLinkId }], } = await deep.insert({ - type_id: sumProviderTypeId, + type_id: sumProviderTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -662,11 +662,11 @@ const installPackage = async () => { const { data: [{ id: storageBusinessLinkId }], } = await deep.insert({ - type_id: storageBusinessTypeId, + type_id: storageBusinessTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -679,14 +679,14 @@ const installPackage = async () => { const { data: [{ id: tokenLinkId }], } = await deep.insert({ - type_id: tokenTypeId, + type_id: tokenTypeLinkId, from_id: storageBusinessLinkId, to_id: storageBusinessLinkId, string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -699,13 +699,13 @@ const installPackage = async () => { const { data: [{ id: productTypeLinkId }], } = await deep.insert({ - type_id: typeTypeId, - from_id: anyTypeId, - to_id: anyTypeId, + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -722,7 +722,7 @@ const installPackage = async () => { in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -740,13 +740,13 @@ const installPackage = async () => { const { data: [{ id: paymentLinkId }], } = await deep.insert({ - type_id: paymentTypeId, + type_id: paymentTypeLinkId, from_id: deep.linkId, to_id: storageBusinessLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -759,14 +759,14 @@ const installPackage = async () => { const { data: [{ id: sumLinkId }], } = await deep.insert({ - type_id: sumTypeId, + type_id: sumTypeLinkId, from_id: sumProviderLinkId, to_id: paymentLinkId, number: { data: { value: PRICE } }, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -779,13 +779,13 @@ const installPackage = async () => { const { data: [{ id: objectLinkId }], } = await deep.insert({ - type_id: objectTypeId, + type_id: objectTypeLinkId, from_id: paymentLinkId, to_id: productLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -798,13 +798,13 @@ const installPackage = async () => { const { data: [{ id: payLinkId }], } = await deep.insert({ - type_id: payTypeId, + type_id: payTypeLinkId, from_id: deep.linkId, to_id: sumLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -817,7 +817,7 @@ const installPackage = async () => { var urlLinkSelectQuery; for (let i = 0; i < 10; i++) { urlLinkSelectQuery = await deep.select({ - type_id: urlTypeId, + type_id: urlTypeLinkId, to_id: payLinkId, }); @@ -847,7 +847,7 @@ const installPackage = async () => { console.log('testFinishAuthorize-start'); const { createdLinks } = await testInit(); - const urlLink = createdLinks.find(link => link.type_id === urlTypeId); + const urlLink = createdLinks.find(link => link.type_id === urlTypeLinkId); expect(urlLink).to.not.be.equal(undefined) const url = urlLink.value.value; @@ -876,13 +876,13 @@ const installPackage = async () => { const createdLinkIds = []; - const payLink = createdLinks.find(link => link.type_id === payTypeId); + const payLink = createdLinks.find(link => link.type_id === payTypeLinkId); expect(payLink).to.not.be.equal(undefined); var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { payedLinkSelectQuery = await deep.select({ - type_id: payedTypeId, + type_id: payedTypeLinkId, to_id: payLink.id }); @@ -912,9 +912,9 @@ const installPackage = async () => { const callTest = async (testFunction) => { const { createdLinks } = await testFunction(); for (const createdLink of createdLinks) { - if(createdLink.type_id === payTypeId) { + if(createdLink.type_id === payTypeLinkId) { const errorLinkSelectQuery = await deep.select({ - type_id: errorTypeId, + type_id: errorTypeLinkId, to_id: createdLink.id }); createdLinks.push(...errorLinkSelectQuery.data); From 332aeacd9dbd197d520c8ebbb8dbe7b638cad399 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 10 Dec 2022 10:54:55 +0000 Subject: [PATCH 641/683] Make Token link independent and add and use UsesToken link --- .../insertTinkoffNotificationHandler.cjs | 15 +++++++--- .../tinkoff/insertTinkoffPayInsertHandler.cjs | 14 +++++++--- payments-tinkoff-c2b.cjs | 28 +++++++++++++++---- 3 files changed, 44 insertions(+), 13 deletions(-) diff --git a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs index 4f5b8f2e..97623100 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs @@ -64,11 +64,18 @@ async ( const storageReceiverId = storageReceiverLinkSelectQuery.data[0].id; console.log({storageReceiverId}); - const tokenTypeLinkId = await deep.id("${packageName}", "Token"); - const tokenLinkSelectQuery = await deep.select({ - type_id: tokenTypeLinkId, + + const usesTokenTypeLinkId = await deep.id("${packageName}", "UsesToken"); + const usesTokenLinkSelectQuery = await deep.select({ + type_id: usesTokenTypeLinkId, from_id: storageReceiverId, - to_id: storageReceiverId + }); + if(usesTokenLinkSelectQuery.error) {throw new Error(usesTokenLinkSelectQuery.error.message);} + const usesTokenLink = usesTokenLinkSelectQuery.data[0]; + console.log({usesTokenLink}); + + const tokenLinkSelectQuery = await deep.select({ + id: usesTokenLink.to_id, }); if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} const tokenLink = tokenLinkSelectQuery.data[0]; diff --git a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs index ea40786d..55e44394 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs @@ -47,11 +47,17 @@ async ({ deep, require, data: { newLink } }) => { const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; console.log({storageBusinessLinkId}); - const tokenTypeLinkId = await deep.id("${packageName}", "Token"); - const tokenLinkSelectQuery = await deep.select({ - type_id: tokenTypeLinkId, + const usesTokenTypeLinkId = await deep.id("${packageName}", "UsesToken"); + const usesTokenLinkSelectQuery = await deep.select({ + type_id: usesTokenTypeLinkId, from_id: storageBusinessLinkId, - to_id: storageBusinessLinkId + }); + if(usesTokenLinkSelectQuery.error) {throw new Error(usesTokenLinkSelectQuery.error.message);} + const usesTokenLink = usesTokenLinkSelectQuery.data[0]; + console.log({usesTokenLink}); + + const tokenLinkSelectQuery = await deep.select({ + id: usesTokenLink.to_id, }); if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} const tokenLink = tokenLinkSelectQuery.data[0]; diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index d58e0455..78b8908b 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -464,6 +464,22 @@ const installPackage = async () => { }); console.log({tokenTypeLinkId}); + const { + data: [{ id: usesTokenTypeLinkId }], + } = await deep.insert({ + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageId, // before created package + string: { data: { value: 'UsesToken' } }, + }, + }, + }); + console.log({usesTokenTypeLinkId}); + const { data: [{ id: storageClientTypeLinkId }], @@ -680,8 +696,6 @@ const installPackage = async () => { data: [{ id: tokenLinkId }], } = await deep.insert({ type_id: tokenTypeLinkId, - from_id: storageBusinessLinkId, - to_id: storageBusinessLinkId, string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, in: { data: [ @@ -689,6 +703,10 @@ const installPackage = async () => { type_id: containTypeLinkId, from_id: deep.linkId, }, + { + type_id: usesTokenTypeLinkId, + from_id: storageBusinessLinkId + }, ], }, }); @@ -927,7 +945,7 @@ const installPackage = async () => { await callTest(testFinishAuthorize); await callTest(testConfirm); - await deep.delete(createdLinkIds); + // await deep.delete(createdLinkIds); }; // await callRealizationTests(); @@ -937,9 +955,9 @@ const installPackage = async () => { await callTests(); } catch (error) { - await deep.delete(allCreatedLinkIds); + // await deep.delete(allCreatedLinkIds); console.log(error); - process.exit(1); + // process.exit(1); } }; From 64cd1587f2c481b989df65588655bb998d6b5ab9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sat, 10 Dec 2022 10:57:20 +0000 Subject: [PATCH 642/683] TypeId -> TypeLinkId --- payments-tinkoff-c2b-cancelling.cjs | 238 ++++++++++++++-------------- 1 file changed, 119 insertions(+), 119 deletions(-) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 3380fbba..a249939f 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -75,35 +75,35 @@ const installPackage = async () => { try { - const userTypeId = await deep.id('@deep-foundation/core', 'User'); - const typeTypeId = await deep.id('@deep-foundation/core', 'Type'); - const anyTypeId = await deep.id('@deep-foundation/core', 'Any'); - const joinTypeId = await deep.id('@deep-foundation/core', 'Join'); - const containTypeId = await deep.id('@deep-foundation/core', 'Contain'); + const userTypeLinkId = await deep.id('@deep-foundation/core', 'User'); + const typeTypeLinkId = await deep.id('@deep-foundation/core', 'Type'); + const anyTypeLinkId = await deep.id('@deep-foundation/core', 'Any'); + const joinTypeLinkId = await deep.id('@deep-foundation/core', 'Join'); + const containTypeLinkId = await deep.id('@deep-foundation/core', 'Contain'); const Value = await deep.id('@deep-foundation/core', 'Value'); const String = await deep.id('@deep-foundation/core', 'String'); - const packageTypeId = await deep.id('@deep-foundation/core', 'Package'); + const packageTypeLinkId = await deep.id('@deep-foundation/core', 'Package'); const HandleDelete = await deep.id('@deep-foundation/core', 'HandleDelete'); - const syncTextFileTypeId = await deep.id('@deep-foundation/core', 'SyncTextFile'); + const syncTextFileTypeLinkId = await deep.id('@deep-foundation/core', 'SyncTextFile'); const dockerSupportsJs = await deep.id( '@deep-foundation/core', 'dockerSupportsJs' ); - const handleInsertTypeId = await deep.id('@deep-foundation/core', 'HandleInsert'); - const portTypeId = await deep.id('@deep-foundation/core', 'Port'); - const routerListeningTypeId = await deep.id('@deep-foundation/core', 'RouterListening'); - const routerTypeId = await deep.id('@deep-foundation/core', 'Router'); - const routerStringUseTypeId = await deep.id( + const handleInsertTypeLinkId = await deep.id('@deep-foundation/core', 'HandleInsert'); + const portTypeLinkId = await deep.id('@deep-foundation/core', 'Port'); + const routerListeningTypeLinkId = await deep.id('@deep-foundation/core', 'RouterListening'); + const routerTypeLinkId = await deep.id('@deep-foundation/core', 'Router'); + const routerStringUseTypeLinkId = await deep.id( '@deep-foundation/core', 'RouterStringUse' ); - const routeTypeId = await deep.id('@deep-foundation/core', 'Route'); - const handleRouteTypeId = await deep.id( + const routeTypeLinkId = await deep.id('@deep-foundation/core', 'Route'); + const handleRouteTypeLinkId = await deep.id( '@deep-foundation/core', 'HandleRoute' ); - const handlerTypeId = await deep.id( + const handlerTypeLinkId = await deep.id( '@deep-foundation/core', 'Handler' ); @@ -117,7 +117,7 @@ const installPackage = async () => { '@deep-foundation/core', 'TreeIncludeNode' ); - const treeIncludeUpTypeId = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); + const treeIncludeUpTypeLinkId = await deep.id('@deep-foundation/core', 'TreeIncludeUp'); const TreeIncludeDown = await deep.id( '@deep-foundation/core', 'TreeIncludeDown' @@ -156,12 +156,12 @@ const installPackage = async () => { const { data: [{ id: packageId }], } = await deep.insert({ - type_id: packageTypeId, + type_id: packageTypeLinkId, string: { data: { value: '@deep-foundation/payments-tinkoff-c2b-cancelling' } }, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -169,11 +169,11 @@ const installPackage = async () => { out: { data: [ { - type_id: joinTypeId, + type_id: joinTypeLinkId, to_id: await deep.id('deep', 'users', 'packages'), }, { - type_id: joinTypeId, + type_id: joinTypeLinkId, to_id: await deep.id('deep', 'admin'), }, ], @@ -182,89 +182,89 @@ const installPackage = async () => { console.log({ packageId }); - const sumProviderTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "SumProvider"); - console.log({ sumProviderTypeId }); + const sumProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "SumProvider"); + console.log({ sumProviderTypeLinkId }); - const tinkoffProviderTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - console.log({ tinkoffProviderTypeId }); + const tinkoffProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + console.log({ tinkoffProviderTypeLinkId }); - const paymentTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); - console.log({ paymentTypeId }); + const paymentTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); + console.log({ paymentTypeLinkId }); - const objectTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Object"); - console.log({ objectTypeId }); + const objectTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Object"); + console.log({ objectTypeLinkId }); const sumTypeid = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); console.log({ sumTypeid }); - const payTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); - console.log({ payTypeId }); + const payTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + console.log({ payTypeLinkId }); const { - data: [{ id: cancellingPayTypeId }], + data: [{ id: cancellingPayTypeLinkId }], } = await deep.insert({ - type_id: /* Pay */ typeTypeId, - from_id: userTypeId, + type_id: /* Pay */ typeTypeLinkId, + from_id: userTypeLinkId, to_id: sumTypeid, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, string: { data: { value: 'CancellingPay' } }, }, }, }); - console.log({ cancellingPayTypeId }); + console.log({ cancellingPayTypeLinkId }); - const urlTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); - console.log({ urlTypeId }); + const urlTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); + console.log({ urlTypeLinkId }); - const payedTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"); - console.log({ payedTypeId }); + const payedTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"); + console.log({ payedTypeLinkId }); - const errorTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error"); - console.log({ errorTypeId }); + const errorTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error"); + console.log({ errorTypeLinkId }); const paymentTreeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree"); console.log({ paymentTreeId }); - const storageBusinessTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageBusiness"); - console.log({ storageBusinessTypeId }); + const storageBusinessTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageBusiness"); + console.log({ storageBusinessTypeLinkId }); - const tokenTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); - console.log({ tokenTypeId }); + const tokenTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); + console.log({ tokenTypeLinkId }); - const storageClientTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - console.log({ storageClientTypeId }); + const storageClientTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + console.log({ storageClientTypeLinkId }); - const titleTypeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); - console.log({ titleTypeId }); + const titleTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); + console.log({ titleTypeLinkId }); const { - data: [{ id: cancellingPaymentTypeId }], + data: [{ id: cancellingPaymentTypeLinkId }], } = await deep.insert({ - type_id: typeTypeId, - from_id: paymentTypeId, - to_id: userTypeId, + type_id: typeTypeLinkId, + from_id: paymentTypeLinkId, + to_id: userTypeLinkId, in: { data: { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: packageId, string: { data: { value: 'CancellingPayment' } }, }, }, }); - console.log({ cancellingPaymentTypeId }); + console.log({ cancellingPaymentTypeLinkId }); await deep.insert({ - type_id: treeIncludeUpTypeId, + type_id: treeIncludeUpTypeLinkId, from_id: paymentTreeId, - to_id: cancellingPaymentTypeId, + to_id: cancellingPaymentTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -272,13 +272,13 @@ const installPackage = async () => { }); await deep.insert({ - type_id: treeIncludeUpTypeId, + type_id: treeIncludeUpTypeLinkId, from_id: paymentTreeId, - to_id: cancellingPayTypeId, + to_id: cancellingPayTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -287,8 +287,8 @@ const installPackage = async () => { - await insertTinkoffCancellingPayInsertHandler({ cancellingPayTypeId, terminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY,paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b",cancellingPaymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",containTypeId, deep, dockerSupportsJsId, handleInsertTypeId, handlerTypeId, packageId, syncTextFileTypeId, terminayKey: process.env.PAYMENTS_C2B_TERMINAL_KEY }); - await insertTinkoffCancellingNotificationHandler({ paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",deep, adminId: await deep.id('deep', 'admin'), containTypeId, fileTypeId: syncTextFileTypeId, handleRouteTypeId, handlerTypeId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeId, routerListeningTypeId, routerStringUseTypeId, routerTypeId, routeTypeId, supportsId: dockerSupportsJs , packageId}); + await insertTinkoffCancellingPayInsertHandler({ cancellingPayTypeLinkId, terminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY,paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b",cancellingPaymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",containTypeLinkId, deep, dockerSupportsJsId, handleInsertTypeLinkId, handlerTypeLinkId, packageId, syncTextFileTypeLinkId, terminayKey: process.env.PAYMENTS_C2B_TERMINAL_KEY }); + await insertTinkoffCancellingNotificationHandler({ paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",deep, adminId: await deep.id('deep', 'admin'), containTypeLinkId, fileTypeLinkId: syncTextFileTypeLinkId, handleRouteTypeLinkId, handlerTypeLinkId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeLinkId, routerListeningTypeLinkId, routerStringUseTypeLinkId, routerTypeLinkId, routeTypeLinkId, supportsId: dockerSupportsJs , packageId}); const callTests = async () => { console.log('callTests-start'); @@ -620,11 +620,11 @@ const installPackage = async () => { const { data: [{ id: tinkoffProviderId }], } = await deep.insert({ - type_id: tinkoffProviderTypeId, + type_id: tinkoffProviderTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -637,11 +637,11 @@ const installPackage = async () => { const { data: [{ id: sumProviderId }], } = await deep.insert({ - type_id: sumProviderTypeId, + type_id: sumProviderTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -654,11 +654,11 @@ const installPackage = async () => { const { data: [{ id: storageBusinessId }], } = await deep.insert({ - type_id: storageBusinessTypeId, + type_id: storageBusinessTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -671,14 +671,14 @@ const installPackage = async () => { const { data: [{ id: tokenId }], } = await deep.insert({ - type_id: tokenTypeId, + type_id: tokenTypeLinkId, from_id: storageBusinessId, to_id: storageBusinessId, string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -691,13 +691,13 @@ const installPackage = async () => { const { data: [{ id: Product }], } = await deep.insert({ - type_id: typeTypeId, - from_id: anyTypeId, - to_id: anyTypeId, + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -714,7 +714,7 @@ const installPackage = async () => { in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -732,14 +732,14 @@ const installPackage = async () => { const { data: [{ id: paymentId }], } = await deep.insert({ - type_id: paymentTypeId, + type_id: paymentTypeLinkId, object: { data: { value: { orderId: uniqid() } } }, from_id: deep.linkId, to_id: storageBusinessId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -759,7 +759,7 @@ const installPackage = async () => { in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -772,13 +772,13 @@ const installPackage = async () => { const { data: [{ id: objectId }], } = await deep.insert({ - type_id: objectTypeId, + type_id: objectTypeLinkId, from_id: paymentId, to_id: productId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -791,13 +791,13 @@ const installPackage = async () => { const { data: [{ id: payId }], } = await deep.insert({ - type_id: payTypeId, + type_id: payTypeLinkId, from_id: deep.linkId, to_id: sumId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -810,7 +810,7 @@ const installPackage = async () => { var urlLinkSelectQuery; for (let i = 0; i < 10; i++) { urlLinkSelectQuery = await deep.select({ - type_id: urlTypeId, + type_id: urlTypeLinkId, to_id: payId, }); @@ -840,7 +840,7 @@ const installPackage = async () => { console.log('testFinishAuthorize-start'); const { createdLinks } = await testInit({ customerKey }); - const urlLink = createdLinks.find(link => link.type_id === urlTypeId); + const urlLink = createdLinks.find(link => link.type_id === urlTypeLinkId); expect(urlLink).to.not.be.equal(undefined) const url = urlLink.value.value; @@ -869,13 +869,13 @@ const installPackage = async () => { const createdLinkIds = []; - const payLink = createdLinks.find(link => link.type_id === payTypeId); + const payLink = createdLinks.find(link => link.type_id === payTypeLinkId); expect(payLink).to.not.equal(undefined); var payedLinkSelectQuery; for (let i = 0; i < 30; i++) { payedLinkSelectQuery = await deep.select({ - type_id: payedTypeId, + type_id: payedTypeLinkId, to_id: payLink.id }); @@ -910,23 +910,23 @@ const installPackage = async () => { const createdLinkIds = []; - const paymentLink = createdLinks.find(link => link.type_id === paymentTypeId); + const paymentLink = createdLinks.find(link => link.type_id === paymentTypeLinkId); console.log({ paymentLink }); const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: cancellingPaymentTypeId, + type_id: cancellingPaymentTypeLinkId, from_id: paymentLink.id, to_id: deep.linkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], }, }); - if (cancellingPaymentLinkInsertQuery.error) { throw new errorTypeId(cancellingPaymentLinkInsertQuery.error.message); } + if (cancellingPaymentLinkInsertQuery.error) { throw new errorTypeLinkId(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentId = cancellingPaymentLinkInsertQuery.data[0].id; console.log({ cancellingPaymentId }); createdLinkIds.push(cancellingPaymentId); @@ -940,32 +940,32 @@ const installPackage = async () => { in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], }, }); - if (sumLinkOfCancellingPaymentQuery.error) { throw new errorTypeId(sumLinkOfCancellingPaymentQuery.error.message); } + if (sumLinkOfCancellingPaymentQuery.error) { throw new errorTypeLinkId(sumLinkOfCancellingPaymentQuery.error.message); } const sumLinkIdOfCancellingPayment = sumLinkOfCancellingPaymentQuery.data[0].id; console.log({ sumLinkIdOfCancellingPayment }); createdLinkIds.push(sumLinkIdOfCancellingPayment); allCreatedLinkIds.push(sumLinkIdOfCancellingPayment); const cancellingPayLinkInsertQuery = await deep.insert({ - type_id: cancellingPayTypeId, + type_id: cancellingPayTypeLinkId, from_id: deep.linkId, to_id: sumLinkIdOfCancellingPayment, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], }, }); - if (cancellingPayLinkInsertQuery.error) { throw new errorTypeId(cancellingPayLinkInsertQuery.error.message); } + if (cancellingPayLinkInsertQuery.error) { throw new errorTypeLinkId(cancellingPayLinkInsertQuery.error.message); } const cancellingPayId = cancellingPayLinkInsertQuery.data[0].id; console.log({ cancellingPayId }); createdLinkIds.push(cancellingPayId); @@ -974,7 +974,7 @@ const installPackage = async () => { var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { payedLinkSelectQuery = await deep.select({ - type_id: payedTypeId, + type_id: payedTypeLinkId, to_id: cancellingPayId }); @@ -984,7 +984,7 @@ const installPackage = async () => { await sleep(1000); } - if (payedLinkSelectQuery.error) { throw new errorTypeId(payedLinkSelectQuery.error.message); } + if (payedLinkSelectQuery.error) { throw new errorTypeLinkId(payedLinkSelectQuery.error.message); } const payedLink = payedLinkSelectQuery.data[0]; expect(payedLink).to.not.equal(undefined); createdLinks.push(payedLink); @@ -1004,24 +1004,24 @@ const installPackage = async () => { const createdLinkIds = []; - const paymentLink = createdLinks.find(link => link.type_id === paymentTypeId); + const paymentLink = createdLinks.find(link => link.type_id === paymentTypeLinkId); console.log({ paymentLink }); for (let i = 0; i < 2; i++) { const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: cancellingPaymentTypeId, + type_id: cancellingPaymentTypeLinkId, from_id: paymentLink.id, to_id: deep.linkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], }, }); - if (cancellingPaymentLinkInsertQuery.error) { throw new errorTypeId(cancellingPaymentLinkInsertQuery.error.message); } + if (cancellingPaymentLinkInsertQuery.error) { throw new errorTypeLinkId(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentId = cancellingPaymentLinkInsertQuery.data[0].id; console.log({ cancellingPaymentId }); createdLinkIds.push(cancellingPaymentId); @@ -1037,7 +1037,7 @@ const installPackage = async () => { in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], @@ -1048,19 +1048,19 @@ const installPackage = async () => { allCreatedLinkIds.push(sumLinkIdOfCancellingPayment); const cancellingPayLinkInsertQuery = await deep.insert({ - type_id: cancellingPayTypeId, + type_id: cancellingPayTypeLinkId, from_id: deep.linkId, to_id: sumLinkIdOfCancellingPayment, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], }, }); - if (cancellingPayLinkInsertQuery.error) { throw new errorTypeId(cancellingPayLinkInsertQuery.error.message); } + if (cancellingPayLinkInsertQuery.error) { throw new errorTypeLinkId(cancellingPayLinkInsertQuery.error.message); } const cancellingPayId = cancellingPayLinkInsertQuery.data[0].id; console.log({ cancellingPayId }); createdLinkIds.push(cancellingPayId); @@ -1069,7 +1069,7 @@ const installPackage = async () => { var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { payedLinkSelectQuery = await deep.select({ - type_id: payedTypeId, + type_id: payedTypeLinkId, to_id: cancellingPayId }); @@ -1079,7 +1079,7 @@ const installPackage = async () => { await sleep(1000); } - if (payedLinkSelectQuery.error) { throw new errorTypeId(payedLinkSelectQuery.error.message); } + if (payedLinkSelectQuery.error) { throw new errorTypeLinkId(payedLinkSelectQuery.error.message); } const payedLink = payedLinkSelectQuery.data[0]; expect(payedLink).to.not.equal(undefined); createdLinks.push(payedLink); @@ -1102,23 +1102,23 @@ const installPackage = async () => { const createdLinkIds = []; - const paymentLink = createdLinks.find(link => link.type_id === paymentTypeId); + const paymentLink = createdLinks.find(link => link.type_id === paymentTypeLinkId); console.log({ paymentLink }); const cancellingPaymentLinkInsertQuery = await deep.insert({ - type_id: cancellingPaymentTypeId, + type_id: cancellingPaymentTypeLinkId, from_id: paymentLink.id, to_id: deep.linkId, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], }, }); - if (cancellingPaymentLinkInsertQuery.error) { throw new errorTypeId(cancellingPaymentLinkInsertQuery.error.message); } + if (cancellingPaymentLinkInsertQuery.error) { throw new errorTypeLinkId(cancellingPaymentLinkInsertQuery.error.message); } const cancellingPaymentId = cancellingPaymentLinkInsertQuery.data[0].id; console.log({ cancellingPaymentId }); createdLinkIds.push(cancellingPaymentId); @@ -1132,32 +1132,32 @@ const installPackage = async () => { in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], }, }); - if (sumLinkOfCancellingPaymentSelectQuery.error) { throw new errorTypeId(sumLinkOfCancellingPaymentSelectQuery.error.message); } + if (sumLinkOfCancellingPaymentSelectQuery.error) { throw new errorTypeLinkId(sumLinkOfCancellingPaymentSelectQuery.error.message); } const sumLinkIdOfCancellingPayment = sumLinkOfCancellingPaymentSelectQuery.data[0].id; console.log({ sumLinkIdOfCancellingPayment }); createdLinkIds.push(sumLinkIdOfCancellingPayment); allCreatedLinkIds.push(sumLinkIdOfCancellingPayment); const cancellingPayLinkInsertQuery = await deep.insert({ - type_id: cancellingPayTypeId, + type_id: cancellingPayTypeLinkId, from_id: deep.linkId, to_id: sumLinkIdOfCancellingPayment, in: { data: [ { - type_id: containTypeId, + type_id: containTypeLinkId, from_id: deep.linkId, }, ], }, }); - if (cancellingPayLinkInsertQuery.error) { throw new errorTypeId(cancellingPayLinkInsertQuery.error.message); } + if (cancellingPayLinkInsertQuery.error) { throw new errorTypeLinkId(cancellingPayLinkInsertQuery.error.message); } const cancellingPayId = cancellingPayLinkInsertQuery.data[0].id; console.log({ cancellingPayId }); createdLinkIds.push(cancellingPayId); @@ -1166,7 +1166,7 @@ const installPackage = async () => { var payedLinkSelectQuery; for (let i = 0; i < 10; i++) { payedLinkSelectQuery = await deep.select({ - type_id: payedTypeId, + type_id: payedTypeLinkId, to_id: cancellingPayId }); @@ -1176,7 +1176,7 @@ const installPackage = async () => { await sleep(1000); } - if (payedLinkSelectQuery.error) { throw new errorTypeId(payedLinkSelectQuery.error.message); } + if (payedLinkSelectQuery.error) { throw new errorTypeLinkId(payedLinkSelectQuery.error.message); } const payedLink = payedLinkSelectQuery.data[0]; expect(payedLink).to.not.equal(undefined); createdLinks.push(payedLink); From 346206ffa9a233c81f96cb6ed5c4b6545428d79b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Sun, 11 Dec 2022 07:39:54 +0000 Subject: [PATCH 643/683] Create usesTokenTypeLinkId link --- payments-tinkoff-c2b-cancelling.cjs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index a249939f..134403eb 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -681,6 +681,10 @@ const installPackage = async () => { type_id: containTypeLinkId, from_id: deep.linkId, }, + { + type_id: usesTokenTypeLinkId, + from_id: storageBusinessLinkId + }, ], }, }); From 71276b1411c78f35ffb53c790a778873697db886 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 14 Feb 2023 16:46:08 +0000 Subject: [PATCH 644/683] Install packages required for payments --- package-lock.json | 119 ++++++++++++++++++++++++++++++++-------------- package.json | 3 ++ 2 files changed, 85 insertions(+), 37 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7c642be7..e6438a20 100644 --- a/package-lock.json +++ b/package-lock.json @@ -252,6 +252,13 @@ "ts-jest": "^26.5.4", "uniqid": "^5.3.0", "wait-on": "^6.0.0" + }, + "dependencies": { + "graphql": { + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==" + } } }, "@deep-foundation/hasura": { @@ -2286,6 +2293,46 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -3709,6 +3756,20 @@ "reusify": "^1.0.4" } }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "requires": { + "pend": "~1.2.0" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -4257,7 +4318,11 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", @@ -4418,8 +4483,7 @@ "graphql": { "version": "16.6.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", - "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", - "dev": true + "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==" }, "graphql-extensions": { "version": "0.16.0", @@ -6160,6 +6224,12 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "optional": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -8731,14 +8801,6 @@ "ws": "8.8.1" }, "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, "ws": { "version": "8.8.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", @@ -8803,7 +8865,6 @@ "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dev": true, "requires": { "loose-envify": "^1.1.0" } @@ -8912,6 +8973,14 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } } } }, @@ -9696,34 +9765,12 @@ "es-abstract": "^1.19.5" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "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==" - } - } - }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "requires": { "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } } }, "strip-ansi": { @@ -9756,7 +9803,6 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz", "integrity": "sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==", - "dev": true, "requires": { "backo2": "^1.0.2", "eventemitter3": "^3.1.0", @@ -9768,8 +9814,7 @@ "symbol-observable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "dev": true + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" } } }, diff --git a/package.json b/package.json index e976e42e..3912f89d 100644 --- a/package.json +++ b/package.json @@ -78,6 +78,7 @@ "cross-env": "^7.0.3", "del": "^6.0.0", "dotenv-expand": "^8.0.3", + "graphql": "^16.6.0", "gulp": "^4.0.2", "gulp-run-command": "^0.0.10", "i": "^0.3.6", @@ -85,8 +86,10 @@ "npm": "^7.5.4", "prompt": "^1.2.0", "puppeteer": "^16.2.0", + "react": "^18.2.0", "rimraf": "^3.0.2", "simple-git": "^2.45.0", + "subscriptions-transport-ws": "^0.11.0", "ts-node": "^9.1.1", "typescript": "^4.4.3" } From 7dafa45baa719c3bd1dd2ab55a124a6c77a581e4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 14 Feb 2023 16:46:16 +0000 Subject: [PATCH 645/683] Do not use dotenv expand --- payments-tinkoff-c2b.cjs | 2 -- 1 file changed, 2 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 78b8908b..a659770a 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -3,7 +3,6 @@ require('graphql'); require('lodash'); require('subscriptions-transport-ws'); const dotenv = require('dotenv'); -const dotenvExpand = require('dotenv-expand'); const { generateApolloClient } = require('@deep-foundation/hasura/client'); const { DeepClient } = require('@deep-foundation/deeplinks/imports/client'); const { @@ -20,7 +19,6 @@ const { default: links, } = require('@deep-foundation/deeplinks/imports/router/links'); var myEnv = dotenv.config(); -dotenvExpand.expand(myEnv); const {payInBrowser} = require("./deep-packages/payments/tinkoff/payInBrowser.cjs"); const {getError} = require("./deep-packages/payments/tinkoff/getError.cjs"); const { generateToken, generateTokenStringWithInsertedTerminalPassword } = require("./deep-packages/payments/tinkoff/generateToken.cjs"); From a957885e35150e57eebb2aa8a6a8011a17b0aae9 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 17 Feb 2023 15:32:05 +0000 Subject: [PATCH 646/683] Update draft --- payments-tinkoff-c2b.cjs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index a659770a..863b6769 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -811,6 +811,19 @@ const installPackage = async () => { createdLinkIds.push(objectLinkId); allCreatedLinkIds.push(objectLinkId); + console.log({ + type_id: payTypeLinkId, + from_id: deep.linkId, + to_id: sumLinkId, + in: { + data: [ + { + type_id: containTypeLinkId, + from_id: deep.linkId, + }, + ], + }, + }) const { data: [{ id: payLinkId }], } = await deep.insert({ From 4554c5cfc227b82e79207cb7a2611b25bffcd258 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 17 Feb 2023 15:32:15 +0000 Subject: [PATCH 647/683] Update draft --- .../payments/tinkoff/payInsertHandler.cjs | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 deep-packages/payments/tinkoff/payInsertHandler.cjs diff --git a/deep-packages/payments/tinkoff/payInsertHandler.cjs b/deep-packages/payments/tinkoff/payInsertHandler.cjs new file mode 100644 index 00000000..95988cf2 --- /dev/null +++ b/deep-packages/payments/tinkoff/payInsertHandler.cjs @@ -0,0 +1,126 @@ +// async ({ deep, require, data: { newLink } }) => { +// const crypto = require('crypto'); +// const axios = require('axios'); +// const errors = ${JSON.stringify(errors)}; +// const getError = ${getError.toString()}; +// const getUrl = ${getUrlString}; +// const generateToken = ${generateTokenStringWithInsertedTerminalPassword}; + +// const tinkoffProviderTypeLinkId = await deep.id("${PACKAGE_NAME}", "TinkoffProvider"); +// const tinkoffProviderLinkSelectQuery = await deep.select({ +// type_id: tinkoffProviderTypeLinkId +// }); +// if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} +// const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; + +// const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ +// down: { +// link_id: { _eq: newLink.id }, +// tree_id: { _eq: await deep.id("${PACKAGE_NAME}", "paymentTree") }, +// }, +// }); +// console.log({mpDownPay}); +// if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } + +// const paymentTypeLinkId = await deep.id("${PACKAGE_NAME}", "Payment"); +// const paymentLink = mpDownPay.find(link => link.type_id === paymentTypeLinkId); +// console.log({paymentLink}); +// if(!paymentLink) throw new Error("Payment link associated with the pay link " + newLink.id + " is not found."); + +// const sumTypeLinkId = await deep.id("${PACKAGE_NAME}", "Sum"); +// const sumLink = mpDownPay.find(link => link.type_id === sumTypeLinkId); +// console.log({sumLink}); +// if(!sumLink) throw new Error("Sum link associated with the pay link " + newLink.id + " is not found."); + +// const fromLinkOfPaymentSelectQuery = await deep.select({ +// id: paymentLink.from_id +// }); +// if(fromLinkOfPaymentSelectQuery.error) { throw new Error(fromLinkOfPaymentSelectQuery.error.message); } +// const fromLinkOfPayment = fromLinkOfPaymentSelectQuery.data[0]; +// console.log({fromLinkOfPayment}); + +// const storageBusinessLinkSelectQuery = await deep.select({ +// id: paymentLink.to_id +// }); +// if(storageBusinessLinkSelectQuery.error) { throw new Error(storageBusinessLinkSelectQuery.error.message); } +// const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; +// console.log({storageBusinessLinkId}); + +// const usesTokenTypeLinkId = await deep.id("${PACKAGE_NAME}", "UsesToken"); +// const usesTokenLinkSelectQuery = await deep.select({ +// type_id: usesTokenTypeLinkId, +// from_id: storageBusinessLinkId, +// }); +// if(usesTokenLinkSelectQuery.error) {throw new Error(usesTokenLinkSelectQuery.error.message);} +// const usesTokenLink = usesTokenLinkSelectQuery.data[0]; +// console.log({usesTokenLink}); + +// const tokenLinkSelectQuery = await deep.select({ +// id: usesTokenLink.to_id, +// }); +// if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} +// const tokenLink = tokenLinkSelectQuery.data[0]; +// console.log({tokenLink}); + +// const init = ${init.toString()}; + +// const options = { +// TerminalKey: tokenLink.value.value, +// OrderId: "" + Date.now() + paymentLink.id, +// CustomerKey: deep.linkId, +// NotificationURL: "${notificationUrl}", +// PayType: 'T', +// Amount: sumLink.value.value, +// Description: 'Test shopping', +// Language: 'ru', +// Recurrent: 'Y', +// DATA: { +// Email: "${userEmail}", +// Phone: "${userPhone}", +// }, +// // Receipt: { +// // Items: [{ +// // Name: 'Test item', +// // Price: sum, +// // Quantity: 1, +// // Amount: sumLink.value.value, +// // PaymentMethod: 'prepayment', +// // PaymentObject: 'service', +// // Tax: 'none', +// // }], +// // Email: "${userEmail}", +// // Phone: "${userPhone}", +// // Taxation: 'usn_income', +// // } +// }; +// console.log({options}); + +// let initResult = await init(options); +// console.log({initResult}); +// if (initResult.error) { +// const errorMessage = "Could not initialize the order. " + initResult.error; +// const {error: errorLinkInsertQueryError} = await deep.insert({ +// type_id: (await deep.id("${PACKAGE_NAME}", "Error")), +// from_id: tinkoffProviderLinkId, +// to_id: newLink.id, +// string: { data: { value: errorMessage } }, +// }); +// if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } +// throw new Error(errorMessage); +// } + +// const urlTypeLinkId = await deep.id("${PACKAGE_NAME}", "Url"); +// const {error: urlLinkInsertQueryError} = await deep.insert({ +// type_id: urlTypeLinkId, +// from_id: tinkoffProviderLinkId, +// to_id: newLink.id, +// string: { data: { value: initResult.response.PaymentURL } }, +// }); +// if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } + +// const paymentValueLinkInsertQuery = await deep.insert({link_id: paymentLink.id, value: {bankPaymentId: parseInt(initResult.response.PaymentId)}}, {table: "objects"}) +// if(paymentValueLinkInsertQuery.error) { throw new Error(paymentValueLinkInsertQuery.error.message); } +// console.log(JSON.stringify(paymentValueLinkInsertQuery)); + +// return initResult; +// }; \ No newline at end of file From 7549496aefbb13f4282ac5ed67b0b7beb009aa1e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 17 Feb 2023 16:45:46 +0000 Subject: [PATCH 648/683] Update draft --- deep-packages/insertHandler.cjs | 6 +- deep-packages/insertNotificationHandler.cjs | 108 ++++++++----- .../tinkoff/insertTinkoffPayInsertHandler.cjs | 126 +-------------- payments-tinkoff-c2b.cjs | 149 +++++++++++++++++- 4 files changed, 213 insertions(+), 176 deletions(-) diff --git a/deep-packages/insertHandler.cjs b/deep-packages/insertHandler.cjs index e5b5d28b..7f92aa56 100644 --- a/deep-packages/insertHandler.cjs +++ b/deep-packages/insertHandler.cjs @@ -5,7 +5,7 @@ exports.insertHandler = async ({deep,fileTypeLinkId, fileName, handlerName, hand data: [ { type_id: containTypeLinkId, - from_id: packageId, // before created package + from_id: packageId, string: { data: { value: fileName } }, }, { @@ -15,7 +15,7 @@ exports.insertHandler = async ({deep,fileTypeLinkId, fileName, handlerName, hand data: [ { type_id: containTypeLinkId, - from_id: packageId, // before created package + from_id: packageId, string: { data: { value: handlerName } }, }, { @@ -25,7 +25,7 @@ exports.insertHandler = async ({deep,fileTypeLinkId, fileName, handlerName, hand data: [ { type_id: containTypeLinkId, - from_id: packageId, // before created package + from_id: packageId, string: { data: { value: handleName } }, }, ], diff --git a/deep-packages/insertNotificationHandler.cjs b/deep-packages/insertNotificationHandler.cjs index e6be85da..e50cee3f 100644 --- a/deep-packages/insertNotificationHandler.cjs +++ b/deep-packages/insertNotificationHandler.cjs @@ -6,53 +6,36 @@ return await deep.insert( data: { value: notificationPort }, }, in: { - data: { - type_id: routerListeningTypeLinkId, - from: { - data: { - type_id: routerTypeLinkId, - in: { - data: { - type_id: routerStringUseTypeLinkId, - string: { + data: [ + { + type_id: routerListeningTypeLinkId, + from: { + data: { + type_id: routerTypeLinkId, + in: [ + { data: { - value: - notificationRoute, - }, - }, - from: { - data: { - type_id: routeTypeLinkId, - out: { + type_id: routerStringUseTypeLinkId, + string: { + data: { + value: + notificationRoute, + }, + }, + from: { data: { - type_id: handleRouteTypeLinkId, - to: { + type_id: routeTypeLinkId, + out: { data: { - type_id: handlerTypeLinkId, - from_id: supportsId, - in: { - data: { - type_id: containTypeLinkId, - // from_id: deep.linkId, - from_id: adminId, - string: { - data: { - value: handlerName, - }, - }, - }, - }, + type_id: handleRouteTypeLinkId, to: { data: { - type_id: fileTypeLinkId, - string: { - data: { - value: code, - }, - }, + type_id: handlerTypeLinkId, + from_id: supportsId, in: { data: { type_id: containTypeLinkId, + // from_id: deep.linkId, from_id: packageId, string: { data: { @@ -61,19 +44,62 @@ return await deep.insert( }, }, }, + to: { + data: { + type_id: fileTypeLinkId, + string: { + data: { + value: code, + }, + }, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageId, + string: { + data: { + value: handlerName, + }, + }, + }, + }, + }, + }, }, }, }, }, }, }, + in: { + data: [ + { + type_id: containTypeLinkId, + from_id: packageId, + }, + ] + } }, }, - }, + { + type_id: containTypeLinkId, + from_id: packageId, + }, + ], }, }, + in : { + data: { + type_id: containTypeLinkId, + from_id: packageId, + }, + } + }, + { + type_id: containTypeLinkId, + from_id: packageId, }, - }, + ], }, }, { diff --git a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs index 55e44394..93b96133 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs @@ -3,130 +3,6 @@ const {handlersDependencies} = require("./handlersDependencies.cjs"); const {init} = require("./init.cjs"); exports.insertTinkoffPayInsertHandler = async ({packageName, deep, notificationUrl, userEmail, userPhone, fileTypeLinkId, containTypeLinkId, packageId, dockerSupportsJsId, handleInsertTypeLinkId, handlerTypeLinkId, payTypeLinkId}) => { - const code = ` -async ({ deep, require, data: { newLink } }) => { - ${handlersDependencies} - - const tinkoffProviderTypeLinkId = await deep.id("${packageName}", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: tinkoffProviderTypeLinkId - }); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; - - const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ - down: { - link_id: { _eq: newLink.id }, - tree_id: { _eq: await deep.id("${packageName}", "paymentTree") }, - }, - }); - console.log({mpDownPay}); - if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } - - const paymentTypeLinkId = await deep.id("${packageName}", "Payment"); - const paymentLink = mpDownPay.find(link => link.type_id === paymentTypeLinkId); - console.log({paymentLink}); - if(!paymentLink) throw new Error("Payment link associated with the pay link " + newLink.id + " is not found."); - - const sumTypeLinkId = await deep.id("${packageName}", "Sum"); - const sumLink = mpDownPay.find(link => link.type_id === sumTypeLinkId); - console.log({sumLink}); - if(!sumLink) throw new Error("Sum link associated with the pay link " + newLink.id + " is not found."); - - const fromLinkOfPaymentSelectQuery = await deep.select({ - id: paymentLink.from_id - }); - if(fromLinkOfPaymentSelectQuery.error) { throw new Error(fromLinkOfPaymentSelectQuery.error.message); } - const fromLinkOfPayment = fromLinkOfPaymentSelectQuery.data[0]; - console.log({fromLinkOfPayment}); - - const storageBusinessLinkSelectQuery = await deep.select({ - id: paymentLink.to_id - }); - if(storageBusinessLinkSelectQuery.error) { throw new Error(storageBusinessLinkSelectQuery.error.message); } - const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; - console.log({storageBusinessLinkId}); - - const usesTokenTypeLinkId = await deep.id("${packageName}", "UsesToken"); - const usesTokenLinkSelectQuery = await deep.select({ - type_id: usesTokenTypeLinkId, - from_id: storageBusinessLinkId, - }); - if(usesTokenLinkSelectQuery.error) {throw new Error(usesTokenLinkSelectQuery.error.message);} - const usesTokenLink = usesTokenLinkSelectQuery.data[0]; - console.log({usesTokenLink}); - - const tokenLinkSelectQuery = await deep.select({ - id: usesTokenLink.to_id, - }); - if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} - const tokenLink = tokenLinkSelectQuery.data[0]; - console.log({tokenLink}); - - const init = ${init.toString()}; - - const options = { - TerminalKey: tokenLink.value.value, - OrderId: "" + Date.now() + paymentLink.id, - CustomerKey: deep.linkId, - NotificationURL: "${notificationUrl}", - PayType: 'T', - Amount: sumLink.value.value, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: "${userEmail}", - Phone: "${userPhone}", - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: sum, - // Quantity: 1, - // Amount: sumLink.value.value, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: "${userEmail}", - // Phone: "${userPhone}", - // Taxation: 'usn_income', - // } - }; - console.log({options}); - - let initResult = await init(options); - console.log({initResult}); - if (initResult.error) { - const errorMessage = "Could not initialize the order. " + initResult.error; - const {error: errorLinkInsertQueryError} = await deep.insert({ - type_id: (await deep.id("${packageName}", "Error")), - from_id: tinkoffProviderLinkId, - to_id: newLink.id, - string: { data: { value: errorMessage } }, - }); - if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } - throw new Error(errorMessage); - } - - const urlTypeLinkId = await deep.id("${packageName}", "Url"); - const {error: urlLinkInsertQueryError} = await deep.insert({ - type_id: urlTypeLinkId, - from_id: tinkoffProviderLinkId, - to_id: newLink.id, - string: { data: { value: initResult.response.PaymentURL } }, - }); - if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } - - const paymentValueLinkInsertQuery = await deep.insert({link_id: paymentLink.id, value: {bankPaymentId: parseInt(initResult.response.PaymentId)}}, {table: "objects"}) - if(paymentValueLinkInsertQuery.error) { throw new Error(paymentValueLinkInsertQuery.error.message); } - console.log(JSON.stringify(paymentValueLinkInsertQuery)); - - return initResult; -}; -`; - -return await insertHandler({deep, fileTypeLinkId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeLinkId: payTypeLinkId, code, supportsId: dockerSupportsJsId, handleOperationTypeLinkId: handleInsertTypeLinkId, containTypeLinkId, packageId, handlerTypeLinkId, code}); + } diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 863b6769..46db362b 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -45,6 +45,10 @@ const {testCharge: callRealizationTestCharge} = require('./deep-packages/payment const {testAddCustomer: callRealizationTestAddCustomer} = require('./deep-packages/payments/tinkoff/tests/realization/testAddCustomer.cjs'); const {testGetCustomer: callRealizationTestGetCustomer} = require('./deep-packages/payments/tinkoff/tests/realization/testGetCustomer.cjs'); const {testRemoveCustomer: callRealizationTestRemoveCustomer} = require('./deep-packages/payments/tinkoff/tests/realization/testRemoveCustomer.cjs'); +const { errors } = require("./errors.cjs"); +const { getError } = require("./getError.cjs"); +const { getUrlString } = require("./getUrl.cjs"); +const { generateTokenStringWithInsertedTerminalPassword } = require("./generateToken.cjs"); console.log('Installing payments-tinkoff-c2b package'); @@ -72,6 +76,7 @@ for (const requiredEnvVariableName of requiredEnvVariableNames) { // process.exit(1); const allCreatedLinkIds = []; +const PACKAGE_NAME = "@deep-foundation/payments-tinkoff-c2b"; const installPackage = async () => { const apolloClient = generateApolloClient({ @@ -349,7 +354,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: deep.linkId, + from_id: packageId, }, ], }, @@ -361,7 +366,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: deep.linkId, + from_id: packageId, }, ], }, @@ -373,7 +378,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: deep.linkId, + from_id: packageId, }, ], }, @@ -385,7 +390,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: deep.linkId, + from_id: packageId, }, ], }, @@ -397,7 +402,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: deep.linkId, + from_id: packageId, }, ], }, @@ -409,7 +414,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: deep.linkId, + from_id: packageId, }, ], }, @@ -421,7 +426,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: deep.linkId, + from_id: packageId, }, ], }, @@ -528,6 +533,136 @@ const installPackage = async () => { console.log({ incomeTypeLinkId }); debugger; + const code = ` + async ({ deep, require, data: { newLink } }) => { + const crypto = require('crypto'); + const axios = require('axios'); + const errors = ${JSON.stringify(errors)}; + const getError = ${getError.toString()}; + const getUrl = ${getUrlString}; + const generateToken = ${generateTokenStringWithInsertedTerminalPassword}; + + const tinkoffProviderTypeLinkId = await deep.id("${PACKAGE_NAME}", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: tinkoffProviderTypeLinkId + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; + + const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ + down: { + link_id: { _eq: newLink.id }, + tree_id: { _eq: await deep.id("${PACKAGE_NAME}", "paymentTree") }, + }, + }); + console.log({mpDownPay}); + if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } + + const paymentTypeLinkId = await deep.id("${PACKAGE_NAME}", "Payment"); + const paymentLink = mpDownPay.find(link => link.type_id === paymentTypeLinkId); + console.log({paymentLink}); + if(!paymentLink) throw new Error("Payment link associated with the pay link " + newLink.id + " is not found."); + + const sumTypeLinkId = await deep.id("${PACKAGE_NAME}", "Sum"); + const sumLink = mpDownPay.find(link => link.type_id === sumTypeLinkId); + console.log({sumLink}); + if(!sumLink) throw new Error("Sum link associated with the pay link " + newLink.id + " is not found."); + + const fromLinkOfPaymentSelectQuery = await deep.select({ + id: paymentLink.from_id + }); + if(fromLinkOfPaymentSelectQuery.error) { throw new Error(fromLinkOfPaymentSelectQuery.error.message); } + const fromLinkOfPayment = fromLinkOfPaymentSelectQuery.data[0]; + console.log({fromLinkOfPayment}); + + const storageBusinessLinkSelectQuery = await deep.select({ + id: paymentLink.to_id + }); + if(storageBusinessLinkSelectQuery.error) { throw new Error(storageBusinessLinkSelectQuery.error.message); } + const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; + console.log({storageBusinessLinkId}); + + const usesTokenTypeLinkId = await deep.id("${PACKAGE_NAME}", "UsesToken"); + const usesTokenLinkSelectQuery = await deep.select({ + type_id: usesTokenTypeLinkId, + from_id: storageBusinessLinkId, + }); + if(usesTokenLinkSelectQuery.error) {throw new Error(usesTokenLinkSelectQuery.error.message);} + const usesTokenLink = usesTokenLinkSelectQuery.data[0]; + console.log({usesTokenLink}); + + const tokenLinkSelectQuery = await deep.select({ + id: usesTokenLink.to_id, + }); + if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} + const tokenLink = tokenLinkSelectQuery.data[0]; + console.log({tokenLink}); + + const init = ${init.toString()}; + + const options = { + TerminalKey: tokenLink.value.value, + OrderId: "" + Date.now() + paymentLink.id, + CustomerKey: deep.linkId, + NotificationURL: "${notificationUrl}", + PayType: 'T', + Amount: sumLink.value.value, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: "${userEmail}", + Phone: "${userPhone}", + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: sumLink.value.value, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: "${userEmail}", + // Phone: "${userPhone}", + // Taxation: 'usn_income', + // } + }; + console.log({options}); + + let initResult = await init(options); + console.log({initResult}); + if (initResult.error) { + const errorMessage = "Could not initialize the order. " + initResult.error; + const {error: errorLinkInsertQueryError} = await deep.insert({ + type_id: (await deep.id("${PACKAGE_NAME}", "Error")), + from_id: tinkoffProviderLinkId, + to_id: newLink.id, + string: { data: { value: errorMessage } }, + }); + if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } + throw new Error(errorMessage); + } + + const urlTypeLinkId = await deep.id("${PACKAGE_NAME}", "Url"); + const {error: urlLinkInsertQueryError} = await deep.insert({ + type_id: urlTypeLinkId, + from_id: tinkoffProviderLinkId, + to_id: newLink.id, + string: { data: { value: initResult.response.PaymentURL } }, + }); + if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } + + const paymentValueLinkInsertQuery = await deep.insert({link_id: paymentLink.id, value: {bankPaymentId: parseInt(initResult.response.PaymentId)}}, {table: "objects"}) + if(paymentValueLinkInsertQuery.error) { throw new Error(paymentValueLinkInsertQuery.error.message); } + console.log(JSON.stringify(paymentValueLinkInsertQuery)); + + return initResult; + }; +`; + +await insertHandler({deep, fileTypeLinkId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeLinkId: payTypeLinkId, code, supportsId: dockerSupportsJsId, handleOperationTypeLinkId: handleInsertTypeLinkId, containTypeLinkId, packageId, handlerTypeLinkId, code}); await insertTinkoffPayInsertHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",deep, containTypeLinkId, fileTypeLinkId: syncTextFileTypeLinkId, handleInsertTypeLinkId, handlerTypeLinkId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE, dockerSupportsJsId, payTypeLinkId}); const tinkoffNotificationOnConfirmedCode = ` From 4a56925598e62fd5e856dd37b04363558659f424 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 17 Feb 2023 16:57:44 +0000 Subject: [PATCH 649/683] Revert "Update draft" This reverts commit a957885e35150e57eebb2aa8a6a8011a17b0aae9. --- payments-tinkoff-c2b.cjs | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 46db362b..c5f80b99 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -946,19 +946,6 @@ await insertHandler({deep, fileTypeLinkId, fileName: 'payInsertHandlerFile', han createdLinkIds.push(objectLinkId); allCreatedLinkIds.push(objectLinkId); - console.log({ - type_id: payTypeLinkId, - from_id: deep.linkId, - to_id: sumLinkId, - in: { - data: [ - { - type_id: containTypeLinkId, - from_id: deep.linkId, - }, - ], - }, - }) const { data: [{ id: payLinkId }], } = await deep.insert({ From ff182072ac13bd2200a57125340597f16f884a02 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 17 Feb 2023 16:57:53 +0000 Subject: [PATCH 650/683] Revert "Update draft" This reverts commit 4554c5cfc227b82e79207cb7a2611b25bffcd258. --- .../payments/tinkoff/payInsertHandler.cjs | 126 ------------------ 1 file changed, 126 deletions(-) delete mode 100644 deep-packages/payments/tinkoff/payInsertHandler.cjs diff --git a/deep-packages/payments/tinkoff/payInsertHandler.cjs b/deep-packages/payments/tinkoff/payInsertHandler.cjs deleted file mode 100644 index 95988cf2..00000000 --- a/deep-packages/payments/tinkoff/payInsertHandler.cjs +++ /dev/null @@ -1,126 +0,0 @@ -// async ({ deep, require, data: { newLink } }) => { -// const crypto = require('crypto'); -// const axios = require('axios'); -// const errors = ${JSON.stringify(errors)}; -// const getError = ${getError.toString()}; -// const getUrl = ${getUrlString}; -// const generateToken = ${generateTokenStringWithInsertedTerminalPassword}; - -// const tinkoffProviderTypeLinkId = await deep.id("${PACKAGE_NAME}", "TinkoffProvider"); -// const tinkoffProviderLinkSelectQuery = await deep.select({ -// type_id: tinkoffProviderTypeLinkId -// }); -// if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} -// const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; - -// const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ -// down: { -// link_id: { _eq: newLink.id }, -// tree_id: { _eq: await deep.id("${PACKAGE_NAME}", "paymentTree") }, -// }, -// }); -// console.log({mpDownPay}); -// if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } - -// const paymentTypeLinkId = await deep.id("${PACKAGE_NAME}", "Payment"); -// const paymentLink = mpDownPay.find(link => link.type_id === paymentTypeLinkId); -// console.log({paymentLink}); -// if(!paymentLink) throw new Error("Payment link associated with the pay link " + newLink.id + " is not found."); - -// const sumTypeLinkId = await deep.id("${PACKAGE_NAME}", "Sum"); -// const sumLink = mpDownPay.find(link => link.type_id === sumTypeLinkId); -// console.log({sumLink}); -// if(!sumLink) throw new Error("Sum link associated with the pay link " + newLink.id + " is not found."); - -// const fromLinkOfPaymentSelectQuery = await deep.select({ -// id: paymentLink.from_id -// }); -// if(fromLinkOfPaymentSelectQuery.error) { throw new Error(fromLinkOfPaymentSelectQuery.error.message); } -// const fromLinkOfPayment = fromLinkOfPaymentSelectQuery.data[0]; -// console.log({fromLinkOfPayment}); - -// const storageBusinessLinkSelectQuery = await deep.select({ -// id: paymentLink.to_id -// }); -// if(storageBusinessLinkSelectQuery.error) { throw new Error(storageBusinessLinkSelectQuery.error.message); } -// const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; -// console.log({storageBusinessLinkId}); - -// const usesTokenTypeLinkId = await deep.id("${PACKAGE_NAME}", "UsesToken"); -// const usesTokenLinkSelectQuery = await deep.select({ -// type_id: usesTokenTypeLinkId, -// from_id: storageBusinessLinkId, -// }); -// if(usesTokenLinkSelectQuery.error) {throw new Error(usesTokenLinkSelectQuery.error.message);} -// const usesTokenLink = usesTokenLinkSelectQuery.data[0]; -// console.log({usesTokenLink}); - -// const tokenLinkSelectQuery = await deep.select({ -// id: usesTokenLink.to_id, -// }); -// if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} -// const tokenLink = tokenLinkSelectQuery.data[0]; -// console.log({tokenLink}); - -// const init = ${init.toString()}; - -// const options = { -// TerminalKey: tokenLink.value.value, -// OrderId: "" + Date.now() + paymentLink.id, -// CustomerKey: deep.linkId, -// NotificationURL: "${notificationUrl}", -// PayType: 'T', -// Amount: sumLink.value.value, -// Description: 'Test shopping', -// Language: 'ru', -// Recurrent: 'Y', -// DATA: { -// Email: "${userEmail}", -// Phone: "${userPhone}", -// }, -// // Receipt: { -// // Items: [{ -// // Name: 'Test item', -// // Price: sum, -// // Quantity: 1, -// // Amount: sumLink.value.value, -// // PaymentMethod: 'prepayment', -// // PaymentObject: 'service', -// // Tax: 'none', -// // }], -// // Email: "${userEmail}", -// // Phone: "${userPhone}", -// // Taxation: 'usn_income', -// // } -// }; -// console.log({options}); - -// let initResult = await init(options); -// console.log({initResult}); -// if (initResult.error) { -// const errorMessage = "Could not initialize the order. " + initResult.error; -// const {error: errorLinkInsertQueryError} = await deep.insert({ -// type_id: (await deep.id("${PACKAGE_NAME}", "Error")), -// from_id: tinkoffProviderLinkId, -// to_id: newLink.id, -// string: { data: { value: errorMessage } }, -// }); -// if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } -// throw new Error(errorMessage); -// } - -// const urlTypeLinkId = await deep.id("${PACKAGE_NAME}", "Url"); -// const {error: urlLinkInsertQueryError} = await deep.insert({ -// type_id: urlTypeLinkId, -// from_id: tinkoffProviderLinkId, -// to_id: newLink.id, -// string: { data: { value: initResult.response.PaymentURL } }, -// }); -// if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } - -// const paymentValueLinkInsertQuery = await deep.insert({link_id: paymentLink.id, value: {bankPaymentId: parseInt(initResult.response.PaymentId)}}, {table: "objects"}) -// if(paymentValueLinkInsertQuery.error) { throw new Error(paymentValueLinkInsertQuery.error.message); } -// console.log(JSON.stringify(paymentValueLinkInsertQuery)); - -// return initResult; -// }; \ No newline at end of file From 6eb715decc454dba3dc34ae9b63ae848e1a4704b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 17 Feb 2023 16:58:01 +0000 Subject: [PATCH 651/683] Revert "Update draft" This reverts commit 7549496aefbb13f4282ac5ed67b0b7beb009aa1e. --- deep-packages/insertHandler.cjs | 6 +- deep-packages/insertNotificationHandler.cjs | 108 +++++-------- .../tinkoff/insertTinkoffPayInsertHandler.cjs | 126 ++++++++++++++- payments-tinkoff-c2b.cjs | 149 +----------------- 4 files changed, 176 insertions(+), 213 deletions(-) diff --git a/deep-packages/insertHandler.cjs b/deep-packages/insertHandler.cjs index 7f92aa56..e5b5d28b 100644 --- a/deep-packages/insertHandler.cjs +++ b/deep-packages/insertHandler.cjs @@ -5,7 +5,7 @@ exports.insertHandler = async ({deep,fileTypeLinkId, fileName, handlerName, hand data: [ { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageId, // before created package string: { data: { value: fileName } }, }, { @@ -15,7 +15,7 @@ exports.insertHandler = async ({deep,fileTypeLinkId, fileName, handlerName, hand data: [ { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageId, // before created package string: { data: { value: handlerName } }, }, { @@ -25,7 +25,7 @@ exports.insertHandler = async ({deep,fileTypeLinkId, fileName, handlerName, hand data: [ { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageId, // before created package string: { data: { value: handleName } }, }, ], diff --git a/deep-packages/insertNotificationHandler.cjs b/deep-packages/insertNotificationHandler.cjs index e50cee3f..e6be85da 100644 --- a/deep-packages/insertNotificationHandler.cjs +++ b/deep-packages/insertNotificationHandler.cjs @@ -6,36 +6,53 @@ return await deep.insert( data: { value: notificationPort }, }, in: { - data: [ - { - type_id: routerListeningTypeLinkId, - from: { - data: { - type_id: routerTypeLinkId, - in: [ - { + data: { + type_id: routerListeningTypeLinkId, + from: { + data: { + type_id: routerTypeLinkId, + in: { + data: { + type_id: routerStringUseTypeLinkId, + string: { data: { - type_id: routerStringUseTypeLinkId, - string: { - data: { - value: - notificationRoute, - }, - }, - from: { + value: + notificationRoute, + }, + }, + from: { + data: { + type_id: routeTypeLinkId, + out: { data: { - type_id: routeTypeLinkId, - out: { + type_id: handleRouteTypeLinkId, + to: { data: { - type_id: handleRouteTypeLinkId, + type_id: handlerTypeLinkId, + from_id: supportsId, + in: { + data: { + type_id: containTypeLinkId, + // from_id: deep.linkId, + from_id: adminId, + string: { + data: { + value: handlerName, + }, + }, + }, + }, to: { data: { - type_id: handlerTypeLinkId, - from_id: supportsId, + type_id: fileTypeLinkId, + string: { + data: { + value: code, + }, + }, in: { data: { type_id: containTypeLinkId, - // from_id: deep.linkId, from_id: packageId, string: { data: { @@ -44,62 +61,19 @@ return await deep.insert( }, }, }, - to: { - data: { - type_id: fileTypeLinkId, - string: { - data: { - value: code, - }, - }, - in: { - data: { - type_id: containTypeLinkId, - from_id: packageId, - string: { - data: { - value: handlerName, - }, - }, - }, - }, - }, - }, }, }, }, }, }, }, - in: { - data: [ - { - type_id: containTypeLinkId, - from_id: packageId, - }, - ] - } }, }, - { - type_id: containTypeLinkId, - from_id: packageId, - }, - ], + }, }, }, - in : { - data: { - type_id: containTypeLinkId, - from_id: packageId, - }, - } - }, - { - type_id: containTypeLinkId, - from_id: packageId, }, - ], + }, }, }, { diff --git a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs index 93b96133..55e44394 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs @@ -3,6 +3,130 @@ const {handlersDependencies} = require("./handlersDependencies.cjs"); const {init} = require("./init.cjs"); exports.insertTinkoffPayInsertHandler = async ({packageName, deep, notificationUrl, userEmail, userPhone, fileTypeLinkId, containTypeLinkId, packageId, dockerSupportsJsId, handleInsertTypeLinkId, handlerTypeLinkId, payTypeLinkId}) => { - + const code = ` +async ({ deep, require, data: { newLink } }) => { + ${handlersDependencies} + + const tinkoffProviderTypeLinkId = await deep.id("${packageName}", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: tinkoffProviderTypeLinkId + }); + if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} + const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; + + const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ + down: { + link_id: { _eq: newLink.id }, + tree_id: { _eq: await deep.id("${packageName}", "paymentTree") }, + }, + }); + console.log({mpDownPay}); + if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } + + const paymentTypeLinkId = await deep.id("${packageName}", "Payment"); + const paymentLink = mpDownPay.find(link => link.type_id === paymentTypeLinkId); + console.log({paymentLink}); + if(!paymentLink) throw new Error("Payment link associated with the pay link " + newLink.id + " is not found."); + + const sumTypeLinkId = await deep.id("${packageName}", "Sum"); + const sumLink = mpDownPay.find(link => link.type_id === sumTypeLinkId); + console.log({sumLink}); + if(!sumLink) throw new Error("Sum link associated with the pay link " + newLink.id + " is not found."); + + const fromLinkOfPaymentSelectQuery = await deep.select({ + id: paymentLink.from_id + }); + if(fromLinkOfPaymentSelectQuery.error) { throw new Error(fromLinkOfPaymentSelectQuery.error.message); } + const fromLinkOfPayment = fromLinkOfPaymentSelectQuery.data[0]; + console.log({fromLinkOfPayment}); + + const storageBusinessLinkSelectQuery = await deep.select({ + id: paymentLink.to_id + }); + if(storageBusinessLinkSelectQuery.error) { throw new Error(storageBusinessLinkSelectQuery.error.message); } + const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; + console.log({storageBusinessLinkId}); + + const usesTokenTypeLinkId = await deep.id("${packageName}", "UsesToken"); + const usesTokenLinkSelectQuery = await deep.select({ + type_id: usesTokenTypeLinkId, + from_id: storageBusinessLinkId, + }); + if(usesTokenLinkSelectQuery.error) {throw new Error(usesTokenLinkSelectQuery.error.message);} + const usesTokenLink = usesTokenLinkSelectQuery.data[0]; + console.log({usesTokenLink}); + + const tokenLinkSelectQuery = await deep.select({ + id: usesTokenLink.to_id, + }); + if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} + const tokenLink = tokenLinkSelectQuery.data[0]; + console.log({tokenLink}); + + const init = ${init.toString()}; + + const options = { + TerminalKey: tokenLink.value.value, + OrderId: "" + Date.now() + paymentLink.id, + CustomerKey: deep.linkId, + NotificationURL: "${notificationUrl}", + PayType: 'T', + Amount: sumLink.value.value, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: "${userEmail}", + Phone: "${userPhone}", + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: sumLink.value.value, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: "${userEmail}", + // Phone: "${userPhone}", + // Taxation: 'usn_income', + // } + }; + console.log({options}); + + let initResult = await init(options); + console.log({initResult}); + if (initResult.error) { + const errorMessage = "Could not initialize the order. " + initResult.error; + const {error: errorLinkInsertQueryError} = await deep.insert({ + type_id: (await deep.id("${packageName}", "Error")), + from_id: tinkoffProviderLinkId, + to_id: newLink.id, + string: { data: { value: errorMessage } }, + }); + if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } + throw new Error(errorMessage); + } + + const urlTypeLinkId = await deep.id("${packageName}", "Url"); + const {error: urlLinkInsertQueryError} = await deep.insert({ + type_id: urlTypeLinkId, + from_id: tinkoffProviderLinkId, + to_id: newLink.id, + string: { data: { value: initResult.response.PaymentURL } }, + }); + if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } + + const paymentValueLinkInsertQuery = await deep.insert({link_id: paymentLink.id, value: {bankPaymentId: parseInt(initResult.response.PaymentId)}}, {table: "objects"}) + if(paymentValueLinkInsertQuery.error) { throw new Error(paymentValueLinkInsertQuery.error.message); } + console.log(JSON.stringify(paymentValueLinkInsertQuery)); + + return initResult; +}; +`; + +return await insertHandler({deep, fileTypeLinkId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeLinkId: payTypeLinkId, code, supportsId: dockerSupportsJsId, handleOperationTypeLinkId: handleInsertTypeLinkId, containTypeLinkId, packageId, handlerTypeLinkId, code}); } diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index c5f80b99..a659770a 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -45,10 +45,6 @@ const {testCharge: callRealizationTestCharge} = require('./deep-packages/payment const {testAddCustomer: callRealizationTestAddCustomer} = require('./deep-packages/payments/tinkoff/tests/realization/testAddCustomer.cjs'); const {testGetCustomer: callRealizationTestGetCustomer} = require('./deep-packages/payments/tinkoff/tests/realization/testGetCustomer.cjs'); const {testRemoveCustomer: callRealizationTestRemoveCustomer} = require('./deep-packages/payments/tinkoff/tests/realization/testRemoveCustomer.cjs'); -const { errors } = require("./errors.cjs"); -const { getError } = require("./getError.cjs"); -const { getUrlString } = require("./getUrl.cjs"); -const { generateTokenStringWithInsertedTerminalPassword } = require("./generateToken.cjs"); console.log('Installing payments-tinkoff-c2b package'); @@ -76,7 +72,6 @@ for (const requiredEnvVariableName of requiredEnvVariableNames) { // process.exit(1); const allCreatedLinkIds = []; -const PACKAGE_NAME = "@deep-foundation/payments-tinkoff-c2b"; const installPackage = async () => { const apolloClient = generateApolloClient({ @@ -354,7 +349,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: packageId, + from_id: deep.linkId, }, ], }, @@ -366,7 +361,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: packageId, + from_id: deep.linkId, }, ], }, @@ -378,7 +373,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: packageId, + from_id: deep.linkId, }, ], }, @@ -390,7 +385,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: packageId, + from_id: deep.linkId, }, ], }, @@ -402,7 +397,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: packageId, + from_id: deep.linkId, }, ], }, @@ -414,7 +409,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: packageId, + from_id: deep.linkId, }, ], }, @@ -426,7 +421,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: packageId, + from_id: deep.linkId, }, ], }, @@ -533,136 +528,6 @@ const installPackage = async () => { console.log({ incomeTypeLinkId }); debugger; - const code = ` - async ({ deep, require, data: { newLink } }) => { - const crypto = require('crypto'); - const axios = require('axios'); - const errors = ${JSON.stringify(errors)}; - const getError = ${getError.toString()}; - const getUrl = ${getUrlString}; - const generateToken = ${generateTokenStringWithInsertedTerminalPassword}; - - const tinkoffProviderTypeLinkId = await deep.id("${PACKAGE_NAME}", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: tinkoffProviderTypeLinkId - }); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; - - const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ - down: { - link_id: { _eq: newLink.id }, - tree_id: { _eq: await deep.id("${PACKAGE_NAME}", "paymentTree") }, - }, - }); - console.log({mpDownPay}); - if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } - - const paymentTypeLinkId = await deep.id("${PACKAGE_NAME}", "Payment"); - const paymentLink = mpDownPay.find(link => link.type_id === paymentTypeLinkId); - console.log({paymentLink}); - if(!paymentLink) throw new Error("Payment link associated with the pay link " + newLink.id + " is not found."); - - const sumTypeLinkId = await deep.id("${PACKAGE_NAME}", "Sum"); - const sumLink = mpDownPay.find(link => link.type_id === sumTypeLinkId); - console.log({sumLink}); - if(!sumLink) throw new Error("Sum link associated with the pay link " + newLink.id + " is not found."); - - const fromLinkOfPaymentSelectQuery = await deep.select({ - id: paymentLink.from_id - }); - if(fromLinkOfPaymentSelectQuery.error) { throw new Error(fromLinkOfPaymentSelectQuery.error.message); } - const fromLinkOfPayment = fromLinkOfPaymentSelectQuery.data[0]; - console.log({fromLinkOfPayment}); - - const storageBusinessLinkSelectQuery = await deep.select({ - id: paymentLink.to_id - }); - if(storageBusinessLinkSelectQuery.error) { throw new Error(storageBusinessLinkSelectQuery.error.message); } - const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; - console.log({storageBusinessLinkId}); - - const usesTokenTypeLinkId = await deep.id("${PACKAGE_NAME}", "UsesToken"); - const usesTokenLinkSelectQuery = await deep.select({ - type_id: usesTokenTypeLinkId, - from_id: storageBusinessLinkId, - }); - if(usesTokenLinkSelectQuery.error) {throw new Error(usesTokenLinkSelectQuery.error.message);} - const usesTokenLink = usesTokenLinkSelectQuery.data[0]; - console.log({usesTokenLink}); - - const tokenLinkSelectQuery = await deep.select({ - id: usesTokenLink.to_id, - }); - if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} - const tokenLink = tokenLinkSelectQuery.data[0]; - console.log({tokenLink}); - - const init = ${init.toString()}; - - const options = { - TerminalKey: tokenLink.value.value, - OrderId: "" + Date.now() + paymentLink.id, - CustomerKey: deep.linkId, - NotificationURL: "${notificationUrl}", - PayType: 'T', - Amount: sumLink.value.value, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: "${userEmail}", - Phone: "${userPhone}", - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: sum, - // Quantity: 1, - // Amount: sumLink.value.value, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: "${userEmail}", - // Phone: "${userPhone}", - // Taxation: 'usn_income', - // } - }; - console.log({options}); - - let initResult = await init(options); - console.log({initResult}); - if (initResult.error) { - const errorMessage = "Could not initialize the order. " + initResult.error; - const {error: errorLinkInsertQueryError} = await deep.insert({ - type_id: (await deep.id("${PACKAGE_NAME}", "Error")), - from_id: tinkoffProviderLinkId, - to_id: newLink.id, - string: { data: { value: errorMessage } }, - }); - if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } - throw new Error(errorMessage); - } - - const urlTypeLinkId = await deep.id("${PACKAGE_NAME}", "Url"); - const {error: urlLinkInsertQueryError} = await deep.insert({ - type_id: urlTypeLinkId, - from_id: tinkoffProviderLinkId, - to_id: newLink.id, - string: { data: { value: initResult.response.PaymentURL } }, - }); - if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } - - const paymentValueLinkInsertQuery = await deep.insert({link_id: paymentLink.id, value: {bankPaymentId: parseInt(initResult.response.PaymentId)}}, {table: "objects"}) - if(paymentValueLinkInsertQuery.error) { throw new Error(paymentValueLinkInsertQuery.error.message); } - console.log(JSON.stringify(paymentValueLinkInsertQuery)); - - return initResult; - }; -`; - -await insertHandler({deep, fileTypeLinkId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeLinkId: payTypeLinkId, code, supportsId: dockerSupportsJsId, handleOperationTypeLinkId: handleInsertTypeLinkId, containTypeLinkId, packageId, handlerTypeLinkId, code}); await insertTinkoffPayInsertHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",deep, containTypeLinkId, fileTypeLinkId: syncTextFileTypeLinkId, handleInsertTypeLinkId, handlerTypeLinkId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE, dockerSupportsJsId, payTypeLinkId}); const tinkoffNotificationOnConfirmedCode = ` From cdd0a52add11e880c10b77f793c0a2d3874e0620 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 17 Feb 2023 17:02:20 +0000 Subject: [PATCH 652/683] Contain tree in package --- payments-tinkoff-c2b.cjs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index a659770a..edc08836 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -349,7 +349,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: deep.linkId, + from_id: packageId, }, ], }, @@ -361,7 +361,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: deep.linkId, + from_id: packageId, }, ], }, @@ -373,7 +373,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: deep.linkId, + from_id: packageId, }, ], }, @@ -385,7 +385,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: deep.linkId, + from_id: packageId, }, ], }, @@ -397,7 +397,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: deep.linkId, + from_id: packageId, }, ], }, @@ -409,7 +409,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: deep.linkId, + from_id: packageId, }, ], }, @@ -421,7 +421,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: deep.linkId, + from_id: packageId, }, ], }, From 20d37ab1abf17b071271d9c4d61841437275b89e Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 17 Feb 2023 17:02:33 +0000 Subject: [PATCH 653/683] update submit button selector --- deep-packages/payments/tinkoff/payInBrowser.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deep-packages/payments/tinkoff/payInBrowser.cjs b/deep-packages/payments/tinkoff/payInBrowser.cjs index e62218ca..d67a7590 100644 --- a/deep-packages/payments/tinkoff/payInBrowser.cjs +++ b/deep-packages/payments/tinkoff/payInBrowser.cjs @@ -72,7 +72,7 @@ exports.payInBrowser = async ({ page, browser, url }) => { process.env.PAYMENTS_C2B_CARD_CVC ); // CVC code await sleep(300); - await page.click('button[automation-id="pay-wallet__submit"]'); // submit button + await page.click('button[automation-id="card-form__submit"]'); // submit button // await sleep(300); // await page.waitForSelector('input[name="password"]'); // const code = prompt('enter code '); From b5320032f0be2308473a26044fe48fe725e34dd8 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 17 Feb 2023 17:04:41 +0000 Subject: [PATCH 654/683] Use triggeredByLinkId as customer key instead of deep.linkId --- .../payments/tinkoff/insertTinkoffPayInsertHandler.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs index 55e44394..f98a6af1 100644 --- a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs +++ b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs @@ -4,7 +4,7 @@ const {init} = require("./init.cjs"); exports.insertTinkoffPayInsertHandler = async ({packageName, deep, notificationUrl, userEmail, userPhone, fileTypeLinkId, containTypeLinkId, packageId, dockerSupportsJsId, handleInsertTypeLinkId, handlerTypeLinkId, payTypeLinkId}) => { const code = ` -async ({ deep, require, data: { newLink } }) => { +async ({ deep, require, data: { newLink, triggeredByLinkId } }) => { ${handlersDependencies} const tinkoffProviderTypeLinkId = await deep.id("${packageName}", "TinkoffProvider"); @@ -68,7 +68,7 @@ async ({ deep, require, data: { newLink } }) => { const options = { TerminalKey: tokenLink.value.value, OrderId: "" + Date.now() + paymentLink.id, - CustomerKey: deep.linkId, + CustomerKey: triggeredByLinkId, NotificationURL: "${notificationUrl}", PayType: 'T', Amount: sumLink.value.value, From a62d7d50a75449db7b5d0db3de91e1293ac766fe Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 20 Feb 2023 06:53:46 +0000 Subject: [PATCH 655/683] Make payments-tinkoff-c2b workable --- deep-packages/insertNotificationHandler.cjs | 124 ++++++--- .../tinkoff/tinkoffNotificationHandler.ts | 240 ++++++++++++++++++ payments-tinkoff-c2b.cjs | 217 ++++++---------- 3 files changed, 408 insertions(+), 173 deletions(-) create mode 100644 deep-packages/payments/tinkoff/tinkoffNotificationHandler.ts diff --git a/deep-packages/insertNotificationHandler.cjs b/deep-packages/insertNotificationHandler.cjs index e6be85da..c4820881 100644 --- a/deep-packages/insertNotificationHandler.cjs +++ b/deep-packages/insertNotificationHandler.cjs @@ -6,53 +6,67 @@ return await deep.insert( data: { value: notificationPort }, }, in: { - data: { - type_id: routerListeningTypeLinkId, - from: { - data: { - type_id: routerTypeLinkId, - in: { - data: { - type_id: routerStringUseTypeLinkId, - string: { - data: { - value: - notificationRoute, - }, - }, - from: { - data: { - type_id: routeTypeLinkId, - out: { + data: [ + { + type_id: routerListeningTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageId, + }, + }, + from: { + data: { + type_id: routerTypeLinkId, + in: { + data: [ + { + type_id: routerStringUseTypeLinkId, + in: { data: { - type_id: handleRouteTypeLinkId, - to: { + type_id: containTypeLinkId, + from_id: packageId, + string: { data: { - type_id: handlerTypeLinkId, - from_id: supportsId, + value: handlerName, + }, + }, + }, + }, + string: { + data: { + value: + notificationRoute, + }, + }, + from: { + data: { + type_id: routeTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageId, + }, + }, + out: { + data: { + type_id: handleRouteTypeLinkId, in: { - data: { + data: [ + { type_id: containTypeLinkId, - // from_id: deep.linkId, - from_id: adminId, - string: { - data: { - value: handlerName, - }, - }, - }, + from_id: packageId, + } + ] }, to: { data: { - type_id: fileTypeLinkId, - string: { - data: { - value: code, - }, - }, + type_id: handlerTypeLinkId, + from_id: supportsId, in: { data: { type_id: containTypeLinkId, + // from_id: deep.linkId, from_id: packageId, string: { data: { @@ -61,6 +75,27 @@ return await deep.insert( }, }, }, + to: { + data: { + type_id: fileTypeLinkId, + string: { + data: { + value: code, + }, + }, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageId, + string: { + data: { + value: handlerName, + }, + }, + }, + }, + }, + }, }, }, }, @@ -68,12 +103,21 @@ return await deep.insert( }, }, }, - }, + { + type_id: containTypeLinkId, + from_id: packageId, + } + ], }, }, }, - }, - }, + } + , + { + type_id: containTypeLinkId, + from_id: packageId, + } + ], }, }, { diff --git a/deep-packages/payments/tinkoff/tinkoffNotificationHandler.ts b/deep-packages/payments/tinkoff/tinkoffNotificationHandler.ts new file mode 100644 index 00000000..fa4fad07 --- /dev/null +++ b/deep-packages/payments/tinkoff/tinkoffNotificationHandler.ts @@ -0,0 +1,240 @@ + +async ( + req, + res, + next, + { deep, require, gql } + ) => { + + const crypto = require('crypto'); + const axios = require('axios'); + const errors = { "7": "Покупатель не найден", "53": "Обратитесь к продавцу", "99": "Платеж отклонен", "100": "Повторите попытку позже", "101": "Не пройдена идентификация 3DS", "102": "Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой", "103": "Повторите попытку позже", "119": "Превышено кол-во запросов на авторизацию", "191": "Некорректный статус договора, обратитесь к вашему менеджеру", "1001": "Свяжитесь с банком, выпустившим карту, чтобы провести платеж", "1003": "Неверный merchant ID", "1004": "Карта украдена. Свяжитесь с банком, выпустившим карту", "1005": "Платеж отклонен банком, выпустившим карту", "1006": "Свяжитесь с банком, выпустившим карту, чтобы провести платеж", "1007": "Карта украдена. Свяжитесь с банком, выпустившим карту", "1008": "Платеж отклонен, необходима идентификация", "1012": "Такие операции запрещены для этой карты", "1013": "Повторите попытку позже", "1014": "Карта недействительна. Свяжитесь с банком, выпустившим карту", "1015": "Попробуйте снова или свяжитесь с банком, выпустившим карту", "1019": "Платеж отклонен — попробуйте снова", "1030": "Повторите попытку позже", "1033": "Истек срок действия карты. Свяжитесь с банком, выпустившим карту", "1034": "Попробуйте повторить попытку позже", "1038": "Превышено количество попыток ввода ПИН-кода", "1039": "Платеж отклонен — счет не найден", "1041": "Карта утеряна. Свяжитесь с банком, выпустившим карту", "1043": "Карта украдена. Свяжитесь с банком, выпустившим карту", "1051": "Недостаточно средств на карте", "1053": "Платеж отклонен — счет не найден", "1054": "Истек срок действия карты", "1055": "Неверный ПИН", "1057": "Такие операции запрещены для этой карты", "1058": "Такие операции запрещены для этой карты", "1059": "Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту", "1061": "Превышен дневной лимит платежей по карте", "1062": "Платежи по карте ограничены", "1063": "Операции по карте ограничены", "1064": "Проверьте сумму", "1065": "Превышен дневной лимит транзакций", "1075": "Превышено число попыток ввода ПИН-кода", "1076": "Платеж отклонен — попробуйте снова", "1077": "Коды не совпадают — попробуйте снова", "1080": "Неверный срок действия", "1082": "Неверный CVV", "1086": "Платеж отклонен — не получилось подтвердить ПИН-код", "1088": "Ошибка шифрования. Попробуйте снова", "1089": "Попробуйте повторить попытку позже", "1091": "Банк, выпустивший карту недоступен для проведения авторизации", "1092": "Платеж отклонен — попробуйте снова", "1093": "Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту", "1094": "Системная ошибка", "1096": "Повторите попытку позже", "9999": "Внутренняя ошибка системы" }; + const getError = (errorCode) => + errorCode === '0' ? undefined : errors[errorCode] || 'broken'; + const getUrl = (method) => + `https://securepay.tinkoff.ru/v2/${method}`; + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + Password: "w4k58ksi9g5sammh", + ...restData, + }; + console.log({ dataWithPassword }); + + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + console.log({ dataString }); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + console.log({ hash }); + return hash; + }; + + + if (!(req.body.Status === "AUTHORIZED" || req.body.Status === "CONFIRMED")) { + return next(); + } + + if (req.body.Status === 'AUTHORIZED') { + const reqBody = req.body; + console.log({ reqBody }); + + const tinkoffProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: tinkoffProviderTypeLinkId + }); + if (tinkoffProviderLinkSelectQuery.error) { throw new Error(tinkoffProviderLinkSelectQuery.error.message); } + const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; + console.log({ tinkoffProviderLinkId }); + + console.log(JSON.stringify(await deep.select({ type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment") }))) + console.log("Select args:", JSON.stringify({ + object: { value: { _contains: { bankPaymentId: req.body.PaymentId } } } + })) + + const paymentLinkSelectQuery = await deep.select({ + object: { value: { _contains: { bankPaymentId: parseInt(req.body.PaymentId) } } } + }); + if (paymentLinkSelectQuery.error) { throw new Error(paymentLinkSelectQuery.error.message); } + const paymentLink = paymentLinkSelectQuery.data[0]; + console.log({ paymentLink }); + if (!paymentLink) { throw new Error("The payment link associated with the bank payment id " + req.body.PaymentId + " is not found."); } + + const { data: mpUpPayment, error: mpUpPaymentSelectQueryError } = await deep.select({ + up: { + parent_id: { _eq: paymentLink.id }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } + } + }); + console.log({ mpUpPayment }); + if (mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } + + const payTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + const payLink = mpUpPayment.find(link => link.type_id === payTypeLinkId); + console.log({ payLink }); + if (!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } + + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: getUrl('Confirm'), + data: { ...options, Token: generateToken(options) }, + }); + + const error = getError(response.data.ErrorCode); + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const storageReceiverLinkSelectQuery = await deep.select({ + id: paymentLink.to_id + }); + if (storageReceiverLinkSelectQuery.error) { throw new Error(storageReceiverLinkSelectQuery.error.message); } + const storageReceiverId = storageReceiverLinkSelectQuery.data[0].id; + console.log({ storageReceiverId }); + + + const usesTokenTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "UsesToken"); + const usesTokenLinkSelectQuery = await deep.select({ + type_id: usesTokenTypeLinkId, + from_id: storageReceiverId, + }); + if (usesTokenLinkSelectQuery.error) { throw new Error(usesTokenLinkSelectQuery.error.message); } + const usesTokenLink = usesTokenLinkSelectQuery.data[0]; + console.log({ usesTokenLink }); + + const tokenLinkSelectQuery = await deep.select({ + id: usesTokenLink.to_id, + }); + if (tokenLinkSelectQuery.error) { throw new Error(tokenLinkSelectQuery.error.message); } + const tokenLink = tokenLinkSelectQuery.data[0]; + console.log({ tokenLink }); + + const confirmOptions = { + TerminalKey: tokenLink.value.value, + PaymentId: req.body.PaymentId, + Amount: req.body.Amount, + // Receipt: req.body.Receipt, + }; + console.log({ confirmOptions }); + + const confirmResult = await confirm(confirmOptions); + console.log({ confirmResult }); + + if (confirmResult.error) { + const errorMessage = "Could not confirm the pay. " + confirmResult.error; + const { error: errorLinkInsertError } = await deep.insert({ + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), + from_id: tinkoffProviderLinkId, + to_id: payLink.id, + string: { data: { value: errorMessage } }, + }); + if (errorLinkInsertError) { throw new Error(errorLinkInsertError); } + throw new Error(errorMessage); + } + + return confirmResult; + } else if (req.body.Status === 'CONFIRMED') { + + + const tinkoffProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const tinkoffProviderLinkSelectQuery = await deep.select({ + type_id: tinkoffProviderTypeLinkId + }); + if (tinkoffProviderLinkSelectQuery.error) { throw new Error(tinkoffProviderLinkSelectQuery.error.message); } + const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; + console.log({ tinkoffProviderLinkId }); + + const paymentLinkSelectQuery = await deep.select({ + object: { value: { _contains: { bankPaymentId: parseInt(req.body.PaymentId) } } } + }); + if (paymentLinkSelectQuery.error) { throw new Error(paymentLinkSelectQuery.error.message); } + const paymentLink = paymentLinkSelectQuery.data[0]; + console.log({ paymentLink }); + if (!paymentLink) { throw new Error("The payment link associated with the bank payment id " + req.body.PaymentId + " is not found."); } + + const { data: mpUpPayment, error: mpUpPaymentSelectQueryError } = await deep.select({ + up: { + parent_id: { _eq: paymentLink.id }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } + } + }); + console.log({ mpUpPayment }); + if (mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } + + const payTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + const payLink = mpUpPayment.find(link => link.type_id === payTypeLinkId); + console.log({ payLink }); + if (!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } + + const payedLinkInsertQuery = await deep.insert({ + type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), + from_id: tinkoffProviderLinkId, + to_id: payLink.id, + }); + if (payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } + const payedLinkId = payedLinkInsertQuery.data[0].id; + console.log({ payedLinkId }); + + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + const storageClientLinkSelectQuery = await deep.select({ + type_id: StorageClient, + number: { value: req.body.CardId } + }); + console.log({ storageClientLinkSelectQuery }); + if (storageClientLinkSelectQuery.error) { throw new Error(storageClientLinkSelectQuery.error.message); } + + if (fromLinkOfPayment.type_id !== StorageClient) { + var storageClientLinkId; + if (storageClientLinkSelectQuery.data.length === 0) { + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + const storageClientLinkInsertQuery = await deep.insert({ + type_id: StorageClient, + number: { data: { value: req.body.CardId } }, + }); + console.log({ storageClientLinkInsertQuery }); + if (storageClientLinkInsertQuery.error) { throw new Error(storageClientLinkInsertQuery.error.message); } + storageClientLinkId = storageClientLinkInsertQuery.data[0].id; + + const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); + const titleLinkInsertQuery = await deep.insert({ + type_id: Title, + from_id: storageClientLinkId, + to_id: storageClientLinkId, + string: { data: { value: req.body.Pan } }, + }); + if (titleLinkInsertQuery.error) { throw new Error(titleLinkInsertQuery.error.message); } + const titleLinkId = titleLinkInsertQuery.data[0].id; + console.log({ titleLinkId }); + } else { + storageClientLinkId = storageClientLinkSelectQuery.data[0]; + } + const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); + const incomeLinkInsertQuery = await deep.insert({ + type_id: Income, + from_id: paymentLink.id, + to_id: storageClientLinkId, + }); + if (incomeLinkInsertQuery.error) { throw new Error(incomeLinkInsertQuery.error.message); } + const incomeLinkId = incomeLinkInsertQuery.data[0].id; + console.log({ incomeLinkId }); + + } + + } + res.send('ok'); + }; + \ No newline at end of file diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index edc08836..b6c4095c 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -19,8 +19,8 @@ const { default: links, } = require('@deep-foundation/deeplinks/imports/router/links'); var myEnv = dotenv.config(); -const {payInBrowser} = require("./deep-packages/payments/tinkoff/payInBrowser.cjs"); -const {getError} = require("./deep-packages/payments/tinkoff/getError.cjs"); +const { payInBrowser } = require("./deep-packages/payments/tinkoff/payInBrowser.cjs"); +const { getError } = require("./deep-packages/payments/tinkoff/getError.cjs"); const { generateToken, generateTokenStringWithInsertedTerminalPassword } = require("./deep-packages/payments/tinkoff/generateToken.cjs"); const { getUrl } = require("./deep-packages/payments/tinkoff/getUrl.cjs"); const { getState } = require("./deep-packages/payments/tinkoff/getState.cjs"); @@ -34,36 +34,37 @@ const { removeCustomer } = require("./deep-packages/payments/tinkoff/removeCusto const { handlersDependencies } = require("./deep-packages/payments/tinkoff/handlersDependencies.cjs"); const { insertTinkoffPayInsertHandler } = require("./deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs"); const { insertTinkoffNotificationHandler } = require("./deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs"); -const {sleep} = require("./deep-packages/sleep.cjs"); -const {confirm} = require("./deep-packages/payments/tinkoff/confirm.cjs"); -const {testInit: callRealizationTestInit} = require('./deep-packages/payments/tinkoff/tests/realization/testInit.cjs'); -const {testConfirm: callRealizationTestConfirm} = require('./deep-packages/payments/tinkoff/tests/realization/testConfirm.cjs'); -const {testGetState: callRealizationTestGetState} = require('./deep-packages/payments/tinkoff/tests/realization/testGetState.cjs'); -const {testGetCardList: callRealizationTestGetCardList} = require('./deep-packages/payments/tinkoff/tests/realization/testGetCardList.cjs'); -const {testResend: callRealizationTestResend} = require('./deep-packages/payments/tinkoff/tests/realization/testResend.cjs'); -const {testCharge: callRealizationTestCharge} = require('./deep-packages/payments/tinkoff/tests/realization/testCharge.cjs'); -const {testAddCustomer: callRealizationTestAddCustomer} = require('./deep-packages/payments/tinkoff/tests/realization/testAddCustomer.cjs'); -const {testGetCustomer: callRealizationTestGetCustomer} = require('./deep-packages/payments/tinkoff/tests/realization/testGetCustomer.cjs'); -const {testRemoveCustomer: callRealizationTestRemoveCustomer} = require('./deep-packages/payments/tinkoff/tests/realization/testRemoveCustomer.cjs'); +const { sleep } = require("./deep-packages/sleep.cjs"); +const { confirm } = require("./deep-packages/payments/tinkoff/confirm.cjs"); +const { testInit: callRealizationTestInit } = require('./deep-packages/payments/tinkoff/tests/realization/testInit.cjs'); +const { testConfirm: callRealizationTestConfirm } = require('./deep-packages/payments/tinkoff/tests/realization/testConfirm.cjs'); +const { testGetState: callRealizationTestGetState } = require('./deep-packages/payments/tinkoff/tests/realization/testGetState.cjs'); +const { testGetCardList: callRealizationTestGetCardList } = require('./deep-packages/payments/tinkoff/tests/realization/testGetCardList.cjs'); +const { testResend: callRealizationTestResend } = require('./deep-packages/payments/tinkoff/tests/realization/testResend.cjs'); +const { testCharge: callRealizationTestCharge } = require('./deep-packages/payments/tinkoff/tests/realization/testCharge.cjs'); +const { testAddCustomer: callRealizationTestAddCustomer } = require('./deep-packages/payments/tinkoff/tests/realization/testAddCustomer.cjs'); +const { testGetCustomer: callRealizationTestGetCustomer } = require('./deep-packages/payments/tinkoff/tests/realization/testGetCustomer.cjs'); +const { testRemoveCustomer: callRealizationTestRemoveCustomer } = require('./deep-packages/payments/tinkoff/tests/realization/testRemoveCustomer.cjs'); +const fs = require('fs'); console.log('Installing payments-tinkoff-c2b package'); const requiredEnvVariableNames = [ -"PAYMENTS_C2B_TERMINAL_KEY", -"PAYMENTS_C2B_TERMINAL_PASSWORD", -"PAYMENTS_C2B_URL", -"PAYMENTS_C2B_NOTIFICATION_ROUTE", -"PAYMENTS_C2B_NOTIFICATION_PORT", -"PAYMENTS_C2B_NOTIFICATION_URL", -"PAYMENTS_C2B_CARD_NUMBER_SUCCESS", -"PAYMENTS_C2B_CARD_EXPDATE", -"PAYMENTS_C2B_CARD_CVC", -"PAYMENTS_C2B_PHONE", -"PAYMENTS_C2B_EMAIL", + "PAYMENTS_C2B_TERMINAL_KEY", + "PAYMENTS_C2B_TERMINAL_PASSWORD", + "PAYMENTS_C2B_URL", + "PAYMENTS_C2B_NOTIFICATION_ROUTE", + "PAYMENTS_C2B_NOTIFICATION_PORT", + "PAYMENTS_C2B_NOTIFICATION_URL", + "PAYMENTS_C2B_CARD_NUMBER_SUCCESS", + "PAYMENTS_C2B_CARD_EXPDATE", + "PAYMENTS_C2B_CARD_CVC", + "PAYMENTS_C2B_PHONE", + "PAYMENTS_C2B_EMAIL", ]; for (const requiredEnvVariableName of requiredEnvVariableNames) { - if(!process.env[requiredEnvVariableName]) { + if (!process.env[requiredEnvVariableName]) { throw new Error(`The environment variable ${requiredEnvVariableName} is required. All the required environment variables: \n${requiredEnvVariableNames.join("\n")}`); } } @@ -97,7 +98,7 @@ const installPackage = async () => { const joinTypeLinkId = await deep.id('@deep-foundation/core', 'Join'); const containTypeLinkId = await deep.id('@deep-foundation/core', 'Contain'); const packageTypeLinkId = await deep.id('@deep-foundation/core', 'Package'); - + const syncTextFileTypeLinkId = await deep.id('@deep-foundation/core', 'SyncTextFile'); const dockerSupportsJs = await deep.id( @@ -444,7 +445,7 @@ const installPackage = async () => { }, }, }); - console.log({storageBusinessTypeLinkId}); + console.log({ storageBusinessTypeLinkId }); const { data: [{ id: tokenTypeLinkId }], @@ -460,7 +461,7 @@ const installPackage = async () => { }, }, }); - console.log({tokenTypeLinkId}); + console.log({ tokenTypeLinkId }); const { data: [{ id: usesTokenTypeLinkId }], @@ -476,7 +477,7 @@ const installPackage = async () => { }, }, }); - console.log({usesTokenTypeLinkId}); + console.log({ usesTokenTypeLinkId }); const { @@ -493,7 +494,7 @@ const installPackage = async () => { }, }, }); - console.log({storageClientTypeLinkId}); + console.log({ storageClientTypeLinkId }); const { data: [{ id: titleTypeLinkId }], @@ -528,95 +529,45 @@ const installPackage = async () => { console.log({ incomeTypeLinkId }); debugger; - await insertTinkoffPayInsertHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",deep, containTypeLinkId, fileTypeLinkId: syncTextFileTypeLinkId, handleInsertTypeLinkId, handlerTypeLinkId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE, dockerSupportsJsId, payTypeLinkId}); - - const tinkoffNotificationOnConfirmedCode = ` - - const tinkoffProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: tinkoffProviderTypeLinkId - }); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; - console.log({tinkoffProviderLinkId}); + await insertTinkoffPayInsertHandler({ packageName: "@deep-foundation/payments-tinkoff-c2b", deep, containTypeLinkId, fileTypeLinkId: syncTextFileTypeLinkId, handleInsertTypeLinkId, handlerTypeLinkId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE, dockerSupportsJsId, payTypeLinkId }); + + await deep.insert({ + type_id: await deep.id('@deep-foundation/core', 'Port'), + number: { data: { value: process.env.PAYMENTS_C2B_NOTIFICATION_PORT } }, + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + from: { data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'RouterStringUse'), + string: { data: { value: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE } }, + from: { data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + out: { data: { + type_id: await deep.id('@deep-foundation/core', 'HandleRoute'), + to: { data: { + type_id: await deep.id('@deep-foundation/core', 'Handler'), + from_id: await deep.id('@deep-foundation/core', 'dockerSupportsJs'), + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'Contain'), + // from_id: deep.linkId, + from_id: await deep.id('deep', 'admin'), + string: { data: { value: 'passport' } }, + } }, + to: { data: { + type_id: await deep.id('@deep-foundation/core', 'SyncTextFile'), + string: { data: { + value: fs.readFileSync('./deep-packages/payments/tinkoff/tinkoffNotificationHandler.ts', {encoding: 'utf-8'}), + } }, + } }, + } }, + } }, + } }, + } }, + } }, + } }, + }) - const paymentLinkSelectQuery = await deep.select({ - object: {value: {_contains: {bankPaymentId: parseInt(req.body.PaymentId)}}} - }); - if(paymentLinkSelectQuery.error) { throw new Error(paymentLinkSelectQuery.error.message); } - const paymentLink = paymentLinkSelectQuery.data[0]; - console.log({paymentLink}); - if(!paymentLink) { throw new Error("The payment link associated with the bank payment id " + req.body.PaymentId + " is not found."); } - - const {data: mpUpPayment, error: mpUpPaymentSelectQueryError} = await deep.select({ - up: { - parent_id: { _eq: paymentLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } - } - }); - console.log({mpUpPayment}); - if(mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } - - const payTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); - const payLink = mpUpPayment.find(link => link.type_id === payTypeLinkId); - console.log({payLink}); - if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } - - const payedLinkInsertQuery = await deep.insert({ - type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), - from_id: tinkoffProviderLinkId, - to_id: payLink.id, - }); - if(payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } - const payedLinkId = payedLinkInsertQuery.data[0].id; - console.log({payedLinkId}); - - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - const storageClientLinkSelectQuery = await deep.select({ - type_id: StorageClient, - number: {value: req.body.CardId} - }); - console.log({storageClientLinkSelectQuery}); - if(storageClientLinkSelectQuery.error) {throw new Error(storageClientLinkSelectQuery.error.message);} - - if(fromLinkOfPayment.type_id !== StorageClient) { - var storageClientLinkId; - if(storageClientLinkSelectQuery.data.length === 0) { - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - const storageClientLinkInsertQuery = await deep.insert({ - type_id: StorageClient, - number: {data: {value: req.body.CardId}}, - }); - console.log({storageClientLinkInsertQuery}); - if(storageClientLinkInsertQuery.error) {throw new Error(storageClientLinkInsertQuery.error.message);} - storageClientLinkId = storageClientLinkInsertQuery.data[0].id; - - const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); - const titleLinkInsertQuery = await deep.insert({ - type_id: Title, - from_id: storageClientLinkId, - to_id: storageClientLinkId, - string: {data: {value: req.body.Pan}}, - }); - if(titleLinkInsertQuery.error) {throw new Error(titleLinkInsertQuery.error.message);} - const titleLinkId = titleLinkInsertQuery.data[0].id; - console.log({titleLinkId}); - } else { - storageClientLinkId = storageClientLinkSelectQuery.data[0]; - } - const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); - const incomeLinkInsertQuery = await deep.insert({ - type_id: Income, - from_id: paymentLink.id, - to_id: storageClientLinkId, - }); - if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} - const incomeLinkId = incomeLinkInsertQuery.data[0].id; - console.log({incomeLinkId}); - - } - `; - await insertTinkoffNotificationHandler({packageName: "@deep-foundation/payments-tinkoff-c2b",packageId,deep, adminId: await deep.id('deep', 'admin'), containTypeLinkId, fileTypeLinkId: syncTextFileTypeLinkId, handleRouteTypeLinkId, handlerTypeLinkId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeLinkId, routerListeningTypeLinkId, routerStringUseTypeLinkId, routerTypeLinkId, routeTypeLinkId, supportsId: dockerSupportsJsId, onConfirmedCode: tinkoffNotificationOnConfirmedCode}); const callTests = async () => { console.log('callTests-start'); @@ -925,25 +876,25 @@ const installPackage = async () => { } }; - const callTest = async (testFunction) => { - const { createdLinks } = await testFunction(); - for (const createdLink of createdLinks) { - if(createdLink.type_id === payTypeLinkId) { - const errorLinkSelectQuery = await deep.select({ - type_id: errorTypeLinkId, - to_id: createdLink.id - }); - createdLinks.push(...errorLinkSelectQuery.data); + const callTest = async (testFunction) => { + const { createdLinks } = await testFunction(); + for (const createdLink of createdLinks) { + if (createdLink.type_id === payTypeLinkId) { + const errorLinkSelectQuery = await deep.select({ + type_id: errorTypeLinkId, + to_id: createdLink.id + }); + createdLinks.push(...errorLinkSelectQuery.data); + } } + await deep.delete(createdLinks.map((link) => link.id)); } - await deep.delete(createdLinks.map((link) => link.id)); - } - await callTest(testInit); - await callTest(testFinishAuthorize); - await callTest(testConfirm); + await callTest(testInit); + await callTest(testFinishAuthorize); + await callTest(testConfirm); - // await deep.delete(createdLinkIds); + // await deep.delete(createdLinkIds); }; // await callRealizationTests(); From 993c86f650e9cf9f112abde4e0ca9a425542e758 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 20 Feb 2023 07:06:11 +0000 Subject: [PATCH 656/683] Remove unused comments --- payments-tinkoff-c2b.cjs | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index b6c4095c..49dca992 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -253,7 +253,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, // before created package + from_id: packageId, string: { data: { value: 'Sum' } }, }, }, @@ -271,7 +271,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, // before created package + from_id: packageId, string: { data: { value: 'Pay' } }, }, }, @@ -288,7 +288,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, // before created package + from_id: packageId, string: { data: { value: 'Url' } }, }, }, @@ -305,7 +305,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, // before created package + from_id: packageId, string: { data: { value: 'Payed' } }, }, }, @@ -322,7 +322,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, // before created package + from_id: packageId, string: { data: { value: 'Error' } }, }, }, @@ -440,7 +440,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, // before created package + from_id: packageId, string: { data: { value: 'StorageBusiness' } }, }, }, @@ -456,7 +456,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, // before created package + from_id: packageId, string: { data: { value: 'Token' } }, }, }, @@ -472,7 +472,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, // before created package + from_id: packageId, string: { data: { value: 'UsesToken' } }, }, }, @@ -489,7 +489,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, // before created package + from_id: packageId, string: { data: { value: 'StorageClient' } }, }, }, @@ -505,7 +505,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, // before created package + from_id: packageId, string: { data: { value: 'Title' } }, }, }, @@ -521,13 +521,12 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, // before created package + from_id: packageId, string: { data: { value: 'Income' } }, }, }, }); console.log({ incomeTypeLinkId }); - debugger; await insertTinkoffPayInsertHandler({ packageName: "@deep-foundation/payments-tinkoff-c2b", deep, containTypeLinkId, fileTypeLinkId: syncTextFileTypeLinkId, handleInsertTypeLinkId, handlerTypeLinkId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE, dockerSupportsJsId, payTypeLinkId }); From c5862460b8c95dda391e88197e7494fb98b49c6b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 20 Feb 2023 07:44:31 +0000 Subject: [PATCH 657/683] Use js handler, not ts --- ...inkoffNotificationHandler.ts => tinkoffNotificationHandler.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename deep-packages/payments/tinkoff/{tinkoffNotificationHandler.ts => tinkoffNotificationHandler.js} (100%) diff --git a/deep-packages/payments/tinkoff/tinkoffNotificationHandler.ts b/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js similarity index 100% rename from deep-packages/payments/tinkoff/tinkoffNotificationHandler.ts rename to deep-packages/payments/tinkoff/tinkoffNotificationHandler.js From 078c488a1381ed278407d3a76b5037084fc2b548 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 20 Feb 2023 07:44:40 +0000 Subject: [PATCH 658/683] Add contains --- payments-tinkoff-c2b.cjs | 70 ++++++++++++++++++++++++++++------------ 1 file changed, 49 insertions(+), 21 deletions(-) diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 49dca992..e517180a 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -533,38 +533,66 @@ const installPackage = async () => { await deep.insert({ type_id: await deep.id('@deep-foundation/core', 'Port'), number: { data: { value: process.env.PAYMENTS_C2B_NOTIFICATION_PORT } }, - in: { data: { - type_id: await deep.id('@deep-foundation/core', 'RouterListening'), - from: { data: { - type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { data: [ + { + type_id: await deep.id('@deep-foundation/core', 'Contain'), + from_id: deep.linkId, + }, + { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), in: { data: { - type_id: await deep.id('@deep-foundation/core', 'RouterStringUse'), - string: { data: { value: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE } }, - from: { data: { - type_id: await deep.id('@deep-foundation/core', 'Route'), - out: { data: { - type_id: await deep.id('@deep-foundation/core', 'HandleRoute'), - to: { data: { - type_id: await deep.id('@deep-foundation/core', 'Handler'), - from_id: await deep.id('@deep-foundation/core', 'dockerSupportsJs'), + type_id: await deep.id('@deep-foundation/core', 'Contain'), + from_id: packageId, + } }, + from: { data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'Contain'), + from_id: packageId, + } }, + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'RouterStringUse'), + string: { data: { value: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE } }, + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'Contain'), + from_id: deep.linkId, + } }, + from: { data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'Contain'), + from_id: packageId, + } }, + out: { data: { + type_id: await deep.id('@deep-foundation/core', 'HandleRoute'), in: { data: { type_id: await deep.id('@deep-foundation/core', 'Contain'), - // from_id: deep.linkId, - from_id: await deep.id('deep', 'admin'), - string: { data: { value: 'passport' } }, + from_id: packageId, } }, to: { data: { - type_id: await deep.id('@deep-foundation/core', 'SyncTextFile'), - string: { data: { - value: fs.readFileSync('./deep-packages/payments/tinkoff/tinkoffNotificationHandler.ts', {encoding: 'utf-8'}), + type_id: await deep.id('@deep-foundation/core', 'Handler'), + from_id: await deep.id('@deep-foundation/core', 'dockerSupportsJs'), + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'Contain'), + from_id: packageId, + } }, + to: { data: { + type_id: await deep.id('@deep-foundation/core', 'SyncTextFile'), + string: { data: { + value: fs.readFileSync('./deep-packages/payments/tinkoff/tinkoffNotificationHandler.js', {encoding: 'utf-8'}), + } }, + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'Contain'), + from_id: packageId, + } }, } }, } }, } }, } }, } }, } }, - } }, - } }, + } + ] }, }) From bb430d3eaf34a1162082708456829b9dda6c34ed Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 20 Feb 2023 11:40:41 +0000 Subject: [PATCH 659/683] Update draft --- .../payments/tinkoff/addCustomer.cjs | 2 +- deep-packages/payments/tinkoff/charge.cjs | 2 +- deep-packages/payments/tinkoff/checkOrder.cjs | 2 +- .../payments/tinkoff/getCardList.cjs | 2 +- .../payments/tinkoff/getCustomer.cjs | 2 +- deep-packages/payments/tinkoff/getState.cjs | 2 +- deep-packages/payments/tinkoff/init.cjs | 2 +- .../payments/tinkoff/payInsertHandler.js | 193 ++++++++ .../payments/tinkoff/removeCustomer.cjs | 2 +- deep-packages/payments/tinkoff/resend.cjs | 2 +- .../tinkoff/tinkoffNotificationHandler.js | 449 +++++++++--------- payments-tinkoff-c2b.cjs | 335 ++++++++++--- 12 files changed, 690 insertions(+), 305 deletions(-) create mode 100644 deep-packages/payments/tinkoff/payInsertHandler.js diff --git a/deep-packages/payments/tinkoff/addCustomer.cjs b/deep-packages/payments/tinkoff/addCustomer.cjs index 33d9fe99..4e777971 100644 --- a/deep-packages/payments/tinkoff/addCustomer.cjs +++ b/deep-packages/payments/tinkoff/addCustomer.cjs @@ -11,7 +11,7 @@ exports.addCustomer = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, tokenTypeLinkId: generateToken(options) }, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/charge.cjs b/deep-packages/payments/tinkoff/charge.cjs index 2b37dbdb..05218ffe 100644 --- a/deep-packages/payments/tinkoff/charge.cjs +++ b/deep-packages/payments/tinkoff/charge.cjs @@ -11,7 +11,7 @@ exports.charge = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, tokenTypeLinkId: generateToken(options) }, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/checkOrder.cjs b/deep-packages/payments/tinkoff/checkOrder.cjs index c8825d2e..3be6a611 100644 --- a/deep-packages/payments/tinkoff/checkOrder.cjs +++ b/deep-packages/payments/tinkoff/checkOrder.cjs @@ -11,7 +11,7 @@ exports.checkOrder = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, tokenTypeLinkId: generateToken(options) }, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/getCardList.cjs b/deep-packages/payments/tinkoff/getCardList.cjs index a3feb482..e97f6cd5 100644 --- a/deep-packages/payments/tinkoff/getCardList.cjs +++ b/deep-packages/payments/tinkoff/getCardList.cjs @@ -11,7 +11,7 @@ exports.getCardList = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, tokenTypeLinkId: generateToken(options) }, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode || '0'); diff --git a/deep-packages/payments/tinkoff/getCustomer.cjs b/deep-packages/payments/tinkoff/getCustomer.cjs index 5facebaf..0d06f7f0 100644 --- a/deep-packages/payments/tinkoff/getCustomer.cjs +++ b/deep-packages/payments/tinkoff/getCustomer.cjs @@ -11,7 +11,7 @@ exports.getCustomer = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, tokenTypeLinkId: generateToken(options) }, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/getState.cjs b/deep-packages/payments/tinkoff/getState.cjs index 994702ec..12448e81 100644 --- a/deep-packages/payments/tinkoff/getState.cjs +++ b/deep-packages/payments/tinkoff/getState.cjs @@ -8,7 +8,7 @@ exports.getState = async (options) => { const response = await axios({ method: 'post', url: getUrl('GetState'), - data: { ...options, tokenTypeLinkId: generateToken(options) }, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/init.cjs b/deep-packages/payments/tinkoff/init.cjs index ce3846f7..f9b727af 100644 --- a/deep-packages/payments/tinkoff/init.cjs +++ b/deep-packages/payments/tinkoff/init.cjs @@ -11,7 +11,7 @@ exports.init = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, tokenTypeLinkId: generateToken(options) }, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/payInsertHandler.js b/deep-packages/payments/tinkoff/payInsertHandler.js new file mode 100644 index 00000000..0bfe83c6 --- /dev/null +++ b/deep-packages/payments/tinkoff/payInsertHandler.js @@ -0,0 +1,193 @@ + +async ({ deep, require, data: { newLink: payLink, triggeredByLinkId } }) => { + + const crypto = require('crypto'); + const axios = require('axios'); + + const paymentTreeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree"); + const { data: linksUpToPayMp } = await deep.select({ + down: { + parent_id: { _eq: payLink.id }, + tree_id: { _eq: payTreeId } + } + }); + if (linksUpToPayMp.length === 0) { + throw new Error(`There is no links up to ##${payLink.id} materialized path`); + } + + const paymentTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); + const paymentLink = linksUpToPayMp.find(link => link.type_id === paymentTypeLinkId); + if (!paymentLink) throw new Error(`A link with type ##${paymentTypeLinkId} associated with the link ##${payLink.id} is not found`); + + const { data: [storageBusinessLink] } = await deep.select({ + id: paymentLink.to_id + }); + console.log({ storageBusinessLink }) + + const terminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TerminalPassword"); + const usesTerminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "UsesTerminalPassword"); + const { data: [terminalPasswordLink] } = await deep.select({ + type_id: terminalPasswordTypeLinkId, + in: { + type_id: usesTerminalPasswordTypeLinkId, + from_id: storageBusinessLink.id + } + }); + if (!terminalPasswordLink) { + throw new Error(`A link with type ##${terminalPasswordTypeLinkId} is not found`); + } + if (!terminalPasswordLink.value?.value) { + throw new Error(`##${terminalPasswordLink.id} must have a value`); + } + + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + Password: terminalPasswordLink.value.value, + ...restData, + }; + console.log({ dataWithPassword }); + + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + console.log({ dataString }); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + console.log({ hash }); + return hash; + }; + + const tinkoffProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const {data: [tinkoffProviderLink]} = await deep.select({ + type_id: tinkoffProviderTypeLinkId + }); + if(!tinkoffProviderLink) { + throw new Error(`A link with type ##${tinkoffProviderTypeLinkId} is not found`) + } + + const sumTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); + const sumLink = linksUpToPayMp.find(link => link.type_id === sumTypeLinkId); + console.log({ sumLink }); + if (!sumLink) throw new Error(`A link with type ##${sumTypeLinkId} associated with the link ##${payLink.id} is not found`); + if(!sumLink.value?.value) { + throw new Error(`##${sumLink.id} must have a value`) + } + + const terminalKeyTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TerminalKey"); + const usesTerminalKeyTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "UsesTerminalKey"); + const { data: [terminalKeyLink] } = await deep.select({ + type_id: terminalKeyTypeLinkId, + in: { + type_id: usesTerminalKeyTypeLinkId, + from_id: storageBusinessLink.id + } + }); + console.log({ terminalKeyLink }) + if (!terminalKeyLink) { + throw new Error(`A link with type ##${terminalKeyTypeLinkId} is not found`); + } + if (!terminalKeyLink.value?.value) { + throw new Error(`##${terminalKeyLink.id} must have a value`); + } + + const tinkoffApiUrlTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffApiUrl"); + const { data: [tinkoffApiUrlLinkId] } = await deep.select({ + type_id: tinkoffApiUrlTypeLinkId + }); + if (!tinkoffApiUrlLinkId) { + throw new Error(`A link with type ##${tinkoffApiUrlTypeLinkId} is not found`); + } + if (!tinkoffApiUrlLinkId.value?.value) { + throw new Error(`##${tinkoffApiUrlLinkId} must have a value`); + } + const tinkoffApiUrl = tinkoffApiUrlLinkId.value.value; + + const init = async (options) => { + try { + const response = await axios({ + method: 'post', + url: `${tinkoffApiUrl}/Init`, + headers: { + 'Content-Type': 'application/json', + }, + data: { ...options, Token: generateToken(options) }, + }); + + const error = response.data.Details; + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + const options = { + TerminalKey: terminalKeyLink.value.value, + OrderId: "" + Date.now() + paymentLink.id, + CustomerKey: triggeredByLinkId, + NotificationURL: "https://5237-deepfoundation-dev-ymdvap98nh7.ws-us87.gitpod.io/payments-tinkoff-c2b", + PayType: 'T', + Amount: sumLink.value.value, + Description: 'Test shopping', + Language: 'ru', + Recurrent: 'Y', + DATA: { + Email: "karafizi.artur@gmail.com", + Phone: "+79003201234", + }, + // Receipt: { + // Items: [{ + // Name: 'Test item', + // Price: sum, + // Quantity: 1, + // Amount: sumLink.value.value, + // PaymentMethod: 'prepayment', + // PaymentObject: 'service', + // Tax: 'none', + // }], + // Email: "karafizi.artur@gmail.com", + // Phone: "+79003201234", + // Taxation: 'usn_income', + // } + }; + console.log({ options }); + + let initResult = await init(options); + console.log({ initResult }); + if (initResult.error) { + const errorMessage = "Could not initialize the order. " + initResult.error; + const { error: errorLinkInsertQueryError } = await deep.insert({ + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), + from_id: tinkoffProviderLink.id, + to_id: payLink.id, + string: { data: { value: errorMessage } }, + }); + if (errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } + throw new Error(errorMessage); + } + + const urlTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); + const { error: urlLinkInsertQueryError } = await deep.insert({ + type_id: urlTypeLinkId, + from_id: tinkoffProviderLink.id, + to_id: payLink.id, + string: { data: { value: initResult.response.PaymentURL } }, + }); + if (urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } + + const paymentValueLinkInsertQuery = await deep.insert({ link_id: paymentLink.id, value: { bankPaymentId: parseInt(initResult.response.PaymentId) } }, { table: "objects" }); + console.log(`Setting ${initResult.response.PaymentId} as bankPaymentId for ${paymentLink.id}`) + if (paymentValueLinkInsertQuery.error) { throw new Error(paymentValueLinkInsertQuery.error.message); } + console.log(JSON.stringify(paymentValueLinkInsertQuery)); + + return initResult; +}; diff --git a/deep-packages/payments/tinkoff/removeCustomer.cjs b/deep-packages/payments/tinkoff/removeCustomer.cjs index 44343d80..2df30f3b 100644 --- a/deep-packages/payments/tinkoff/removeCustomer.cjs +++ b/deep-packages/payments/tinkoff/removeCustomer.cjs @@ -11,7 +11,7 @@ exports.removeCustomer = async (options) => { headers: { 'Content-Type': 'application/json', }, - data: { ...options, tokenTypeLinkId: generateToken(options) }, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/resend.cjs b/deep-packages/payments/tinkoff/resend.cjs index 96add949..d0d68998 100644 --- a/deep-packages/payments/tinkoff/resend.cjs +++ b/deep-packages/payments/tinkoff/resend.cjs @@ -8,7 +8,7 @@ exports.resend = async (options) => { const response = await axios({ method: 'post', url: getUrl('Resend'), - data: { ...options, tokenTypeLinkId: generateToken(options) }, + data: { ...options, Token: generateToken(options) }, }); const error = getError(response.data.ErrorCode); diff --git a/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js b/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js index fa4fad07..df468735 100644 --- a/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js +++ b/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js @@ -1,240 +1,231 @@ async ( - req, - res, - next, - { deep, require, gql } - ) => { - - const crypto = require('crypto'); - const axios = require('axios'); - const errors = { "7": "Покупатель не найден", "53": "Обратитесь к продавцу", "99": "Платеж отклонен", "100": "Повторите попытку позже", "101": "Не пройдена идентификация 3DS", "102": "Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой", "103": "Повторите попытку позже", "119": "Превышено кол-во запросов на авторизацию", "191": "Некорректный статус договора, обратитесь к вашему менеджеру", "1001": "Свяжитесь с банком, выпустившим карту, чтобы провести платеж", "1003": "Неверный merchant ID", "1004": "Карта украдена. Свяжитесь с банком, выпустившим карту", "1005": "Платеж отклонен банком, выпустившим карту", "1006": "Свяжитесь с банком, выпустившим карту, чтобы провести платеж", "1007": "Карта украдена. Свяжитесь с банком, выпустившим карту", "1008": "Платеж отклонен, необходима идентификация", "1012": "Такие операции запрещены для этой карты", "1013": "Повторите попытку позже", "1014": "Карта недействительна. Свяжитесь с банком, выпустившим карту", "1015": "Попробуйте снова или свяжитесь с банком, выпустившим карту", "1019": "Платеж отклонен — попробуйте снова", "1030": "Повторите попытку позже", "1033": "Истек срок действия карты. Свяжитесь с банком, выпустившим карту", "1034": "Попробуйте повторить попытку позже", "1038": "Превышено количество попыток ввода ПИН-кода", "1039": "Платеж отклонен — счет не найден", "1041": "Карта утеряна. Свяжитесь с банком, выпустившим карту", "1043": "Карта украдена. Свяжитесь с банком, выпустившим карту", "1051": "Недостаточно средств на карте", "1053": "Платеж отклонен — счет не найден", "1054": "Истек срок действия карты", "1055": "Неверный ПИН", "1057": "Такие операции запрещены для этой карты", "1058": "Такие операции запрещены для этой карты", "1059": "Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту", "1061": "Превышен дневной лимит платежей по карте", "1062": "Платежи по карте ограничены", "1063": "Операции по карте ограничены", "1064": "Проверьте сумму", "1065": "Превышен дневной лимит транзакций", "1075": "Превышено число попыток ввода ПИН-кода", "1076": "Платеж отклонен — попробуйте снова", "1077": "Коды не совпадают — попробуйте снова", "1080": "Неверный срок действия", "1082": "Неверный CVV", "1086": "Платеж отклонен — не получилось подтвердить ПИН-код", "1088": "Ошибка шифрования. Попробуйте снова", "1089": "Попробуйте повторить попытку позже", "1091": "Банк, выпустивший карту недоступен для проведения авторизации", "1092": "Платеж отклонен — попробуйте снова", "1093": "Подозрение в мошенничестве. Свяжитесь с банком, выпустившим карту", "1094": "Системная ошибка", "1096": "Повторите попытку позже", "9999": "Внутренняя ошибка системы" }; - const getError = (errorCode) => - errorCode === '0' ? undefined : errors[errorCode] || 'broken'; - const getUrl = (method) => - `https://securepay.tinkoff.ru/v2/${method}`; - const generateToken = (data) => { - const { Receipt, DATA, Shops, ...restData } = data; - const dataWithPassword = { - Password: "w4k58ksi9g5sammh", - ...restData, - }; - console.log({ dataWithPassword }); - - const dataString = Object.keys(dataWithPassword) - .sort((a, b) => a.localeCompare(b)) - .map((key) => dataWithPassword[key]) - .reduce((acc, item) => `${acc}${item}`, ''); - console.log({ dataString }); - const hash = crypto.createHash('sha256').update(dataString).digest('hex'); - console.log({ hash }); - return hash; - }; - - - if (!(req.body.Status === "AUTHORIZED" || req.body.Status === "CONFIRMED")) { - return next(); + req, + res, + next, + { deep, require, gql } +) => { + + const crypto = require('crypto'); + const axios = require('axios'); + + const tinkoffApiUrlTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffApiUrl"); + const { data: [tinkoffApiUrlLinkId] } = await deep.select({ + type_id: tinkoffApiUrlTypeLinkId + }); + if (!tinkoffApiUrlLinkId) { + throw new Error(`A link with type ##${tinkoffApiUrlTypeLinkId} is not found`); + } + if (!tinkoffApiUrlLinkId.value?.value) { + throw new Error(`##${tinkoffApiUrlLinkId} must have a value`); + } + const tinkoffApiUrl = tinkoffApiUrlLinkId.value.value; + + const allowedStatuses = ["AUTHORIZED", "CONFIRMED"]; + if (!allowedStatuses.includes(req.body.Status)) { + return next(); + } + + const tinkoffProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const { data: [tinkoffProviderLink] } = await deep.select({ + type_id: tinkoffProviderTypeLinkId + }); + if (!tinkoffProviderLink) { + throw new Error(`A link with type link id ##${tinkoffProviderTypeLinkId} is not found.`) + } + + const paymentTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); + const { data: [paymentLink] } = await deep.select({ + type_id: paymentTypeLinkId, + object: { value: { _contains: { bankPaymentId: parseInt(req.body.PaymentId) } } } + }); + if (!paymentLink) { throw new Error(`A link with type ##${paymentTypeLinkId} associated with the bank payment id ${req.body.PaymentId} is not found.`); } + + const paymentTreeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree"); + const { data: linksDownToPaymentMp } = await deep.select({ + up: { + parent_id: { _eq: paymentLink.id }, + tree_id: { _eq: paymentTreeId } } - - if (req.body.Status === 'AUTHORIZED') { - const reqBody = req.body; - console.log({ reqBody }); - - const tinkoffProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: tinkoffProviderTypeLinkId - }); - if (tinkoffProviderLinkSelectQuery.error) { throw new Error(tinkoffProviderLinkSelectQuery.error.message); } - const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; - console.log({ tinkoffProviderLinkId }); - - console.log(JSON.stringify(await deep.select({ type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment") }))) - console.log("Select args:", JSON.stringify({ - object: { value: { _contains: { bankPaymentId: req.body.PaymentId } } } - })) - - const paymentLinkSelectQuery = await deep.select({ - object: { value: { _contains: { bankPaymentId: parseInt(req.body.PaymentId) } } } - }); - if (paymentLinkSelectQuery.error) { throw new Error(paymentLinkSelectQuery.error.message); } - const paymentLink = paymentLinkSelectQuery.data[0]; - console.log({ paymentLink }); - if (!paymentLink) { throw new Error("The payment link associated with the bank payment id " + req.body.PaymentId + " is not found."); } - - const { data: mpUpPayment, error: mpUpPaymentSelectQueryError } = await deep.select({ - up: { - parent_id: { _eq: paymentLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } - } - }); - console.log({ mpUpPayment }); - if (mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } - - const payTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); - const payLink = mpUpPayment.find(link => link.type_id === payTypeLinkId); - console.log({ payLink }); - if (!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } - - const confirm = async (options) => { - try { - const response = await axios({ - method: 'post', - url: getUrl('Confirm'), - data: { ...options, Token: generateToken(options) }, - }); - - const error = getError(response.data.ErrorCode); - - return { - error, - request: options, - response: response.data, - }; - } catch (error) { - return { - error, - request: options, - response: null, - }; - } - }; - - const storageReceiverLinkSelectQuery = await deep.select({ - id: paymentLink.to_id - }); - if (storageReceiverLinkSelectQuery.error) { throw new Error(storageReceiverLinkSelectQuery.error.message); } - const storageReceiverId = storageReceiverLinkSelectQuery.data[0].id; - console.log({ storageReceiverId }); - - - const usesTokenTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "UsesToken"); - const usesTokenLinkSelectQuery = await deep.select({ - type_id: usesTokenTypeLinkId, - from_id: storageReceiverId, - }); - if (usesTokenLinkSelectQuery.error) { throw new Error(usesTokenLinkSelectQuery.error.message); } - const usesTokenLink = usesTokenLinkSelectQuery.data[0]; - console.log({ usesTokenLink }); - - const tokenLinkSelectQuery = await deep.select({ - id: usesTokenLink.to_id, - }); - if (tokenLinkSelectQuery.error) { throw new Error(tokenLinkSelectQuery.error.message); } - const tokenLink = tokenLinkSelectQuery.data[0]; - console.log({ tokenLink }); - - const confirmOptions = { - TerminalKey: tokenLink.value.value, - PaymentId: req.body.PaymentId, - Amount: req.body.Amount, - // Receipt: req.body.Receipt, - }; - console.log({ confirmOptions }); - - const confirmResult = await confirm(confirmOptions); - console.log({ confirmResult }); - - if (confirmResult.error) { - const errorMessage = "Could not confirm the pay. " + confirmResult.error; - const { error: errorLinkInsertError } = await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), - from_id: tinkoffProviderLinkId, - to_id: payLink.id, - string: { data: { value: errorMessage } }, + }); + if (linksDownToPaymentMp.length === 0) { + throw new Error(`There is no links down to ##${paymentLink.id} materialized path`); + } + + const payTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); + const payLink = linksDownToPaymentMp.find(link => link.type_id === payTypeLinkId); + console.log({ payLink }); + if (!payLink) { throw new Error(`A link with type ##${payTypeLinkId} associated with payment link ${paymentLink} is not found`) } + + console.log({ tinkoffApiUrl }) + console.log(`${tinkoffApiUrl}/Confirm`) + + const { data: [storageBusinessLink] } = await deep.select({ + id: paymentLink.to_id + }); + console.log({storageBusinessLink}) + + const terminalKeyTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TerminalKey"); + const usesTerminalKeyTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "UsesTerminalKey"); + const { data: [terminalKeyLink] } = await deep.select({ + type_id: terminalKeyTypeLinkId, + in: { + type_id: usesTerminalKeyTypeLinkId, + from_id: storageBusinessLink.id + } + }); + console.log({terminalKeyLink}) + if (!terminalKeyLink) { + throw new Error(`A link with type ##${terminalKeyTypeLinkId} is not found`); + } + if(!terminalKeyLink.value?.value) { + throw new Error(`##${terminalKeyLink.id} must have a value`); + } + + const terminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TerminalPassword"); + const usesTerminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "UsesTerminalPassword"); + const { data: [terminalPasswordLink] } = await deep.select({ + type_id: terminalPasswordTypeLinkId, + in: { + type_id: usesTerminalPasswordTypeLinkId, + from_id: storageBusinessLink.id + } + }); + console.log({terminalPasswordLink}) + if (!terminalPasswordLink) { + throw new Error(`A link with type ##${terminalPasswordTypeLinkId} is not found`); + } + if(!terminalPasswordLink.value?.value) { + throw new Error(`##${terminalPasswordLink.id} must have a value`); + } + + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + Password: terminalPasswordLink.value.value, + ...restData, + }; + console.log({ dataWithPassword }); + + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + console.log({ dataString }); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + console.log({ hash }); + return hash; + }; + + if (req.body.Status === 'AUTHORIZED') { + const confirm = async (options) => { + try { + const response = await axios({ + method: 'post', + url: `${tinkoffApiUrl}/Confirm`, + data: { ...options, Token: generateToken(options) }, }); - if (errorLinkInsertError) { throw new Error(errorLinkInsertError); } - throw new Error(errorMessage); + + const error = response.data.Details; + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; } - - return confirmResult; - } else if (req.body.Status === 'CONFIRMED') { - - - const tinkoffProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: tinkoffProviderTypeLinkId - }); - if (tinkoffProviderLinkSelectQuery.error) { throw new Error(tinkoffProviderLinkSelectQuery.error.message); } - const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; - console.log({ tinkoffProviderLinkId }); - - const paymentLinkSelectQuery = await deep.select({ - object: { value: { _contains: { bankPaymentId: parseInt(req.body.PaymentId) } } } - }); - if (paymentLinkSelectQuery.error) { throw new Error(paymentLinkSelectQuery.error.message); } - const paymentLink = paymentLinkSelectQuery.data[0]; - console.log({ paymentLink }); - if (!paymentLink) { throw new Error("The payment link associated with the bank payment id " + req.body.PaymentId + " is not found."); } - - const { data: mpUpPayment, error: mpUpPaymentSelectQueryError } = await deep.select({ - up: { - parent_id: { _eq: paymentLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") } - } - }); - console.log({ mpUpPayment }); - if (mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } - - const payTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Pay"); - const payLink = mpUpPayment.find(link => link.type_id === payTypeLinkId); - console.log({ payLink }); - if (!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } - - const payedLinkInsertQuery = await deep.insert({ - type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), - from_id: tinkoffProviderLinkId, + }; + + const confirmOptions = { + TerminalKey: terminalKeyLink.value.value, + PaymentId: req.body.PaymentId, + Amount: req.body.Amount, + // Receipt: req.body.Receipt, + }; + console.log({ confirmOptions }); + + const confirmResult = await confirm(confirmOptions); + console.log({ confirmResult }); + + if (confirmResult.error) { + const errorMessage = "Could not confirm the pay. " + confirmResult.error; + const { error: errorLinkInsertError } = await deep.insert({ + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), + from_id: tinkoffProviderLink.id, to_id: payLink.id, + string: { data: { value: errorMessage } }, }); - if (payedLinkInsertQuery.error) { throw new Error(payedLinkInsertQuery.error.message); } - const payedLinkId = payedLinkInsertQuery.data[0].id; - console.log({ payedLinkId }); - - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - const storageClientLinkSelectQuery = await deep.select({ - type_id: StorageClient, - number: { value: req.body.CardId } - }); - console.log({ storageClientLinkSelectQuery }); - if (storageClientLinkSelectQuery.error) { throw new Error(storageClientLinkSelectQuery.error.message); } - - if (fromLinkOfPayment.type_id !== StorageClient) { - var storageClientLinkId; - if (storageClientLinkSelectQuery.data.length === 0) { - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - const storageClientLinkInsertQuery = await deep.insert({ - type_id: StorageClient, - number: { data: { value: req.body.CardId } }, - }); - console.log({ storageClientLinkInsertQuery }); - if (storageClientLinkInsertQuery.error) { throw new Error(storageClientLinkInsertQuery.error.message); } - storageClientLinkId = storageClientLinkInsertQuery.data[0].id; - - const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); - const titleLinkInsertQuery = await deep.insert({ - type_id: Title, - from_id: storageClientLinkId, - to_id: storageClientLinkId, - string: { data: { value: req.body.Pan } }, - }); - if (titleLinkInsertQuery.error) { throw new Error(titleLinkInsertQuery.error.message); } - const titleLinkId = titleLinkInsertQuery.data[0].id; - console.log({ titleLinkId }); - } else { - storageClientLinkId = storageClientLinkSelectQuery.data[0]; - } - const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); - const incomeLinkInsertQuery = await deep.insert({ - type_id: Income, - from_id: paymentLink.id, + if (errorLinkInsertError) { throw new Error(errorLinkInsertError); } + throw new Error(errorMessage); + } + + return confirmResult; + } else if (req.body.Status === 'CONFIRMED') { + + const payedTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"); + const { data: [insertedPayedLink] } = await deep.insert({ + type_id: payedTypeLinkId, + from_id: tinkoffProviderLink.id, + to_id: payLink.id, + }); + if (payedLinkInsertQuery.error) { + throw new Error(payedLinkInsertQuery.error.message); + } + if (!insertedPayedLink) { + throw new Error(`Unable to insert a link with type ##${payedTypeLinkId}`) + } + + const storageClientTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + const storageClientLinkSelectQuery = await deep.select({ + type_id: storageClientTypeLinkId, + number: { value: req.body.CardId } + }); + console.log({ storageClientLinkSelectQuery }); + if (storageClientLinkSelectQuery.error) { throw new Error(storageClientLinkSelectQuery.error.message); } + + if (fromLinkOfPayment.type_id !== storageClientTypeLinkId) { + var storageClientLinkId; + if (storageClientLinkSelectQuery.data.length === 0) { + const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + const storageClientLinkInsertQuery = await deep.insert({ + type_id: StorageClient, + number: { data: { value: req.body.CardId } }, + }); + console.log({ storageClientLinkInsertQuery }); + if (storageClientLinkInsertQuery.error) { throw new Error(storageClientLinkInsertQuery.error.message); } + storageClientLinkId = storageClientLinkInsertQuery.data[0].id; + + const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); + const titleLinkInsertQuery = await deep.insert({ + type_id: Title, + from_id: storageClientLinkId, to_id: storageClientLinkId, + string: { data: { value: req.body.Pan } }, }); - if (incomeLinkInsertQuery.error) { throw new Error(incomeLinkInsertQuery.error.message); } - const incomeLinkId = incomeLinkInsertQuery.data[0].id; - console.log({ incomeLinkId }); - + if (titleLinkInsertQuery.error) { throw new Error(titleLinkInsertQuery.error.message); } + const titleLinkId = titleLinkInsertQuery.data[0].id; + console.log({ titleLinkId }); + } else { + storageClientLinkId = storageClientLinkSelectQuery.data[0]; } - + const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); + const incomeLinkInsertQuery = await deep.insert({ + type_id: Income, + from_id: paymentLink.id, + to_id: storageClientLinkId, + }); + if (incomeLinkInsertQuery.error) { throw new Error(incomeLinkInsertQuery.error.message); } + const incomeLinkId = incomeLinkInsertQuery.data[0].id; + console.log({ incomeLinkId }); + } - res.send('ok'); - }; - \ No newline at end of file + + } + res.send('ok'); +}; diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index e517180a..52a1ffd8 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -46,6 +46,7 @@ const { testAddCustomer: callRealizationTestAddCustomer } = require('./deep-pack const { testGetCustomer: callRealizationTestGetCustomer } = require('./deep-packages/payments/tinkoff/tests/realization/testGetCustomer.cjs'); const { testRemoveCustomer: callRealizationTestRemoveCustomer } = require('./deep-packages/payments/tinkoff/tests/realization/testRemoveCustomer.cjs'); const fs = require('fs'); +const { errors } = require('./deep-packages/payments/tinkoff/errors.cjs'); console.log('Installing payments-tinkoff-c2b package'); @@ -148,7 +149,7 @@ const installPackage = async () => { const storageTypeLinkId = await deep.id('@deep-foundation/payments', 'Storage'); const { - data: [{ id: packageId }], + data: [{ id: packageLinkId }], } = await deep.insert({ type_id: packageTypeLinkId, string: { data: { value: '@deep-foundation/payments-tinkoff-c2b' } }, @@ -174,7 +175,7 @@ const installPackage = async () => { }, }); - console.log({ packageId }); + console.log({ packageLinkId }); const { data: [{ id: sumProviderTypeLinkId }], @@ -185,7 +186,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, string: { data: { value: 'SumProvider' } }, }, }, @@ -202,7 +203,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, string: { data: { value: 'TinkoffProvider' } }, }, }, @@ -219,7 +220,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, string: { data: { value: 'Payment' } }, }, }, @@ -236,7 +237,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, string: { data: { value: 'Object' } }, }, }, @@ -253,7 +254,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, string: { data: { value: 'Sum' } }, }, }, @@ -271,7 +272,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, string: { data: { value: 'Pay' } }, }, }, @@ -288,7 +289,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, string: { data: { value: 'Url' } }, }, }, @@ -305,7 +306,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, string: { data: { value: 'Payed' } }, }, }, @@ -322,7 +323,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, string: { data: { value: 'Error' } }, }, }, @@ -337,7 +338,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, string: { data: { value: 'paymentTree' } }, }, }, @@ -350,7 +351,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, }, ], }, @@ -362,7 +363,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, }, ], }, @@ -374,7 +375,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, }, ], }, @@ -386,7 +387,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, }, ], }, @@ -398,7 +399,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, }, ], }, @@ -410,7 +411,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, }, ], }, @@ -422,7 +423,7 @@ const installPackage = async () => { data: [ { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, }, ], }, @@ -440,7 +441,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, string: { data: { value: 'StorageBusiness' } }, }, }, @@ -448,7 +449,7 @@ const installPackage = async () => { console.log({ storageBusinessTypeLinkId }); const { - data: [{ id: tokenTypeLinkId }], + data: [{ id: terminalpasswordTypeLinkId }], } = await deep.insert({ type_id: typeTypeLinkId, from_id: anyTypeLinkId, @@ -456,15 +457,15 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, - string: { data: { value: 'Token' } }, + from_id: packageLinkId, + string: { data: { value: 'TerminalPassword' } }, }, }, }); - console.log({ tokenTypeLinkId }); + console.log({ terminalpasswordTypeLinkId }); const { - data: [{ id: usesTokenTypeLinkId }], + data: [{ id: storageClientTypeLinkId }], } = await deep.insert({ type_id: typeTypeLinkId, from_id: anyTypeLinkId, @@ -472,16 +473,31 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, - string: { data: { value: 'UsesToken' } }, + from_id: packageLinkId, + string: { data: { value: 'StorageClient' } }, }, }, }); - console.log({ usesTokenTypeLinkId }); + console.log({ storageClientTypeLinkId }); + const { + data: [{ id: titleTypeLinkId }], + } = await deep.insert({ + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: 'Title' } }, + }, + }, + }); + console.log({ titleTypeLinkId }); const { - data: [{ id: storageClientTypeLinkId }], + data: [{ id: incomeTypeLinkId }], } = await deep.insert({ type_id: typeTypeLinkId, from_id: anyTypeLinkId, @@ -489,15 +505,30 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, - string: { data: { value: 'StorageClient' } }, + from_id: packageLinkId, + string: { data: { value: 'Income' } }, }, }, }); - console.log({ storageClientTypeLinkId }); + console.log({ incomeTypeLinkId }); const { - data: [{ id: titleTypeLinkId }], + data: [{ id: storageBusinessLinkId }], + } = await deep.insert({ + type_id: storageBusinessTypeLinkId, + in: { + data: [ + { + type_id: containTypeLinkId, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ storageBusinessLinkId }); + + const { + data: [{ id: terminalKeyTypeLinkId }], } = await deep.insert({ type_id: typeTypeLinkId, from_id: anyTypeLinkId, @@ -505,15 +536,15 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, - string: { data: { value: 'Title' } }, + from_id: packageLinkId, + string: { data: { value: 'TerminalKey' } }, }, }, }); - console.log({ titleTypeLinkId }); + console.log({ terminalKeyTypeLinkId }); const { - data: [{ id: incomeTypeLinkId }], + data: [{ id: usesTerminalKeyTypeLinkId }], } = await deep.insert({ type_id: typeTypeLinkId, from_id: anyTypeLinkId, @@ -521,14 +552,197 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, - string: { data: { value: 'Income' } }, + from_id: packageLinkId, + string: { data: { value: 'UsesTerminalKey' } }, }, }, }); - console.log({ incomeTypeLinkId }); + console.log({ usesTerminalKeyTypeLinkId }); + + const { + data: [{ id: terminalKeyLinkId }], + } = await deep.insert({ + type_id: terminalKeyTypeLinkId, + string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, + in: { + data: [ + { + type_id: containTypeLinkId, + from_id: deep.linkId, + }, + { + type_id: usesTerminalKeyTypeLinkId, + from_id: storageBusinessLinkId + }, + ], + }, + }); + console.log({ terminalKeyLinkId }); + + const { + data: [{ id: terminalPasswordTypeLinkId }], + } = await deep.insert({ + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: 'TerminalPassword' } }, + }, + }, + }); + console.log({ terminalPasswordTypeLinkId }); + + const { + data: [{ id: usesTerminalPasswordTypeLinkId }], + } = await deep.insert({ + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: 'UsesTerminalPassword' } }, + }, + }, + }); + console.log({ usesTerminalPasswordTypeLinkId }); - await insertTinkoffPayInsertHandler({ packageName: "@deep-foundation/payments-tinkoff-c2b", deep, containTypeLinkId, fileTypeLinkId: syncTextFileTypeLinkId, handleInsertTypeLinkId, handlerTypeLinkId, notificationUrl: process.env.PAYMENTS_C2B_NOTIFICATION_URL, packageId, supportsId: dockerSupportsJs, userEmail: process.env.PAYMENTS_C2B_EMAIL, userPhone: process.env.PAYMENTS_C2B_PHONE, dockerSupportsJsId, payTypeLinkId }); + const { + data: [{ id: terminalPasswordLinkId }], + } = await deep.insert({ + type_id: terminalPasswordTypeLinkId, + string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_PASSWORD } }, + in: { + data: [ + { + type_id: containTypeLinkId, + from_id: deep.linkId, + }, + { + type_id: usesTerminalPasswordTypeLinkId, + from_id: storageBusinessLinkId + }, + ], + }, + }); + console.log({ terminalPasswordLinkId }); + + const { + data: [{ id: tinkoffErrorCodesAndMessagesTypeLinkId }], + } = await deep.insert({ + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: 'TinkoffErrorCodesAndMessages' } }, + }, + }, + }); + console.log({ tinkoffErrorCodesAndMessagesTypeLinkId }); + + const { + data: [{ id: tinkoffErrorCodesAndMessagesLinkId }], + } = await deep.insert({ + type_id: tinkoffErrorCodesAndMessagesTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, + object: { + data: { + value: errors + } + }, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + }, + }, + }); + console.log({ tinkoffErrorCodesAndMessagesLinkId }); + + const { + data: [{ id: tinkoffApiUrlTypeLinkId }], + } = await deep.insert({ + type_id: typeTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: 'TinkoffApiUrl' } }, + }, + }, + }); + console.log({ tinkoffApiUrlTypeLinkId }); + + const { + data: [{ id: tinkoffApiUrlLinkId }], + } = await deep.insert({ + type_id: tinkoffApiUrlTypeLinkId, + object: { + data: { + value: process.env.PAYMENTS_C2B_URL + } + }, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + }, + }, + }); + console.log({ tinkoffApiUrlLinkId }); + + await deep.insert({ + type_id: await deep.id("@deep-foundation/core", "SyncTextFile"), + string: { + data: { + value: fs.readFileSync('./deep-packages/payments/tinkoff/payInsertHandler.js', {encoding: 'utf-8'}), + }, + }, + in: { + data: [ + { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: "TokenizerHandlerCode" } }, + }, + { + from_id: await deep.id("@deep-foundation/core", "dockerSupportsJs"), + type_id: await deep.id("@deep-foundation/core", "Handler"), + in: { + data: [ + { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: "TokenizerHandler" } }, + }, + { + type_id: await deep.id("@deep-foundation/core", "HandleInsert"), + from_id: payTypeLinkId, + in: { + data: [ + { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: "TokenizerHandle" } }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + + }); await deep.insert({ type_id: await deep.id('@deep-foundation/core', 'Port'), @@ -542,13 +756,13 @@ const installPackage = async () => { type_id: await deep.id('@deep-foundation/core', 'RouterListening'), in: { data: { type_id: await deep.id('@deep-foundation/core', 'Contain'), - from_id: packageId, + from_id: packageLinkId, } }, from: { data: { type_id: await deep.id('@deep-foundation/core', 'Router'), in: { data: { type_id: await deep.id('@deep-foundation/core', 'Contain'), - from_id: packageId, + from_id: packageLinkId, } }, in: { data: { type_id: await deep.id('@deep-foundation/core', 'RouterStringUse'), @@ -561,20 +775,20 @@ const installPackage = async () => { type_id: await deep.id('@deep-foundation/core', 'Route'), in: { data: { type_id: await deep.id('@deep-foundation/core', 'Contain'), - from_id: packageId, + from_id: packageLinkId, } }, out: { data: { type_id: await deep.id('@deep-foundation/core', 'HandleRoute'), in: { data: { type_id: await deep.id('@deep-foundation/core', 'Contain'), - from_id: packageId, + from_id: packageLinkId, } }, to: { data: { type_id: await deep.id('@deep-foundation/core', 'Handler'), from_id: await deep.id('@deep-foundation/core', 'dockerSupportsJs'), in: { data: { type_id: await deep.id('@deep-foundation/core', 'Contain'), - from_id: packageId, + from_id: packageLinkId, } }, to: { data: { type_id: await deep.id('@deep-foundation/core', 'SyncTextFile'), @@ -583,7 +797,7 @@ const installPackage = async () => { } }, in: { data: { type_id: await deep.id('@deep-foundation/core', 'Contain'), - from_id: packageId, + from_id: packageLinkId, } }, } }, } }, @@ -651,27 +865,14 @@ const installPackage = async () => { createdLinkIds.push(sumProviderLinkId); allCreatedLinkIds.push(sumProviderLinkId); - const { - data: [{ id: storageBusinessLinkId }], - } = await deep.insert({ - type_id: storageBusinessTypeLinkId, - in: { - data: [ - { - type_id: containTypeLinkId, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ storageBusinessLinkId }); + createdLinkIds.push(storageBusinessLinkId); allCreatedLinkIds.push(storageBusinessLinkId); const { - data: [{ id: tokenLinkId }], + data: [{ id: terminalpasswordLinkId }], } = await deep.insert({ - type_id: tokenTypeLinkId, + type_id: terminalpasswordTypeLinkId, string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, in: { data: [ @@ -680,15 +881,15 @@ const installPackage = async () => { from_id: deep.linkId, }, { - type_id: usesTokenTypeLinkId, + type_id: usesTerminalPasswordTypeLinkId, from_id: storageBusinessLinkId }, ], }, }); - console.log({ tokenLinkId }); - createdLinkIds.push(tokenLinkId); - allCreatedLinkIds.push(tokenLinkId); + console.log({ terminalpasswordLinkId }); + createdLinkIds.push(terminalpasswordLinkId); + allCreatedLinkIds.push(terminalpasswordLinkId); const { data: [{ id: productTypeLinkId }], From f9d7b17846b01265ac3f906b1e607dded6a74702 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 20 Feb 2023 15:59:54 +0000 Subject: [PATCH 660/683] Fix typo --- deep-packages/payments/tinkoff/payInsertHandler.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deep-packages/payments/tinkoff/payInsertHandler.js b/deep-packages/payments/tinkoff/payInsertHandler.js index 0bfe83c6..d96adb45 100644 --- a/deep-packages/payments/tinkoff/payInsertHandler.js +++ b/deep-packages/payments/tinkoff/payInsertHandler.js @@ -8,7 +8,7 @@ async ({ deep, require, data: { newLink: payLink, triggeredByLinkId } }) => { const { data: linksUpToPayMp } = await deep.select({ down: { parent_id: { _eq: payLink.id }, - tree_id: { _eq: payTreeId } + tree_id: { _eq: paymentTreeId } } }); if (linksUpToPayMp.length === 0) { From 2d192dd57a388f67d3bbd41c24e6982618615791 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Mon, 20 Feb 2023 16:21:25 +0000 Subject: [PATCH 661/683] Use link_id instead of parent_id to get linksUpToPayMp --- deep-packages/payments/tinkoff/payInsertHandler.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deep-packages/payments/tinkoff/payInsertHandler.js b/deep-packages/payments/tinkoff/payInsertHandler.js index d96adb45..c356097b 100644 --- a/deep-packages/payments/tinkoff/payInsertHandler.js +++ b/deep-packages/payments/tinkoff/payInsertHandler.js @@ -7,7 +7,7 @@ async ({ deep, require, data: { newLink: payLink, triggeredByLinkId } }) => { const paymentTreeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree"); const { data: linksUpToPayMp } = await deep.select({ down: { - parent_id: { _eq: payLink.id }, + link_id: { _eq: payLink.id }, tree_id: { _eq: paymentTreeId } } }); From 18a2663fba339d7d29c9cb5c805563ceb06c712c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 21 Feb 2023 14:10:18 +0000 Subject: [PATCH 662/683] Update payments-tinkoff-c2b draft --- .../payments/tinkoff/payInsertHandler.js | 98 +++++-- .../tinkoff/tinkoffNotificationHandler.js | 81 +++--- payments-tinkoff-c2b.cjs | 244 +++++++++++++----- 3 files changed, 283 insertions(+), 140 deletions(-) diff --git a/deep-packages/payments/tinkoff/payInsertHandler.js b/deep-packages/payments/tinkoff/payInsertHandler.js index c356097b..8bdbfaa8 100644 --- a/deep-packages/payments/tinkoff/payInsertHandler.js +++ b/deep-packages/payments/tinkoff/payInsertHandler.js @@ -6,13 +6,13 @@ async ({ deep, require, data: { newLink: payLink, triggeredByLinkId } }) => { const paymentTreeId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree"); const { data: linksUpToPayMp } = await deep.select({ - down: { - link_id: { _eq: payLink.id }, - tree_id: { _eq: paymentTreeId } - } + down: { + link_id: { _eq: payLink.id }, + tree_id: { _eq: paymentTreeId } + } }); if (linksUpToPayMp.length === 0) { - throw new Error(`There is no links up to ##${payLink.id} materialized path`); + throw new Error(`There is no links up to ##${payLink.id} materialized path`); } const paymentTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payment"); @@ -59,10 +59,10 @@ async ({ deep, require, data: { newLink: payLink, triggeredByLinkId } }) => { }; const tinkoffProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); - const {data: [tinkoffProviderLink]} = await deep.select({ + const { data: [tinkoffProviderLink] } = await deep.select({ type_id: tinkoffProviderTypeLinkId }); - if(!tinkoffProviderLink) { + if (!tinkoffProviderLink) { throw new Error(`A link with type ##${tinkoffProviderTypeLinkId} is not found`) } @@ -70,7 +70,7 @@ async ({ deep, require, data: { newLink: payLink, triggeredByLinkId } }) => { const sumLink = linksUpToPayMp.find(link => link.type_id === sumTypeLinkId); console.log({ sumLink }); if (!sumLink) throw new Error(`A link with type ##${sumTypeLinkId} associated with the link ##${payLink.id} is not found`); - if(!sumLink.value?.value) { + if (!sumLink.value?.value) { throw new Error(`##${sumLink.id} must have a value`) } @@ -92,16 +92,16 @@ async ({ deep, require, data: { newLink: payLink, triggeredByLinkId } }) => { } const tinkoffApiUrlTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffApiUrl"); - const { data: [tinkoffApiUrlLinkId] } = await deep.select({ - type_id: tinkoffApiUrlTypeLinkId + const { data: [tinkoffApiUrlLink] } = await deep.select({ + type_id: tinkoffApiUrlTypeLinkId }); - if (!tinkoffApiUrlLinkId) { - throw new Error(`A link with type ##${tinkoffApiUrlTypeLinkId} is not found`); + if (!tinkoffApiUrlLink) { + throw new Error(`A link with type ##${tinkoffApiUrlTypeLinkId} is not found`); } - if (!tinkoffApiUrlLinkId.value?.value) { - throw new Error(`##${tinkoffApiUrlLinkId} must have a value`); + if (!tinkoffApiUrlLink.value?.value) { + throw new Error(`##${tinkoffApiUrlLink.id} must have a value`); } - const tinkoffApiUrl = tinkoffApiUrlLinkId.value.value; + const tinkoffApiUrl = tinkoffApiUrlLink.value.value; const init = async (options) => { try { @@ -130,19 +130,64 @@ async ({ deep, require, data: { newLink: payLink, triggeredByLinkId } }) => { } }; + const containTypeLinkId = await deep.id("@deep-foundation/core", "Contain"); + const notificationUrlTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "NotificationUrl"); + const { data: [notificationUrlLink] } = await deep.select({ + type_id: notificationUrlTypeLinkId, + in: { + type_id: containTypeLinkId, + from_id: triggeredByLinkId + } + }); + if (!notificationUrlLink) { + throw new Error(`A link with type ##${notificationUrlTypeLinkId} is not found`); + } + if (!notificationUrlLink.value?.value) { + throw new Error(`##${notificationUrlLink.id} must have a value`) + } + + const emailTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Email"); + const { data: [emailLink] } = await deep.select({ + type_id: emailTypeLinkId, + in: { + type_id: containTypeLinkId, + from_id: triggeredByLinkId + } + }); + if (!emailLink) { + throw new Error(`A link with type ##${emailTypeLinkId} is not found`); + } + if (!emailLink.value?.value) { + throw new Error(`##${emailLink.id} must have a value`); + } + + const phoneNumberTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "PhoneNumber"); + const { data: [phoneNumberLink] } = await deep.select({ + type_id: phoneNumberTypeLinkId, + in: { + type_id: containTypeLinkId, + from_id: triggeredByLinkId + } + }); + if (!phoneNumberLink) { + throw new Error(`A link with type ##${phoneNumberTypeLinkId} is not found`); + } + if (!phoneNumberLink.value?.value) { + throw new Error(`##${phoneNumberLink.id} must have a value`); + } + const options = { TerminalKey: terminalKeyLink.value.value, OrderId: "" + Date.now() + paymentLink.id, CustomerKey: triggeredByLinkId, - NotificationURL: "https://5237-deepfoundation-dev-ymdvap98nh7.ws-us87.gitpod.io/payments-tinkoff-c2b", + NotificationURL: notificationUrlLink.value.value, PayType: 'T', Amount: sumLink.value.value, - Description: 'Test shopping', Language: 'ru', Recurrent: 'Y', DATA: { - Email: "karafizi.artur@gmail.com", - Phone: "+79003201234", + Email: emailLink.value.value, + Phone: phoneNumberLink.value.value, }, // Receipt: { // Items: [{ @@ -154,8 +199,8 @@ async ({ deep, require, data: { newLink: payLink, triggeredByLinkId } }) => { // PaymentObject: 'service', // Tax: 'none', // }], - // Email: "karafizi.artur@gmail.com", - // Phone: "+79003201234", + // Email: emailLinkId.value.value, + // Phone: phoneLinkId.value.value, // Taxation: 'usn_income', // } }; @@ -176,18 +221,17 @@ async ({ deep, require, data: { newLink: payLink, triggeredByLinkId } }) => { } const urlTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); - const { error: urlLinkInsertQueryError } = await deep.insert({ + await deep.insert({ type_id: urlTypeLinkId, from_id: tinkoffProviderLink.id, to_id: payLink.id, string: { data: { value: initResult.response.PaymentURL } }, }); - if (urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } - const paymentValueLinkInsertQuery = await deep.insert({ link_id: paymentLink.id, value: { bankPaymentId: parseInt(initResult.response.PaymentId) } }, { table: "objects" }); - console.log(`Setting ${initResult.response.PaymentId} as bankPaymentId for ${paymentLink.id}`) - if (paymentValueLinkInsertQuery.error) { throw new Error(paymentValueLinkInsertQuery.error.message); } - console.log(JSON.stringify(paymentValueLinkInsertQuery)); + await deep.insert( + { link_id: paymentLink.id, value: { bankPaymentId: parseInt(initResult.response.PaymentId) } }, + { table: "objects" } + ); return initResult; }; diff --git a/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js b/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js index df468735..0681186c 100644 --- a/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js +++ b/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js @@ -181,50 +181,43 @@ async ( throw new Error(`Unable to insert a link with type ##${payedTypeLinkId}`) } - const storageClientTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - const storageClientLinkSelectQuery = await deep.select({ - type_id: storageClientTypeLinkId, - number: { value: req.body.CardId } - }); - console.log({ storageClientLinkSelectQuery }); - if (storageClientLinkSelectQuery.error) { throw new Error(storageClientLinkSelectQuery.error.message); } - - if (fromLinkOfPayment.type_id !== storageClientTypeLinkId) { - var storageClientLinkId; - if (storageClientLinkSelectQuery.data.length === 0) { - const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - const storageClientLinkInsertQuery = await deep.insert({ - type_id: StorageClient, - number: { data: { value: req.body.CardId } }, - }); - console.log({ storageClientLinkInsertQuery }); - if (storageClientLinkInsertQuery.error) { throw new Error(storageClientLinkInsertQuery.error.message); } - storageClientLinkId = storageClientLinkInsertQuery.data[0].id; - - const Title = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); - const titleLinkInsertQuery = await deep.insert({ - type_id: Title, - from_id: storageClientLinkId, - to_id: storageClientLinkId, - string: { data: { value: req.body.Pan } }, - }); - if (titleLinkInsertQuery.error) { throw new Error(titleLinkInsertQuery.error.message); } - const titleLinkId = titleLinkInsertQuery.data[0].id; - console.log({ titleLinkId }); - } else { - storageClientLinkId = storageClientLinkSelectQuery.data[0]; - } - const Income = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); - const incomeLinkInsertQuery = await deep.insert({ - type_id: Income, - from_id: paymentLink.id, - to_id: storageClientLinkId, - }); - if (incomeLinkInsertQuery.error) { throw new Error(incomeLinkInsertQuery.error.message); } - const incomeLinkId = incomeLinkInsertQuery.data[0].id; - console.log({ incomeLinkId }); - - } + // TODO + // const storageClientTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + // const {data: [storageClientLink]} = await deep.select({ + // type_id: storageClientTypeLinkId, + // number: { value: req.body.CardId } + // }); + + + // if (fromLinkOfPayment.type_id !== storageClientTypeLinkId) { + // var storageClientLinkId; + // if (storageClientLinkSelectQuery.data.length === 0) { + // const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + // const storageClientLinkInsertQuery = await deep.insert({ + // type_id: StorageClient, + // number: { data: { value: req.body.CardId } }, + // }); + // console.log({ storageClientLinkInsertQuery }); + // if (storageClientLinkInsertQuery.error) { throw new Error(storageClientLinkInsertQuery.error.message); } + // storageClientLinkId = storageClientLinkInsertQuery.data[0].id; + + // const storageClientTitle = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClientTitle"); + // const storageClientTitleLinkInsertQuery = await deep.insert({ + // type_id: storageClientTitle, + // from_id: storageClientLinkId, + // to_id: storageClientLinkId, + // string: { data: { value: req.body.Pan } }, + // }); + // } else { + // storageClientLinkId = storageClientLinkSelectQuery.data[0]; + // } + // const incomeTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); + // await deep.insert({ + // type_id: incomeTypeLinkId, + // from_id: paymentLink.id, + // to_id: storageClientLinkId, + // }); + // } } res.send('ok'); diff --git a/payments-tinkoff-c2b.cjs b/payments-tinkoff-c2b.cjs index 52a1ffd8..51366401 100644 --- a/payments-tinkoff-c2b.cjs +++ b/payments-tinkoff-c2b.cjs @@ -60,7 +60,7 @@ const requiredEnvVariableNames = [ "PAYMENTS_C2B_CARD_NUMBER_SUCCESS", "PAYMENTS_C2B_CARD_EXPDATE", "PAYMENTS_C2B_CARD_CVC", - "PAYMENTS_C2B_PHONE", + "PAYMENTS_C2B_PHONE_NUMBER", "PAYMENTS_C2B_EMAIL", ]; @@ -99,7 +99,11 @@ const installPackage = async () => { const joinTypeLinkId = await deep.id('@deep-foundation/core', 'Join'); const containTypeLinkId = await deep.id('@deep-foundation/core', 'Contain'); const packageTypeLinkId = await deep.id('@deep-foundation/core', 'Package'); - + const valueTypeLinkId = await deep.id("@deep-foundation/core", "Value"); + const stringTypeLinkId = await deep.id("@deep-foundation/core", "String"); + const numberTypeLinkId = await deep.id("@deep-foundation/core", "Number"); + const objectTypeLinkId = await deep.id("@deep-foundation/core", "Object"); + const userTypeLinkId = await deep.id("@deep-foundation/core", "User"); const syncTextFileTypeLinkId = await deep.id('@deep-foundation/core', 'SyncTextFile'); const dockerSupportsJs = await deep.id( @@ -181,8 +185,6 @@ const installPackage = async () => { data: [{ id: sumProviderTypeLinkId }], } = await deep.insert({ type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, in: { data: { type_id: containTypeLinkId, @@ -198,8 +200,6 @@ const installPackage = async () => { data: [{ id: tinkoffProviderTypeLinkId }], } = await deep.insert({ type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, in: { data: { type_id: containTypeLinkId, @@ -214,9 +214,9 @@ const installPackage = async () => { const { data: [{ id: paymentTypeLinkId }], } = await deep.insert({ - type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, + type_id: basePaymentTypeLinkId, + from_id: userTypeLinkId, + to_id: storageBusinessTypeLinkId, in: { data: { type_id: containTypeLinkId, @@ -224,14 +224,21 @@ const installPackage = async () => { string: { data: { value: 'Payment' } }, }, }, + out: { + data: [ + { + type_id: valueTypeLinkId, + to_id: objectTypeLinkId + } + ] + } }); - console.log({ paymentTypeLinkId }); const { - data: [{ id: objectTypeLinkId }], + data: [{ id: paymentObjectTypeLinkId }], } = await deep.insert({ - type_id: typeTypeLinkId, + type_id: baseObjectTypeLinkId, from_id: paymentTypeLinkId, to_id: anyTypeLinkId, in: { @@ -243,14 +250,14 @@ const installPackage = async () => { }, }); - console.log({ objectTypeLinkId }); + console.log({ objectTypeLinkId: paymentObjectTypeLinkId }); const { data: [{ id: sumTypeLinkId }], } = await deep.insert({ - type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, + type_id: baseSumTypeLinkId, + from_id: sumProviderTypeLinkId, + to_id: paymentTypeLinkId, in: { data: { type_id: containTypeLinkId, @@ -258,17 +265,24 @@ const installPackage = async () => { string: { data: { value: 'Sum' } }, }, }, + out: { + data: [ + { + type_id: valueTypeLinkId, + to_id: numberTypeLinkId + } + ] + } }); console.log({ sumTypeLinkId }); - // TODO Rest restrictions const { data: [{ id: payTypeLinkId }], } = await deep.insert({ - type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, + type_id: basePayTypeLinkId, + from_id: userTypeLinkId, + to_id: sumTypeLinkId, in: { data: { type_id: containTypeLinkId, @@ -284,8 +298,8 @@ const installPackage = async () => { data: [{ id: urlTypeLinkId }], } = await deep.insert({ type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, + from_id: tinkoffProviderTypeLinkId, + to_id: payTypeLinkId, in: { data: { type_id: containTypeLinkId, @@ -293,6 +307,14 @@ const installPackage = async () => { string: { data: { value: 'Url' } }, }, }, + out: { + data: [ + { + type_id: valueTypeLinkId, + to_id: stringTypeLinkId + } + ] + } }); console.log({ urlTypeLinkId }); @@ -300,9 +322,9 @@ const installPackage = async () => { const { data: [{ id: payedTypeLinkId }], } = await deep.insert({ - type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, + type_id: basePayedTypeLinkId, + from_id: tinkoffProviderTypeLinkId, + to_id: payTypeLinkId, in: { data: { type_id: containTypeLinkId, @@ -317,9 +339,9 @@ const installPackage = async () => { const { data: [{ id: errorTypeLinkId }], } = await deep.insert({ - type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, + type_id: baseErrorTypeLinkId, + from_id: tinkoffProviderTypeLinkId, + to_id: payTypeLinkId, in: { data: { type_id: containTypeLinkId, @@ -327,6 +349,14 @@ const installPackage = async () => { string: { data: { value: 'Error' } }, }, }, + out: { + data: [ + { + type_id: valueTypeLinkId, + to_id: stringTypeLinkId + } + ] + } }); console.log({ errorTypeLinkId }); @@ -370,7 +400,7 @@ const installPackage = async () => { }, { type_id: treeIncludeDownTypeLinkId, - to_id: objectTypeLinkId, + to_id: paymentObjectTypeLinkId, in: { data: [ { @@ -435,9 +465,7 @@ const installPackage = async () => { const { data: [{ id: storageBusinessTypeLinkId }], } = await deep.insert({ - type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, + type_id: storageTypeLinkId, in: { data: { type_id: containTypeLinkId, @@ -449,11 +477,9 @@ const installPackage = async () => { console.log({ storageBusinessTypeLinkId }); const { - data: [{ id: terminalpasswordTypeLinkId }], + data: [{ id: terminalPasswordTypeLinkId }], } = await deep.insert({ type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, in: { data: { type_id: containTypeLinkId, @@ -462,14 +488,12 @@ const installPackage = async () => { }, }, }); - console.log({ terminalpasswordTypeLinkId }); + console.log({ terminalPasswordTypeLinkId }); const { data: [{ id: storageClientTypeLinkId }], } = await deep.insert({ - type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, + type_id: storageTypeLinkId, in: { data: { type_id: containTypeLinkId, @@ -481,20 +505,20 @@ const installPackage = async () => { console.log({ storageClientTypeLinkId }); const { - data: [{ id: titleTypeLinkId }], + data: [{ id: storageClientTitleTypeLinkId }], } = await deep.insert({ type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, + from_id: storageClientTypeLinkId, + to_id: storageClientTypeLinkId, // TODO in: { data: { type_id: containTypeLinkId, from_id: packageLinkId, - string: { data: { value: 'Title' } }, + string: { data: { value: 'StorageClientTitle' } }, }, }, }); - console.log({ titleTypeLinkId }); + console.log({ titleTypeLinkId: storageClientTitleTypeLinkId }); const { data: [{ id: incomeTypeLinkId }], @@ -579,22 +603,6 @@ const installPackage = async () => { }); console.log({ terminalKeyLinkId }); - const { - data: [{ id: terminalPasswordTypeLinkId }], - } = await deep.insert({ - type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, - in: { - data: { - type_id: containTypeLinkId, - from_id: packageLinkId, - string: { data: { value: 'TerminalPassword' } }, - }, - }, - }); - console.log({ terminalPasswordTypeLinkId }); - const { data: [{ id: usesTerminalPasswordTypeLinkId }], } = await deep.insert({ @@ -661,7 +669,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageLinkId, + from_id: deep.linkId, }, }, }); @@ -685,7 +693,7 @@ const installPackage = async () => { data: [{ id: tinkoffApiUrlLinkId }], } = await deep.insert({ type_id: tinkoffApiUrlTypeLinkId, - object: { + string: { data: { value: process.env.PAYMENTS_C2B_URL } @@ -693,11 +701,109 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageLinkId, + from_id: deep.linkId, }, }, }); console.log({ tinkoffApiUrlLinkId }); + + const { + data: [{ id: notificationUrlTypeLinkId }], + } = await deep.insert({ + type_id: typeTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: 'NotificationUrl' } }, + }, + }, + }); + console.log({ notificationUrlTypeLinkId }); + + const { + data: [{ id: notificationUrlLinkId }], + } = await deep.insert({ + type_id: notificationUrlTypeLinkId, + string: { + data: { + value: process.env.PAYMENTS_C2B_NOTIFICATION_URL + } + }, + in: { + data: { + type_id: containTypeLinkId, + from_id: deep.linkId, + }, + }, + }); + console.log({ notificationUrlLinkId }); + + const { + data: [{ id: emailTypeLinkId }], + } = await deep.insert({ + type_id: typeTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: 'Email' } }, + }, + }, + }); + console.log({ emailTypeLinkId }); + + const { + data: [{ id: emailLinkId }], + } = await deep.insert({ + type_id: emailTypeLinkId, + string: { + data: { + value: process.env.PAYMENTS_C2B_EMAIL + } + }, + in: { + data: { + type_id: containTypeLinkId, + from_id: deep.linkId, + }, + }, + }); + console.log({ emailLinkId }); + + const { + data: [{ id: phoneNumberTypeLinkId }], + } = await deep.insert({ + type_id: typeTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: 'PhoneNumber' } }, + }, + }, + }); + console.log({ phoneNumberTypeLinkId }); + + const { + data: [{ id: phoneNumberLinkId }], + } = await deep.insert({ + type_id: phoneNumberTypeLinkId, + string: { + data: { + value: process.env.PAYMENTS_C2B_PHONE_NUMBER + } + }, + in: { + data: { + type_id: containTypeLinkId, + from_id: deep.linkId, + }, + }, + }); + console.log({ phoneNumberLinkId }); + + await deep.insert({ type_id: await deep.id("@deep-foundation/core", "SyncTextFile"), @@ -870,9 +976,9 @@ const installPackage = async () => { allCreatedLinkIds.push(storageBusinessLinkId); const { - data: [{ id: terminalpasswordLinkId }], + data: [{ id: terminalPasswordLinkId }], } = await deep.insert({ - type_id: terminalpasswordTypeLinkId, + type_id: terminalPasswordTypeLinkId, string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, in: { data: [ @@ -887,9 +993,9 @@ const installPackage = async () => { ], }, }); - console.log({ terminalpasswordLinkId }); - createdLinkIds.push(terminalpasswordLinkId); - allCreatedLinkIds.push(terminalpasswordLinkId); + console.log({ terminalPasswordLinkId }); + createdLinkIds.push(terminalPasswordLinkId); + allCreatedLinkIds.push(terminalPasswordLinkId); const { data: [{ id: productTypeLinkId }], @@ -974,7 +1080,7 @@ const installPackage = async () => { const { data: [{ id: objectLinkId }], } = await deep.insert({ - type_id: objectTypeLinkId, + type_id: paymentObjectTypeLinkId, from_id: paymentLinkId, to_id: productLinkId, in: { From 38f6924eed8ee903ec47f9a89167e25dbaf48c1f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Tue, 21 Feb 2023 14:11:23 +0000 Subject: [PATCH 663/683] Move payments-tinkoff-c2b to deep-packages folder --- ...l-payments-tinkoff-c2b-package-to-deep.cjs | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) rename payments-tinkoff-c2b.cjs => deep-packages/install-payments-tinkoff-c2b-package-to-deep.cjs (93%) diff --git a/payments-tinkoff-c2b.cjs b/deep-packages/install-payments-tinkoff-c2b-package-to-deep.cjs similarity index 93% rename from payments-tinkoff-c2b.cjs rename to deep-packages/install-payments-tinkoff-c2b-package-to-deep.cjs index 51366401..100927ba 100644 --- a/payments-tinkoff-c2b.cjs +++ b/deep-packages/install-payments-tinkoff-c2b-package-to-deep.cjs @@ -19,34 +19,34 @@ const { default: links, } = require('@deep-foundation/deeplinks/imports/router/links'); var myEnv = dotenv.config(); -const { payInBrowser } = require("./deep-packages/payments/tinkoff/payInBrowser.cjs"); -const { getError } = require("./deep-packages/payments/tinkoff/getError.cjs"); -const { generateToken, generateTokenStringWithInsertedTerminalPassword } = require("./deep-packages/payments/tinkoff/generateToken.cjs"); -const { getUrl } = require("./deep-packages/payments/tinkoff/getUrl.cjs"); -const { getState } = require("./deep-packages/payments/tinkoff/getState.cjs"); -const { checkOrder } = require("./deep-packages/payments/tinkoff/checkOrder.cjs"); -const { getCardList } = require("./deep-packages/payments/tinkoff/getCardList.cjs"); -const { init } = require("./deep-packages/payments/tinkoff/init.cjs"); -const { charge } = require("./deep-packages/payments/tinkoff/charge.cjs"); -const { addCustomer } = require("./deep-packages/payments/tinkoff/addCustomer.cjs"); -const { getCustomer } = require("./deep-packages/payments/tinkoff/getCustomer.cjs"); -const { removeCustomer } = require("./deep-packages/payments/tinkoff/removeCustomer.cjs"); -const { handlersDependencies } = require("./deep-packages/payments/tinkoff/handlersDependencies.cjs"); -const { insertTinkoffPayInsertHandler } = require("./deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs"); -const { insertTinkoffNotificationHandler } = require("./deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs"); -const { sleep } = require("./deep-packages/sleep.cjs"); -const { confirm } = require("./deep-packages/payments/tinkoff/confirm.cjs"); -const { testInit: callRealizationTestInit } = require('./deep-packages/payments/tinkoff/tests/realization/testInit.cjs'); -const { testConfirm: callRealizationTestConfirm } = require('./deep-packages/payments/tinkoff/tests/realization/testConfirm.cjs'); -const { testGetState: callRealizationTestGetState } = require('./deep-packages/payments/tinkoff/tests/realization/testGetState.cjs'); -const { testGetCardList: callRealizationTestGetCardList } = require('./deep-packages/payments/tinkoff/tests/realization/testGetCardList.cjs'); -const { testResend: callRealizationTestResend } = require('./deep-packages/payments/tinkoff/tests/realization/testResend.cjs'); -const { testCharge: callRealizationTestCharge } = require('./deep-packages/payments/tinkoff/tests/realization/testCharge.cjs'); -const { testAddCustomer: callRealizationTestAddCustomer } = require('./deep-packages/payments/tinkoff/tests/realization/testAddCustomer.cjs'); -const { testGetCustomer: callRealizationTestGetCustomer } = require('./deep-packages/payments/tinkoff/tests/realization/testGetCustomer.cjs'); -const { testRemoveCustomer: callRealizationTestRemoveCustomer } = require('./deep-packages/payments/tinkoff/tests/realization/testRemoveCustomer.cjs'); +const { payInBrowser } = require("./payments/tinkoff/payInBrowser.cjs"); +const { getError } = require("./payments/tinkoff/getError.cjs"); +const { generateToken, generateTokenStringWithInsertedTerminalPassword } = require("./payments/tinkoff/generateToken.cjs"); +const { getUrl } = require("./payments/tinkoff/getUrl.cjs"); +const { getState } = require("./payments/tinkoff/getState.cjs"); +const { checkOrder } = require("./payments/tinkoff/checkOrder.cjs"); +const { getCardList } = require("./payments/tinkoff/getCardList.cjs"); +const { init } = require("./payments/tinkoff/init.cjs"); +const { charge } = require("./payments/tinkoff/charge.cjs"); +const { addCustomer } = require("./payments/tinkoff/addCustomer.cjs"); +const { getCustomer } = require("./payments/tinkoff/getCustomer.cjs"); +const { removeCustomer } = require("./payments/tinkoff/removeCustomer.cjs"); +const { handlersDependencies } = require("./payments/tinkoff/handlersDependencies.cjs"); +const { insertTinkoffPayInsertHandler } = require("./payments/tinkoff/insertTinkoffPayInsertHandler.cjs"); +const { insertTinkoffNotificationHandler } = require("./payments/tinkoff/insertTinkoffNotificationHandler.cjs"); +const { sleep } = require("./sleep.cjs"); +const { confirm } = require("./payments/tinkoff/confirm.cjs"); +const { testInit: callRealizationTestInit } = require('./payments/tinkoff/tests/realization/testInit.cjs'); +const { testConfirm: callRealizationTestConfirm } = require('./payments/tinkoff/tests/realization/testConfirm.cjs'); +const { testGetState: callRealizationTestGetState } = require('./payments/tinkoff/tests/realization/testGetState.cjs'); +const { testGetCardList: callRealizationTestGetCardList } = require('./payments/tinkoff/tests/realization/testGetCardList.cjs'); +const { testResend: callRealizationTestResend } = require('./payments/tinkoff/tests/realization/testResend.cjs'); +const { testCharge: callRealizationTestCharge } = require('./payments/tinkoff/tests/realization/testCharge.cjs'); +const { testAddCustomer: callRealizationTestAddCustomer } = require('./payments/tinkoff/tests/realization/testAddCustomer.cjs'); +const { testGetCustomer: callRealizationTestGetCustomer } = require('./payments/tinkoff/tests/realization/testGetCustomer.cjs'); +const { testRemoveCustomer: callRealizationTestRemoveCustomer } = require('./payments/tinkoff/tests/realization/testRemoveCustomer.cjs'); const fs = require('fs'); -const { errors } = require('./deep-packages/payments/tinkoff/errors.cjs'); +const { errors } = require('./payments/tinkoff/errors.cjs'); console.log('Installing payments-tinkoff-c2b package'); From 8faf64702e7446739533f2a1fd3ac3b866811f95 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 23 Feb 2023 05:18:10 +0000 Subject: [PATCH 664/683] Move and rename --- .../tinkoff/payments-tinkoff-c2b.cjs} | 444 ++++++++---------- 1 file changed, 204 insertions(+), 240 deletions(-) rename deep-packages/{install-payments-tinkoff-c2b-package-to-deep.cjs => payments/tinkoff/payments-tinkoff-c2b.cjs} (91%) diff --git a/deep-packages/install-payments-tinkoff-c2b-package-to-deep.cjs b/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs similarity index 91% rename from deep-packages/install-payments-tinkoff-c2b-package-to-deep.cjs rename to deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs index 100927ba..f21b77c2 100644 --- a/deep-packages/install-payments-tinkoff-c2b-package-to-deep.cjs +++ b/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs @@ -19,34 +19,34 @@ const { default: links, } = require('@deep-foundation/deeplinks/imports/router/links'); var myEnv = dotenv.config(); -const { payInBrowser } = require("./payments/tinkoff/payInBrowser.cjs"); -const { getError } = require("./payments/tinkoff/getError.cjs"); -const { generateToken, generateTokenStringWithInsertedTerminalPassword } = require("./payments/tinkoff/generateToken.cjs"); -const { getUrl } = require("./payments/tinkoff/getUrl.cjs"); -const { getState } = require("./payments/tinkoff/getState.cjs"); -const { checkOrder } = require("./payments/tinkoff/checkOrder.cjs"); -const { getCardList } = require("./payments/tinkoff/getCardList.cjs"); -const { init } = require("./payments/tinkoff/init.cjs"); -const { charge } = require("./payments/tinkoff/charge.cjs"); -const { addCustomer } = require("./payments/tinkoff/addCustomer.cjs"); -const { getCustomer } = require("./payments/tinkoff/getCustomer.cjs"); -const { removeCustomer } = require("./payments/tinkoff/removeCustomer.cjs"); -const { handlersDependencies } = require("./payments/tinkoff/handlersDependencies.cjs"); -const { insertTinkoffPayInsertHandler } = require("./payments/tinkoff/insertTinkoffPayInsertHandler.cjs"); -const { insertTinkoffNotificationHandler } = require("./payments/tinkoff/insertTinkoffNotificationHandler.cjs"); -const { sleep } = require("./sleep.cjs"); -const { confirm } = require("./payments/tinkoff/confirm.cjs"); -const { testInit: callRealizationTestInit } = require('./payments/tinkoff/tests/realization/testInit.cjs'); -const { testConfirm: callRealizationTestConfirm } = require('./payments/tinkoff/tests/realization/testConfirm.cjs'); -const { testGetState: callRealizationTestGetState } = require('./payments/tinkoff/tests/realization/testGetState.cjs'); -const { testGetCardList: callRealizationTestGetCardList } = require('./payments/tinkoff/tests/realization/testGetCardList.cjs'); -const { testResend: callRealizationTestResend } = require('./payments/tinkoff/tests/realization/testResend.cjs'); -const { testCharge: callRealizationTestCharge } = require('./payments/tinkoff/tests/realization/testCharge.cjs'); -const { testAddCustomer: callRealizationTestAddCustomer } = require('./payments/tinkoff/tests/realization/testAddCustomer.cjs'); -const { testGetCustomer: callRealizationTestGetCustomer } = require('./payments/tinkoff/tests/realization/testGetCustomer.cjs'); -const { testRemoveCustomer: callRealizationTestRemoveCustomer } = require('./payments/tinkoff/tests/realization/testRemoveCustomer.cjs'); +const { payInBrowser } = require("./payInBrowser.cjs"); +const { getError } = require("./getError.cjs"); +const { generateToken, generateTokenStringWithInsertedTerminalPassword } = require("./generateToken.cjs"); +const { getUrl } = require("./getUrl.cjs"); +const { getState } = require("./getState.cjs"); +const { checkOrder } = require("./checkOrder.cjs"); +const { getCardList } = require("./getCardList.cjs"); +const { init } = require("./init.cjs"); +const { charge } = require("./charge.cjs"); +const { addCustomer } = require("./addCustomer.cjs"); +const { getCustomer } = require("./getCustomer.cjs"); +const { removeCustomer } = require("./removeCustomer.cjs"); +const { handlersDependencies } = require("./handlersDependencies.cjs"); +const { insertTinkoffPayInsertHandler } = require("./insertTinkoffPayInsertHandler.cjs"); +const { insertTinkoffNotificationHandler } = require("./insertTinkoffNotificationHandler.cjs"); +const { sleep } = require("../../sleep.cjs"); +const { confirm } = require("./confirm.cjs"); +const { testInit: callRealizationTestInit } = require('./tests/realization/testInit.cjs'); +const { testConfirm: callRealizationTestConfirm } = require('./tests/realization/testConfirm.cjs'); +const { testGetState: callRealizationTestGetState } = require('./tests/realization/testGetState.cjs'); +const { testGetCardList: callRealizationTestGetCardList } = require('./tests/realization/testGetCardList.cjs'); +const { testResend: callRealizationTestResend } = require('./tests/realization/testResend.cjs'); +const { testCharge: callRealizationTestCharge } = require('./tests/realization/testCharge.cjs'); +const { testAddCustomer: callRealizationTestAddCustomer } = require('./tests/realization/testAddCustomer.cjs'); +const { testGetCustomer: callRealizationTestGetCustomer } = require('./tests/realization/testGetCustomer.cjs'); +const { testRemoveCustomer: callRealizationTestRemoveCustomer } = require('./tests/realization/testRemoveCustomer.cjs'); const fs = require('fs'); -const { errors } = require('./payments/tinkoff/errors.cjs'); +const { errors } = require('./errors.cjs'); console.log('Installing payments-tinkoff-c2b package'); @@ -211,6 +211,183 @@ const installPackage = async () => { console.log({ tinkoffProviderTypeLinkId }); + const { + data: [{ id: storageBusinessTypeLinkId }], + } = await deep.insert({ + type_id: storageTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: 'StorageBusiness' } }, + }, + }, + }); + console.log({ storageBusinessTypeLinkId }); + + const { + data: [{ id: terminalPasswordTypeLinkId }], + } = await deep.insert({ + type_id: typeTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: 'TerminalPassword' } }, + }, + }, + }); + console.log({ terminalPasswordTypeLinkId }); + + const { + data: [{ id: storageClientTypeLinkId }], + } = await deep.insert({ + type_id: storageTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: 'StorageClient' } }, + }, + }, + }); + console.log({ storageClientTypeLinkId }); + + const { + data: [{ id: storageClientTitleTypeLinkId }], + } = await deep.insert({ + type_id: typeTypeLinkId, + from_id: storageClientTypeLinkId, + to_id: storageClientTypeLinkId, // TODO + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: 'StorageClientTitle' } }, + }, + }, + }); + console.log({ titleTypeLinkId: storageClientTitleTypeLinkId }); + + const { + data: [{ id: incomeTypeLinkId }], + } = await deep.insert({ + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: 'Income' } }, + }, + }, + }); + console.log({ incomeTypeLinkId }); + + const { + data: [{ id: storageBusinessLinkId }], + } = await deep.insert({ + type_id: storageBusinessTypeLinkId, + in: { + data: [ + { + type_id: containTypeLinkId, + from_id: deep.linkId, + }, + ], + }, + }); + console.log({ storageBusinessLinkId }); + + const { + data: [{ id: terminalKeyTypeLinkId }], + } = await deep.insert({ + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: 'TerminalKey' } }, + }, + }, + }); + console.log({ terminalKeyTypeLinkId }); + + const { + data: [{ id: usesTerminalKeyTypeLinkId }], + } = await deep.insert({ + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: 'UsesTerminalKey' } }, + }, + }, + }); + console.log({ usesTerminalKeyTypeLinkId }); + + const { + data: [{ id: terminalKeyLinkId }], + } = await deep.insert({ + type_id: terminalKeyTypeLinkId, + string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, + in: { + data: [ + { + type_id: containTypeLinkId, + from_id: deep.linkId, + }, + { + type_id: usesTerminalKeyTypeLinkId, + from_id: storageBusinessLinkId + }, + ], + }, + }); + console.log({ terminalKeyLinkId }); + + const { + data: [{ id: usesTerminalPasswordTypeLinkId }], + } = await deep.insert({ + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: 'UsesTerminalPassword' } }, + }, + }, + }); + console.log({ usesTerminalPasswordTypeLinkId }); + + const { + data: [{ id: terminalPasswordLinkId }], + } = await deep.insert({ + type_id: terminalPasswordTypeLinkId, + string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_PASSWORD } }, + in: { + data: [ + { + type_id: containTypeLinkId, + from_id: deep.linkId, + }, + { + type_id: usesTerminalPasswordTypeLinkId, + from_id: storageBusinessLinkId + }, + ], + }, + }); + console.log({ terminalPasswordLinkId }); + const { data: [{ id: paymentTypeLinkId }], } = await deep.insert({ @@ -462,219 +639,6 @@ const installPackage = async () => { }, }); - const { - data: [{ id: storageBusinessTypeLinkId }], - } = await deep.insert({ - type_id: storageTypeLinkId, - in: { - data: { - type_id: containTypeLinkId, - from_id: packageLinkId, - string: { data: { value: 'StorageBusiness' } }, - }, - }, - }); - console.log({ storageBusinessTypeLinkId }); - - const { - data: [{ id: terminalPasswordTypeLinkId }], - } = await deep.insert({ - type_id: typeTypeLinkId, - in: { - data: { - type_id: containTypeLinkId, - from_id: packageLinkId, - string: { data: { value: 'TerminalPassword' } }, - }, - }, - }); - console.log({ terminalPasswordTypeLinkId }); - - const { - data: [{ id: storageClientTypeLinkId }], - } = await deep.insert({ - type_id: storageTypeLinkId, - in: { - data: { - type_id: containTypeLinkId, - from_id: packageLinkId, - string: { data: { value: 'StorageClient' } }, - }, - }, - }); - console.log({ storageClientTypeLinkId }); - - const { - data: [{ id: storageClientTitleTypeLinkId }], - } = await deep.insert({ - type_id: typeTypeLinkId, - from_id: storageClientTypeLinkId, - to_id: storageClientTypeLinkId, // TODO - in: { - data: { - type_id: containTypeLinkId, - from_id: packageLinkId, - string: { data: { value: 'StorageClientTitle' } }, - }, - }, - }); - console.log({ titleTypeLinkId: storageClientTitleTypeLinkId }); - - const { - data: [{ id: incomeTypeLinkId }], - } = await deep.insert({ - type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, - in: { - data: { - type_id: containTypeLinkId, - from_id: packageLinkId, - string: { data: { value: 'Income' } }, - }, - }, - }); - console.log({ incomeTypeLinkId }); - - const { - data: [{ id: storageBusinessLinkId }], - } = await deep.insert({ - type_id: storageBusinessTypeLinkId, - in: { - data: [ - { - type_id: containTypeLinkId, - from_id: deep.linkId, - }, - ], - }, - }); - console.log({ storageBusinessLinkId }); - - const { - data: [{ id: terminalKeyTypeLinkId }], - } = await deep.insert({ - type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, - in: { - data: { - type_id: containTypeLinkId, - from_id: packageLinkId, - string: { data: { value: 'TerminalKey' } }, - }, - }, - }); - console.log({ terminalKeyTypeLinkId }); - - const { - data: [{ id: usesTerminalKeyTypeLinkId }], - } = await deep.insert({ - type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, - in: { - data: { - type_id: containTypeLinkId, - from_id: packageLinkId, - string: { data: { value: 'UsesTerminalKey' } }, - }, - }, - }); - console.log({ usesTerminalKeyTypeLinkId }); - - const { - data: [{ id: terminalKeyLinkId }], - } = await deep.insert({ - type_id: terminalKeyTypeLinkId, - string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, - in: { - data: [ - { - type_id: containTypeLinkId, - from_id: deep.linkId, - }, - { - type_id: usesTerminalKeyTypeLinkId, - from_id: storageBusinessLinkId - }, - ], - }, - }); - console.log({ terminalKeyLinkId }); - - const { - data: [{ id: usesTerminalPasswordTypeLinkId }], - } = await deep.insert({ - type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, - in: { - data: { - type_id: containTypeLinkId, - from_id: packageLinkId, - string: { data: { value: 'UsesTerminalPassword' } }, - }, - }, - }); - console.log({ usesTerminalPasswordTypeLinkId }); - - const { - data: [{ id: terminalPasswordLinkId }], - } = await deep.insert({ - type_id: terminalPasswordTypeLinkId, - string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_PASSWORD } }, - in: { - data: [ - { - type_id: containTypeLinkId, - from_id: deep.linkId, - }, - { - type_id: usesTerminalPasswordTypeLinkId, - from_id: storageBusinessLinkId - }, - ], - }, - }); - console.log({ terminalPasswordLinkId }); - - const { - data: [{ id: tinkoffErrorCodesAndMessagesTypeLinkId }], - } = await deep.insert({ - type_id: typeTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, - in: { - data: { - type_id: containTypeLinkId, - from_id: packageLinkId, - string: { data: { value: 'TinkoffErrorCodesAndMessages' } }, - }, - }, - }); - console.log({ tinkoffErrorCodesAndMessagesTypeLinkId }); - - const { - data: [{ id: tinkoffErrorCodesAndMessagesLinkId }], - } = await deep.insert({ - type_id: tinkoffErrorCodesAndMessagesTypeLinkId, - from_id: anyTypeLinkId, - to_id: anyTypeLinkId, - object: { - data: { - value: errors - } - }, - in: { - data: { - type_id: containTypeLinkId, - from_id: deep.linkId, - }, - }, - }); - console.log({ tinkoffErrorCodesAndMessagesLinkId }); - const { data: [{ id: tinkoffApiUrlTypeLinkId }], } = await deep.insert({ From 746f6ded3c9608d27056c61164ab7c8a49c5e696 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 23 Feb 2023 06:50:07 +0000 Subject: [PATCH 665/683] Update draft --- .../cancelling/cancellingPayInsertHandler.js | 172 ++++++++++++++++ .../tinkoff/cancelling/notificationHandler.js | 97 +++++++++ payments-tinkoff-c2b-cancelling.cjs | 184 +++++++++++++++--- 3 files changed, 422 insertions(+), 31 deletions(-) create mode 100644 deep-packages/payments/tinkoff/cancelling/cancellingPayInsertHandler.js create mode 100644 deep-packages/payments/tinkoff/cancelling/notificationHandler.js diff --git a/deep-packages/payments/tinkoff/cancelling/cancellingPayInsertHandler.js b/deep-packages/payments/tinkoff/cancelling/cancellingPayInsertHandler.js new file mode 100644 index 00000000..5300165d --- /dev/null +++ b/deep-packages/payments/tinkoff/cancelling/cancellingPayInsertHandler.js @@ -0,0 +1,172 @@ + +async ({ deep, require, data: { newLink: payLink } }) => { + + const crypto = require('crypto'); + const axios = require('axios'); + + const tinkoffApiUrlTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffApiUrl"); + const { data: [tinkoffApiUrlLink] } = await deep.select({ + type_id: tinkoffApiUrlTypeLinkId + }); + if (!tinkoffApiUrlLink) { + throw new Error(`A link with type ##${tinkoffApiUrlTypeLinkId} is not found`); + } + if (!tinkoffApiUrlLink.value?.value) { + throw new Error(`##${tinkoffApiUrlLink.id} must have a value`); + } + const tinkoffApiUrl = tinkoffApiUrlLink.value.value; + + const terminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TerminalPassword"); + const usesTerminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "UsesTerminalPassword"); + const { data: [terminalPasswordLink] } = await deep.select({ + type_id: terminalPasswordTypeLinkId, + in: { + type_id: usesTerminalPasswordTypeLinkId, + from_id: storageBusinessLink.id + } + }); + if (!terminalPasswordLink) { + throw new Error(`A link with type ##${terminalPasswordTypeLinkId} is not found`); + } + if (!terminalPasswordLink.value?.value) { + throw new Error(`##${terminalPasswordLink.id} must have a value`); + } + const terminalPassword = terminalPasswordLink.value.value; + + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + Password: terminalPassword, + ...restData, + }; + console.log({ dataWithPassword }); + + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + console.log({ dataString }); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + console.log({ hash }); + return hash; + }; + + + const { data: linksUpToPayMp } = await deep.select({ + down: { + link_id: { _eq: payLink.id }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") }, // TODO + }, + }); + console.log({ mpDownPay: linksUpToPayMp }); + + const cancellingPaymentTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "CancellingPayment"); + const cancellingPaymentLink = linksUpToPayMp.find(link => link.type_id === cancellingPaymentTypeLinkId); + console.log({ cancellingPaymentLink }); + if (!cancellingPaymentLink) { + return; + } + + const tinkoffProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const { data: [tinkoffProviderLink] } = await deep.select({ + type_id: tinkoffProviderTypeLinkId + }); + if (!tinkoffProviderLink) { + throw new Error(`A link with type ##${tinkoffProviderTypeLinkId} is not found`) + } + + const sumTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); + const sumLink = linksUpToPayMp.find(link => link.type_id === sumTypeLinkId); + console.log({ sumLink }); + if (!sumLink) throw new Error(`A link with type ##${sumTypeLinkId} associated with the link ##${payLink.id} is not found`); + if (!sumLink.value?.value) { + throw new Error(`##${sumLink.id} must have a value`) + } + + + const {data: [cancelledPaymentLink]} = await deep.select({ + id: cancellingPaymentLink.from_id + }); + + const terminalKeyTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TerminalKey"); + const usesTerminalKeyTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "UsesTerminalKey"); + const { data: [terminalKeyLink] } = await deep.select({ + type_id: terminalKeyTypeLinkId, + in: { + type_id: usesTerminalKeyTypeLinkId, + from_id: storageBusinessLink.id + } + }); + console.log({ terminalKeyLink }) + if (!terminalKeyLink) { + throw new Error(`A link with type ##${terminalKeyTypeLinkId} is not found`); + } + if (!terminalKeyLink.value?.value) { + throw new Error(`##${terminalKeyLink.id} must have a value`); + } + const terminalKey = terminalKeyLink.value.value; + + + const incomeTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); + await deep.insert({ + type_id: incomeTypeLinkId, + from_id: cancellingPaymentLink.id, + to_id: cancelledPaymentLink.to_id + }); + + const {data: [userLink]} = await deep.select({ + id: cancellingPaymentLink.to_id + }); + + const cancel = async (options) => { + try { + const response = await axios({ + method: 'post', + url: `${tinkoffApiUrl}/Cancel`, + data: { ...options, Token: generateToken(options) }, + }); + + const error = response.data.Details; + + return { + error, + request: options, + response: response.data, + }; + } catch (error) { + return { + error, + request: options, + response: null, + }; + } + }; + + await deep.insert({ link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value }, { table: "objects" }); + + const cancelOptions = { + TerminalKey: terminalKey, + PaymentId: cancelledPaymentLink.value.value.bankPaymentId, + Amount: sumLink.value.value, + }; + console.log({ cancelOptions }); + + const cancelResult = await cancel(cancelOptions); + console.log({ cancelResult }); + if (cancelResult.error) { + await deep.insert({ + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), + from_id: tinkoffProviderLink.id, + to_id: payLink.id, + string: { data: { value: cancelResult.error } }, + }); + throw new Error(cancelResult.error); + } + + await deep.insert({ + type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), + from_id: tinkoffProviderLink.id, + to_id: payLink.id, + }); + +}; diff --git a/deep-packages/payments/tinkoff/cancelling/notificationHandler.js b/deep-packages/payments/tinkoff/cancelling/notificationHandler.js new file mode 100644 index 00000000..906a7993 --- /dev/null +++ b/deep-packages/payments/tinkoff/cancelling/notificationHandler.js @@ -0,0 +1,97 @@ + +async ( + req, + res, + next, + { deep, require, gql } +) => { + // Canceled is used instead of Cancelled because tinkoff team is not goos at english + const allowedStatuses = ['CANCELED'] + if (!allowedStatuses.includes(req.body.Status)) { + return next(); + } + + res.send('ok'); + + const crypto = require('crypto'); + + const terminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TerminalPassword"); + const usesTerminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "UsesTerminalPassword"); + const { data: [terminalPasswordLink] } = await deep.select({ + type_id: terminalPasswordTypeLinkId, + in: { + type_id: usesTerminalPasswordTypeLinkId, + from_id: storageBusinessLink.id + } + }); + if (!terminalPasswordLink) { + throw new Error(`A link with type ##${terminalPasswordTypeLinkId} is not found`); + } + if (!terminalPasswordLink.value?.value) { + throw new Error(`##${terminalPasswordLink.id} must have a value`); + } + const terminalPassword = terminalPasswordLink.value.value; + + const generateToken = (data) => { + const { Receipt, DATA, Shops, ...restData } = data; + const dataWithPassword = { + Password: terminalPassword, + ...restData, + }; + console.log({ dataWithPassword }); + + const dataString = Object.keys(dataWithPassword) + .sort((a, b) => a.localeCompare(b)) + .map((key) => dataWithPassword[key]) + .reduce((acc, item) => `${acc}${item}`, ''); + console.log({ dataString }); + const hash = crypto.createHash('sha256').update(dataString).digest('hex'); + console.log({ hash }); + return hash; + }; + + const tinkoffProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const { data: [tinkoffProviderLink] } = await deep.select({ + type_id: tinkoffProviderTypeLinkId + }); + if (!tinkoffProviderLink) { + throw new Error(`A link with type ##${tinkoffProviderTypeLinkId} is not found`) + } + + const cancellingPaymentTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "Payment"); + const { data: [cancellingPaymentLink] } = await deep.select({ + type_id: cancellingPaymentTypeLinkId, + object: { value: { _contains: { orderId: req.body.OrderId } } } + }); + if (!cancellingPaymentLink) { + throw new Error(`A link with type ##${cancellingPaymentTypeLinkId} and object value ${{ orderId: req.body.OrderId }} is not found`) + } + + const { data: linksDownToCancellingPaymentMp } = await deep.select({ + up: { + parent_id: { _eq: cancellingPaymentLink.id }, + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "paymentTree") } + } + }); + + const payTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "Pay"); + const payLink = linksDownToCancellingPaymentMp.find(link => link.type_id === payTypeLinkId); + if (!payLink) { throw new Error(`A link with type ##${payTypeLinkId} associated with ##${cancellingPaymentLink} is not found.`) } + + const bankPaymentId = req.body.PaymentId; + + const sumTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); + const sumLink = linksUpToPayMp.find(link => link.type_id === sumTypeLinkId); + console.log({ sumLink }); + if (!sumLink) throw new Error(`A link with type ##${sumTypeLinkId} associated with the link ##${payLink.id} is not found`); + if (!sumLink.value?.value) { + throw new Error(`##${sumLink.id} must have a value`) + } + + const payedTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "Payed") + await deep.insert({ + type_id: payedTypeLinkId, + from_id: tinkoffProviderLink.id, + to_id: sumLink.id, + }); +}; diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 134403eb..2ce2d15a 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -26,6 +26,7 @@ const { cancel } = require("./deep-packages/payments/tinkoff/cancel.cjs"); const { handlersDependencies } = require("./deep-packages/payments/tinkoff/handlersDependencies.cjs"); const { insertTinkoffCancellingPayInsertHandler } = require("./deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs"); const { insertTinkoffCancellingNotificationHandler } = require("./deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs"); +const fs = require('fs') console.log("Installing @deep-foundation/payments-tinkoff-c2b-cancelling package"); @@ -43,7 +44,7 @@ const requiredEnvVariableNames = [ "PAYMENTS_C2B_CARD_NUMBER_SUCCESS", "PAYMENTS_C2B_CARD_EXPDATE", "PAYMENTS_C2B_CARD_CVC", - "PAYMENTS_C2B_PHONE", + "PAYMENTS_C2B_PHONE_NUMBER", "PAYMENTS_C2B_EMAIL", ]; @@ -154,7 +155,7 @@ const installPackage = async () => { const usersId = await deep.id('deep', 'users'); const { - data: [{ id: packageId }], + data: [{ id: packageLinkId }], } = await deep.insert({ type_id: packageTypeLinkId, string: { data: { value: '@deep-foundation/payments-tinkoff-c2b-cancelling' } }, @@ -180,7 +181,7 @@ const installPackage = async () => { }, }); - console.log({ packageId }); + console.log({ packageId: packageLinkId }); const sumProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "SumProvider"); console.log({ sumProviderTypeLinkId }); @@ -209,7 +210,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, string: { data: { value: 'CancellingPay' } }, }, }, @@ -232,14 +233,14 @@ const installPackage = async () => { console.log({ storageBusinessTypeLinkId }); - const tokenTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Token"); - console.log({ tokenTypeLinkId }); + const terminalKeyTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TerminalKey"); + console.log({ terminalKeyTypeLinkId: terminalKeyTypeLinkId }); const storageClientTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); console.log({ storageClientTypeLinkId }); - const titleTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Title"); - console.log({ titleTypeLinkId }); + const storageClientTitleTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClientTitle"); + console.log({ titleTypeLinkId: storageClientTitleTypeLinkId }); const { data: [{ id: cancellingPaymentTypeLinkId }], @@ -250,7 +251,7 @@ const installPackage = async () => { in: { data: { type_id: containTypeLinkId, - from_id: packageId, + from_id: packageLinkId, string: { data: { value: 'CancellingPayment' } }, }, }, @@ -284,11 +285,116 @@ const installPackage = async () => { ], }, }); + console.log("Before insert handler") + await deep.insert({ + type_id: await deep.id("@deep-foundation/core", "SyncTextFile"), + string: { + data: { + value: fs.readFileSync('./deep-packages/payments/tinkoff/cancelling/cancellingPayInsertHandler.js', {encoding: 'utf-8'}), + }, + }, + in: { + data: [ + { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: "CancellingPayInsertHandlerCode" } }, + }, + { + from_id: await deep.id("@deep-foundation/core", "dockerSupportsJs"), + type_id: await deep.id("@deep-foundation/core", "Handler"), + in: { + data: [ + { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: "CancellingPayInsertHandler" } }, + }, + { + type_id: await deep.id("@deep-foundation/core", "HandleInsert"), + from_id: payTypeLinkId, + in: { + data: [ + { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: "HandleCancellingPay" } }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }) - - await insertTinkoffCancellingPayInsertHandler({ cancellingPayTypeLinkId, terminalKey: process.env.PAYMENTS_C2B_TERMINAL_KEY,paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b",cancellingPaymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",containTypeLinkId, deep, dockerSupportsJsId, handleInsertTypeLinkId, handlerTypeLinkId, packageId, syncTextFileTypeLinkId, terminayKey: process.env.PAYMENTS_C2B_TERMINAL_KEY }); - await insertTinkoffCancellingNotificationHandler({ paymentsPackageName: "@deep-foundation/payments-tinkoff-c2b-cancelling",deep, adminId: await deep.id('deep', 'admin'), containTypeLinkId, fileTypeLinkId: syncTextFileTypeLinkId, handleRouteTypeLinkId, handlerTypeLinkId, notificationPort: process.env.PAYMENTS_C2B_NOTIFICATION_PORT, notificationRoute: process.env.PAYMENTS_C2B_NOTIFICATION_ROUTE, portTypeLinkId, routerListeningTypeLinkId, routerStringUseTypeLinkId, routerTypeLinkId, routeTypeLinkId, supportsId: dockerSupportsJs , packageId}); + await deep.insert({ + type_id: await deep.id('@deep-foundation/core', 'Port'), + number: { data: { value: process.env.PAYMENTS_C2B_CANCELLING_NOTIFICATION_PORT } }, + in: { data: [ + { + type_id: await deep.id('@deep-foundation/core', 'Contain'), + from_id: deep.linkId, + }, + { + type_id: await deep.id('@deep-foundation/core', 'RouterListening'), + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'Contain'), + from_id: packageLinkId, + } }, + from: { data: { + type_id: await deep.id('@deep-foundation/core', 'Router'), + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'Contain'), + from_id: packageLinkId, + } }, + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'RouterStringUse'), + string: { data: { value: process.env.PAYMENTS_C2B_CANCELLING_NOTIFICATION_ROUTE } }, + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'Contain'), + from_id: deep.linkId, + } }, + from: { data: { + type_id: await deep.id('@deep-foundation/core', 'Route'), + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'Contain'), + from_id: packageLinkId, + } }, + out: { data: { + type_id: await deep.id('@deep-foundation/core', 'HandleRoute'), + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'Contain'), + from_id: packageLinkId, + } }, + to: { data: { + type_id: await deep.id('@deep-foundation/core', 'Handler'), + from_id: await deep.id('@deep-foundation/core', 'dockerSupportsJs'), + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'Contain'), + from_id: packageLinkId, + } }, + to: { data: { + type_id: await deep.id('@deep-foundation/core', 'SyncTextFile'), + string: { data: { + value: fs.readFileSync('./deep-packages/payments/tinkoff/cancelling/notificationHandler.js', {encoding: 'utf-8'}), + } }, + in: { data: { + type_id: await deep.id('@deep-foundation/core', 'Contain'), + from_id: packageLinkId, + } }, + } }, + } }, + } }, + } }, + } }, + } }, + } + ] }, + }) const callTests = async () => { console.log('callTests-start'); @@ -307,7 +413,7 @@ const installPackage = async () => { Recurrent: 'Y', DATA: { Email: process.env.PAYMENTS_C2B_EMAIL, - Phone: process.env.PAYMENTS_C2B_PHONE, + Phone: process.env.PAYMENTS_C2B_PHONE_NUMBER, }, // Receipt: { // Items: [{ @@ -320,7 +426,7 @@ const installPackage = async () => { // Tax: 'none', // }], // Email: process.env.PAYMENTS_C2B_EMAIL, - // Phone: process.env.PAYMENTS_C2B_PHONE, + // Phone: process.env.PAYMENTS_C2B_PHONE_NUMBER, // Taxation: 'usn_income', // }, }; @@ -353,7 +459,7 @@ const installPackage = async () => { // Tax: 'none', // }], // Email: process.env.PAYMENTS_C2B_EMAIL, - // Phone: process.env.PAYMENTS_C2B_PHONE, + // Phone: process.env.PAYMENTS_C2B_PHONE_NUMBER, // Taxation: 'usn_income', // }, }; @@ -394,7 +500,7 @@ const installPackage = async () => { Recurrent: 'Y', DATA: { Email: process.env.PAYMENTS_C2B_EMAIL, - Phone: process.env.PAYMENTS_C2B_PHONE, + Phone: process.env.PAYMENTS_C2B_PHONE_NUMBER, }, // Receipt: { // Items: [{ @@ -407,7 +513,7 @@ const installPackage = async () => { // Tax: 'none', // }], // Email: process.env.PAYMENTS_C2B_EMAIL, - // Phone: process.env.PAYMENTS_C2B_PHONE, + // Phone: process.env.PAYMENTS_C2B_PHONE_NUMBER, // Taxation: 'usn_income', // } }; @@ -463,7 +569,7 @@ const installPackage = async () => { Recurrent: 'Y', DATA: { Email: process.env.PAYMENTS_C2B_EMAIL, - Phone: process.env.PAYMENTS_C2B_PHONE, + Phone: process.env.PAYMENTS_C2B_PHONE_NUMBER, }, // Receipt: { // Items: [{ @@ -476,7 +582,7 @@ const installPackage = async () => { // Tax: 'none', // }], // Email: process.env.PAYMENTS_C2B_EMAIL, - // Phone: process.env.PAYMENTS_C2B_PHONE, + // Phone: process.env.PAYMENTS_C2B_PHONE_NUMBER, // Taxation: 'usn_income', // } }; @@ -652,7 +758,7 @@ const installPackage = async () => { allCreatedLinkIds.push(sumProviderId); const { - data: [{ id: storageBusinessId }], + data: [{ id: storageBusinessLinkId }], } = await deep.insert({ type_id: storageBusinessTypeLinkId, in: { @@ -664,16 +770,32 @@ const installPackage = async () => { ], }, }); - console.log({ storageBusinessId }); - createdLinkIds.push(storageBusinessId); - allCreatedLinkIds.push(storageBusinessId); + console.log({ storageBusinessId: storageBusinessLinkId }); + createdLinkIds.push(storageBusinessLinkId); + allCreatedLinkIds.push(storageBusinessLinkId); + + const { + data: [{ id: usesTerminalKeyTypeLinkId }], + } = await deep.insert({ + type_id: typeTypeLinkId, + from_id: anyTypeLinkId, + to_id: anyTypeLinkId, + in: { + data: { + type_id: containTypeLinkId, + from_id: packageLinkId, + string: { data: { value: 'UsesTerminalKey' } }, + }, + }, + }); + console.log({ usesTerminalKeyTypeLinkId }); const { data: [{ id: tokenId }], } = await deep.insert({ - type_id: tokenTypeLinkId, - from_id: storageBusinessId, - to_id: storageBusinessId, + type_id: terminalKeyTypeLinkId, + from_id: storageBusinessLinkId, + to_id: storageBusinessLinkId, string: { data: { value: process.env.PAYMENTS_C2B_TERMINAL_KEY } }, in: { data: [ @@ -682,7 +804,7 @@ const installPackage = async () => { from_id: deep.linkId, }, { - type_id: usesTokenTypeLinkId, + type_id: usesTerminalKeyTypeLinkId, from_id: storageBusinessLinkId }, ], @@ -739,7 +861,7 @@ const installPackage = async () => { type_id: paymentTypeLinkId, object: { data: { value: { orderId: uniqid() } } }, from_id: deep.linkId, - to_id: storageBusinessId, + to_id: storageBusinessLinkId, in: { data: [ { @@ -842,7 +964,7 @@ const installPackage = async () => { const testFinishAuthorize = async () => { console.log('testFinishAuthorize-start'); - const { createdLinks } = await testInit({ customerKey }); + const { createdLinks } = await testInit(); const urlLink = createdLinks.find(link => link.type_id === urlTypeLinkId); expect(urlLink).to.not.be.equal(undefined) @@ -869,7 +991,7 @@ const installPackage = async () => { const testConfirm = async () => { console.log('testConfirm-start'); - const { createdLinks } = await testFinishAuthorize({ customerKey }); + const { createdLinks } = await testFinishAuthorize(); const createdLinkIds = []; @@ -910,7 +1032,7 @@ const installPackage = async () => { console.log('testCancel-start'); const testCancelAfterPayAfterConfirmFullPrice = async () => { console.log('testCancelAfterPayAfterConfirmFullPrice-start'); - const { createdLinks } = await testConfirm({ customerKey }); + const { createdLinks } = await testConfirm(); const createdLinkIds = []; From e9c5131465cac0c0c2e480b3621895f8cd54b84f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 16 Mar 2023 10:28:33 +0000 Subject: [PATCH 666/683] callTest -> callTestAndCleanup --- .../payments/tinkoff/payments-tinkoff-c2b.cjs | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs b/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs index f21b77c2..b8b69758 100644 --- a/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs +++ b/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs @@ -1174,23 +1174,15 @@ const installPackage = async () => { } }; - const callTest = async (testFunction) => { + const callTestAndCleanup = async (testFunction) => { const { createdLinks } = await testFunction(); for (const createdLink of createdLinks) { - if (createdLink.type_id === payTypeLinkId) { - const errorLinkSelectQuery = await deep.select({ - type_id: errorTypeLinkId, - to_id: createdLink.id - }); - createdLinks.push(...errorLinkSelectQuery.data); - } - } await deep.delete(createdLinks.map((link) => link.id)); } - await callTest(testInit); - await callTest(testFinishAuthorize); - await callTest(testConfirm); + await callTestAndCleanup(testInit); + await callTestAndCleanup(testFinishAuthorize); + await callTestAndCleanup(testConfirm); // await deep.delete(createdLinkIds); }; From 23ed813c59ab69a4e16d3d2ca6ca98559ec6b8e4 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 16 Mar 2023 10:29:11 +0000 Subject: [PATCH 667/683] Fix typo --- deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs | 1 - 1 file changed, 1 deletion(-) diff --git a/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs b/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs index b8b69758..36c835b9 100644 --- a/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs +++ b/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs @@ -1176,7 +1176,6 @@ const installPackage = async () => { const callTestAndCleanup = async (testFunction) => { const { createdLinks } = await testFunction(); - for (const createdLink of createdLinks) { await deep.delete(createdLinks.map((link) => link.id)); } From 99c9a44d951215c36e213c0cecc91e29113d768c Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 16 Mar 2023 10:29:40 +0000 Subject: [PATCH 668/683] Inherig baseUrlTypeLinkId --- deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs b/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs index 36c835b9..b71c73b2 100644 --- a/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs +++ b/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs @@ -474,7 +474,7 @@ const installPackage = async () => { const { data: [{ id: urlTypeLinkId }], } = await deep.insert({ - type_id: typeTypeLinkId, + type_id: baseUrlTypeLinkId, from_id: tinkoffProviderTypeLinkId, to_id: payTypeLinkId, in: { From 2a6f4136790fa6e574f2c4acf111554f28e8cf4f Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 16 Mar 2023 10:32:53 +0000 Subject: [PATCH 669/683] Remove unused code --- .../insertTinkoffNotificationHandler.cjs | 117 ------------------ .../tinkoff/tinkoffNotificationHandler.js | 10 +- 2 files changed, 1 insertion(+), 126 deletions(-) delete mode 100644 deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs diff --git a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs deleted file mode 100644 index 97623100..00000000 --- a/deep-packages/payments/tinkoff/insertTinkoffNotificationHandler.cjs +++ /dev/null @@ -1,117 +0,0 @@ -const {insertNotificationHandler: baseInsertNotificationHandler} = require("../../insertNotificationHandler.cjs"); -const {handlersDependencies} = require("./handlersDependencies.cjs"); -const {confirm} = require("./confirm.cjs"); - -exports.insertTinkoffNotificationHandler = async ({packageName, packageId, deep, notificationPort, notificationRoute, portTypeLinkId, routerListeningTypeLinkId, routerTypeLinkId, routerStringUseTypeLinkId, routeTypeLinkId, handleRouteTypeLinkId, handlerTypeLinkId, supportsId, containTypeLinkId, adminId, fileTypeLinkId, onConfirmedCode}) => { - const code = ` -async ( - req, - res, - next, - { deep, require, gql } -) => { - ${handlersDependencies} - - if(!(req.body.Status === "AUTHORIZED" || req.body.Status === "CONFIRMED" )) { - return next(); - } - - if (req.body.Status === 'AUTHORIZED') { - const reqBody = req.body; - console.log({reqBody}); - - const tinkoffProviderTypeLinkId = await deep.id("${packageName}", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: tinkoffProviderTypeLinkId - }); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; - console.log({tinkoffProviderLinkId}); - - console.log(JSON.stringify(await deep.select({type_id: await deep.id("${packageName}", "Payment")}))) - console.log("Select args:" ,JSON.stringify({ - object: {value: {_contains: {bankPaymentId: req.body.PaymentId}}} - })) - - const paymentLinkSelectQuery = await deep.select({ - object: {value: {_contains: {bankPaymentId: parseInt(req.body.PaymentId)}}} - }); - if(paymentLinkSelectQuery.error) { throw new Error(paymentLinkSelectQuery.error.message); } - const paymentLink = paymentLinkSelectQuery.data[0]; - console.log({paymentLink}); - if(!paymentLink) { throw new Error("The payment link associated with the bank payment id " + req.body.PaymentId + " is not found."); } - - const {data: mpUpPayment, error: mpUpPaymentSelectQueryError} = await deep.select({ - up: { - parent_id: { _eq: paymentLink.id }, - tree_id: { _eq: await deep.id("${packageName}", "paymentTree") } - } - }); - console.log({mpUpPayment}); - if(mpUpPaymentSelectQueryError) { throw new Error(mpUpPaymentSelectQueryError.message); } - - const payTypeLinkId = await deep.id("${packageName}", "Pay"); - const payLink = mpUpPayment.find(link => link.type_id === payTypeLinkId); - console.log({payLink}); - if(!payLink) { throw new Error("The pay link associated with payment link " + paymentLink + " is not found.") } - - const confirm = ${confirm.toString()}; - - const storageReceiverLinkSelectQuery = await deep.select({ - id: paymentLink.to_id - }); - if(storageReceiverLinkSelectQuery.error) {throw new Error(storageReceiverLinkSelectQuery.error.message);} - const storageReceiverId = storageReceiverLinkSelectQuery.data[0].id; - console.log({storageReceiverId}); - - - const usesTokenTypeLinkId = await deep.id("${packageName}", "UsesToken"); - const usesTokenLinkSelectQuery = await deep.select({ - type_id: usesTokenTypeLinkId, - from_id: storageReceiverId, - }); - if(usesTokenLinkSelectQuery.error) {throw new Error(usesTokenLinkSelectQuery.error.message);} - const usesTokenLink = usesTokenLinkSelectQuery.data[0]; - console.log({usesTokenLink}); - - const tokenLinkSelectQuery = await deep.select({ - id: usesTokenLink.to_id, - }); - if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} - const tokenLink = tokenLinkSelectQuery.data[0]; - console.log({tokenLink}); - - const confirmOptions = { - TerminalKey: tokenLink.value.value, - PaymentId: req.body.PaymentId, - Amount: req.body.Amount, - // Receipt: req.body.Receipt, - }; - console.log({confirmOptions}); - - const confirmResult = await confirm(confirmOptions); - console.log({confirmResult}); - - if (confirmResult.error) { - const errorMessage = "Could not confirm the pay. " + confirmResult.error; - const {error: errorLinkInsertError} = await deep.insert({ - type_id: (await deep.id("${packageName}", "Error")), - from_id: tinkoffProviderLinkId, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - }); - if(errorLinkInsertError) { throw new Error(errorLinkInsertError); } - throw new Error(errorMessage); - } - - return confirmResult; - } else if (req.body.Status === 'CONFIRMED') { - ${onConfirmedCode} - } - res.send('ok'); -}; -`; - -return await baseInsertNotificationHandler({packageId, adminId, containTypeLinkId, deep, fileTypeLinkId, handlerName: "tinkoffNotificationHandler", handleRouteTypeLinkId,handlerTypeLinkId,notificationPort,notificationRoute,portTypeLinkId,routerListeningTypeLinkId,routerStringUseTypeLinkId,routerTypeLinkId,routeTypeLinkId,supportsId, code}); -} - diff --git a/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js b/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js index 0681186c..6571f776 100644 --- a/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js +++ b/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js @@ -154,15 +154,7 @@ async ( console.log({ confirmResult }); if (confirmResult.error) { - const errorMessage = "Could not confirm the pay. " + confirmResult.error; - const { error: errorLinkInsertError } = await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), - from_id: tinkoffProviderLink.id, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - }); - if (errorLinkInsertError) { throw new Error(errorLinkInsertError); } - throw new Error(errorMessage); + throw new Error(confirmResult.error); } return confirmResult; From 585a5fb7af88e597676ef5925ab0c356e7844218 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 16 Mar 2023 10:33:01 +0000 Subject: [PATCH 670/683] Remove unused code --- .../tinkoff/insertTinkoffPayInsertHandler.cjs | 132 ------------------ 1 file changed, 132 deletions(-) delete mode 100644 deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs diff --git a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs b/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs deleted file mode 100644 index f98a6af1..00000000 --- a/deep-packages/payments/tinkoff/insertTinkoffPayInsertHandler.cjs +++ /dev/null @@ -1,132 +0,0 @@ -const { insertHandler } = require("../../insertHandler.cjs"); -const {handlersDependencies} = require("./handlersDependencies.cjs"); -const {init} = require("./init.cjs"); - -exports.insertTinkoffPayInsertHandler = async ({packageName, deep, notificationUrl, userEmail, userPhone, fileTypeLinkId, containTypeLinkId, packageId, dockerSupportsJsId, handleInsertTypeLinkId, handlerTypeLinkId, payTypeLinkId}) => { - const code = ` -async ({ deep, require, data: { newLink, triggeredByLinkId } }) => { - ${handlersDependencies} - - const tinkoffProviderTypeLinkId = await deep.id("${packageName}", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: tinkoffProviderTypeLinkId - }); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLinkId = tinkoffProviderLinkSelectQuery.data[0].id; - - const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ - down: { - link_id: { _eq: newLink.id }, - tree_id: { _eq: await deep.id("${packageName}", "paymentTree") }, - }, - }); - console.log({mpDownPay}); - if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } - - const paymentTypeLinkId = await deep.id("${packageName}", "Payment"); - const paymentLink = mpDownPay.find(link => link.type_id === paymentTypeLinkId); - console.log({paymentLink}); - if(!paymentLink) throw new Error("Payment link associated with the pay link " + newLink.id + " is not found."); - - const sumTypeLinkId = await deep.id("${packageName}", "Sum"); - const sumLink = mpDownPay.find(link => link.type_id === sumTypeLinkId); - console.log({sumLink}); - if(!sumLink) throw new Error("Sum link associated with the pay link " + newLink.id + " is not found."); - - const fromLinkOfPaymentSelectQuery = await deep.select({ - id: paymentLink.from_id - }); - if(fromLinkOfPaymentSelectQuery.error) { throw new Error(fromLinkOfPaymentSelectQuery.error.message); } - const fromLinkOfPayment = fromLinkOfPaymentSelectQuery.data[0]; - console.log({fromLinkOfPayment}); - - const storageBusinessLinkSelectQuery = await deep.select({ - id: paymentLink.to_id - }); - if(storageBusinessLinkSelectQuery.error) { throw new Error(storageBusinessLinkSelectQuery.error.message); } - const storageBusinessLinkId = storageBusinessLinkSelectQuery.data[0].id; - console.log({storageBusinessLinkId}); - - const usesTokenTypeLinkId = await deep.id("${packageName}", "UsesToken"); - const usesTokenLinkSelectQuery = await deep.select({ - type_id: usesTokenTypeLinkId, - from_id: storageBusinessLinkId, - }); - if(usesTokenLinkSelectQuery.error) {throw new Error(usesTokenLinkSelectQuery.error.message);} - const usesTokenLink = usesTokenLinkSelectQuery.data[0]; - console.log({usesTokenLink}); - - const tokenLinkSelectQuery = await deep.select({ - id: usesTokenLink.to_id, - }); - if(tokenLinkSelectQuery.error) {throw new Error(tokenLinkSelectQuery.error.message);} - const tokenLink = tokenLinkSelectQuery.data[0]; - console.log({tokenLink}); - - const init = ${init.toString()}; - - const options = { - TerminalKey: tokenLink.value.value, - OrderId: "" + Date.now() + paymentLink.id, - CustomerKey: triggeredByLinkId, - NotificationURL: "${notificationUrl}", - PayType: 'T', - Amount: sumLink.value.value, - Description: 'Test shopping', - Language: 'ru', - Recurrent: 'Y', - DATA: { - Email: "${userEmail}", - Phone: "${userPhone}", - }, - // Receipt: { - // Items: [{ - // Name: 'Test item', - // Price: sum, - // Quantity: 1, - // Amount: sumLink.value.value, - // PaymentMethod: 'prepayment', - // PaymentObject: 'service', - // Tax: 'none', - // }], - // Email: "${userEmail}", - // Phone: "${userPhone}", - // Taxation: 'usn_income', - // } - }; - console.log({options}); - - let initResult = await init(options); - console.log({initResult}); - if (initResult.error) { - const errorMessage = "Could not initialize the order. " + initResult.error; - const {error: errorLinkInsertQueryError} = await deep.insert({ - type_id: (await deep.id("${packageName}", "Error")), - from_id: tinkoffProviderLinkId, - to_id: newLink.id, - string: { data: { value: errorMessage } }, - }); - if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } - throw new Error(errorMessage); - } - - const urlTypeLinkId = await deep.id("${packageName}", "Url"); - const {error: urlLinkInsertQueryError} = await deep.insert({ - type_id: urlTypeLinkId, - from_id: tinkoffProviderLinkId, - to_id: newLink.id, - string: { data: { value: initResult.response.PaymentURL } }, - }); - if(urlLinkInsertQueryError) { throw new Error(urlLinkInsertQueryError.message); } - - const paymentValueLinkInsertQuery = await deep.insert({link_id: paymentLink.id, value: {bankPaymentId: parseInt(initResult.response.PaymentId)}}, {table: "objects"}) - if(paymentValueLinkInsertQuery.error) { throw new Error(paymentValueLinkInsertQuery.error.message); } - console.log(JSON.stringify(paymentValueLinkInsertQuery)); - - return initResult; -}; -`; - -return await insertHandler({deep, fileTypeLinkId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeLinkId: payTypeLinkId, code, supportsId: dockerSupportsJsId, handleOperationTypeLinkId: handleInsertTypeLinkId, containTypeLinkId, packageId, handlerTypeLinkId, code}); -} - From cc47859f9d2d5357eacd156115f402a5333a294b Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 16 Mar 2023 10:33:08 +0000 Subject: [PATCH 671/683] Remove error type --- .../payments/tinkoff/payInsertHandler.js | 10 +---- .../payments/tinkoff/payments-tinkoff-c2b.cjs | 38 ------------------- 2 files changed, 1 insertion(+), 47 deletions(-) diff --git a/deep-packages/payments/tinkoff/payInsertHandler.js b/deep-packages/payments/tinkoff/payInsertHandler.js index 8bdbfaa8..b2ef210b 100644 --- a/deep-packages/payments/tinkoff/payInsertHandler.js +++ b/deep-packages/payments/tinkoff/payInsertHandler.js @@ -209,15 +209,7 @@ async ({ deep, require, data: { newLink: payLink, triggeredByLinkId } }) => { let initResult = await init(options); console.log({ initResult }); if (initResult.error) { - const errorMessage = "Could not initialize the order. " + initResult.error; - const { error: errorLinkInsertQueryError } = await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), - from_id: tinkoffProviderLink.id, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - }); - if (errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } - throw new Error(errorMessage); + throw new Error(initResult.error); } const urlTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Url"); diff --git a/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs b/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs index b71c73b2..8fd4ded6 100644 --- a/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs +++ b/deep-packages/payments/tinkoff/payments-tinkoff-c2b.cjs @@ -149,7 +149,6 @@ const installPackage = async () => { const basePayTypeLinkId = await deep.id('@deep-foundation/payments', 'Pay'); const baseUrlTypeLinkId = await deep.id('@deep-foundation/payments', 'Url'); const basePayedTypeLinkId = await deep.id('@deep-foundation/payments', 'Payed'); - const baseErrorTypeLinkId = await deep.id('@deep-foundation/payments', 'Error'); const storageTypeLinkId = await deep.id('@deep-foundation/payments', 'Storage'); const { @@ -513,31 +512,6 @@ const installPackage = async () => { console.log({ payedTypeLinkId }); - const { - data: [{ id: errorTypeLinkId }], - } = await deep.insert({ - type_id: baseErrorTypeLinkId, - from_id: tinkoffProviderTypeLinkId, - to_id: payTypeLinkId, - in: { - data: { - type_id: containTypeLinkId, - from_id: packageLinkId, - string: { data: { value: 'Error' } }, - }, - }, - out: { - data: [ - { - type_id: valueTypeLinkId, - to_id: stringTypeLinkId - } - ] - } - }); - - console.log({ errorTypeLinkId }); - const { data: [{ id: paymentTreeId }], } = await deep.insert({ @@ -587,18 +561,6 @@ const installPackage = async () => { ], }, }, - { - type_id: treeIncludeUpTypeLinkId, - to_id: errorTypeLinkId, - in: { - data: [ - { - type_id: containTypeLinkId, - from_id: packageLinkId, - }, - ], - }, - }, { type_id: treeIncludeUpTypeLinkId, to_id: payedTypeLinkId, From fea84fb83324f2e85a14bbdccafb901cca3d0459 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 16 Mar 2023 10:35:38 +0000 Subject: [PATCH 672/683] Put terminal password in variable --- deep-packages/payments/tinkoff/payInsertHandler.js | 3 ++- deep-packages/payments/tinkoff/tinkoffNotificationHandler.js | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/deep-packages/payments/tinkoff/payInsertHandler.js b/deep-packages/payments/tinkoff/payInsertHandler.js index b2ef210b..77b25c28 100644 --- a/deep-packages/payments/tinkoff/payInsertHandler.js +++ b/deep-packages/payments/tinkoff/payInsertHandler.js @@ -39,11 +39,12 @@ async ({ deep, require, data: { newLink: payLink, triggeredByLinkId } }) => { if (!terminalPasswordLink.value?.value) { throw new Error(`##${terminalPasswordLink.id} must have a value`); } + const terminalPassword = terminalPasswordLink.value.value; const generateToken = (data) => { const { Receipt, DATA, Shops, ...restData } = data; const dataWithPassword = { - Password: terminalPasswordLink.value.value, + Password: terminalPassword, ...restData, }; console.log({ dataWithPassword }); diff --git a/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js b/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js index 6571f776..c4a63202 100644 --- a/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js +++ b/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js @@ -98,11 +98,12 @@ async ( if(!terminalPasswordLink.value?.value) { throw new Error(`##${terminalPasswordLink.id} must have a value`); } + const terminalPassword = terminalPasswordLink.value.value; const generateToken = (data) => { const { Receipt, DATA, Shops, ...restData } = data; const dataWithPassword = { - Password: terminalPasswordLink.value.value, + Password: terminalPassword, ...restData, }; console.log({ dataWithPassword }); From cb93dad06859727dec753220268c29652af87b4d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 16 Mar 2023 10:36:44 +0000 Subject: [PATCH 673/683] Put terminalKey in a variable --- deep-packages/payments/tinkoff/payInsertHandler.js | 3 ++- deep-packages/payments/tinkoff/tinkoffNotificationHandler.js | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/deep-packages/payments/tinkoff/payInsertHandler.js b/deep-packages/payments/tinkoff/payInsertHandler.js index 77b25c28..59df2f13 100644 --- a/deep-packages/payments/tinkoff/payInsertHandler.js +++ b/deep-packages/payments/tinkoff/payInsertHandler.js @@ -91,6 +91,7 @@ async ({ deep, require, data: { newLink: payLink, triggeredByLinkId } }) => { if (!terminalKeyLink.value?.value) { throw new Error(`##${terminalKeyLink.id} must have a value`); } + const terminalKey = terminalKeyLink.value.value; const tinkoffApiUrlTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffApiUrl"); const { data: [tinkoffApiUrlLink] } = await deep.select({ @@ -178,7 +179,7 @@ async ({ deep, require, data: { newLink: payLink, triggeredByLinkId } }) => { } const options = { - TerminalKey: terminalKeyLink.value.value, + TerminalKey: terminalKey, OrderId: "" + Date.now() + paymentLink.id, CustomerKey: triggeredByLinkId, NotificationURL: notificationUrlLink.value.value, diff --git a/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js b/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js index c4a63202..3efdf698 100644 --- a/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js +++ b/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js @@ -81,6 +81,7 @@ async ( if(!terminalKeyLink.value?.value) { throw new Error(`##${terminalKeyLink.id} must have a value`); } + const terminalKey = terminalKeyLink.value.value; const terminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TerminalPassword"); const usesTerminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "UsesTerminalPassword"); @@ -144,7 +145,7 @@ async ( }; const confirmOptions = { - TerminalKey: terminalKeyLink.value.value, + TerminalKey: terminalKey, PaymentId: req.body.PaymentId, Amount: req.body.Amount, // Receipt: req.body.Receipt, From 1ca2a875206da2061c32e19103075db8b86de5fe Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 16 Mar 2023 10:42:21 +0000 Subject: [PATCH 674/683] Insert storage client if is not inserted --- .../tinkoff/tinkoffNotificationHandler.js | 80 ++++++++++--------- 1 file changed, 43 insertions(+), 37 deletions(-) diff --git a/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js b/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js index 3efdf698..cc0d110f 100644 --- a/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js +++ b/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js @@ -175,43 +175,49 @@ async ( throw new Error(`Unable to insert a link with type ##${payedTypeLinkId}`) } - // TODO - // const storageClientTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - // const {data: [storageClientLink]} = await deep.select({ - // type_id: storageClientTypeLinkId, - // number: { value: req.body.CardId } - // }); - - - // if (fromLinkOfPayment.type_id !== storageClientTypeLinkId) { - // var storageClientLinkId; - // if (storageClientLinkSelectQuery.data.length === 0) { - // const StorageClient = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); - // const storageClientLinkInsertQuery = await deep.insert({ - // type_id: StorageClient, - // number: { data: { value: req.body.CardId } }, - // }); - // console.log({ storageClientLinkInsertQuery }); - // if (storageClientLinkInsertQuery.error) { throw new Error(storageClientLinkInsertQuery.error.message); } - // storageClientLinkId = storageClientLinkInsertQuery.data[0].id; - - // const storageClientTitle = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClientTitle"); - // const storageClientTitleLinkInsertQuery = await deep.insert({ - // type_id: storageClientTitle, - // from_id: storageClientLinkId, - // to_id: storageClientLinkId, - // string: { data: { value: req.body.Pan } }, - // }); - // } else { - // storageClientLinkId = storageClientLinkSelectQuery.data[0]; - // } - // const incomeTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); - // await deep.insert({ - // type_id: incomeTypeLinkId, - // from_id: paymentLink.id, - // to_id: storageClientLinkId, - // }); - // } + const storageClientTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "StorageClient"); + const incomeTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); + const {data: [storageClientLink]} = await deep.select({ + type_id: storageClientTypeLinkId, + number: { value: req.body.CardId } + }); + if(!storageClientLink) { + await deep.insert({ + type_id: storageClientTypeLinkId, + number: { data: { value: req.body.CardId } }, + in: { + data: [{ + type_id: containTypeLinkId, + from_id: triggeredByLinkId + }, + { + type_id: incomeTypeLinkId, + from_id: paymentLink.id, + to_id: storageClientLinkId, + }] + }, + out: { + data: { + type_id: storageClientTitle, + from_id: storageClientLinkId, + to_id: storageClientLinkId, + string: { data: { value: req.body.Pan } }, + in: { + data: { + type_id: containTypeLinkId, + from_id: triggeredByLinkId + } + } + } + } + }); + } else { + await deep.insert({ + type_id: incomeTypeLinkId, + from_id: paymentLink.id, + to_id: storageClientLink.id, + }); + } } res.send('ok'); From dd636edf340ff1f8fcad3aaf7a8b85af387d4a00 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Thu, 16 Mar 2023 10:48:36 +0000 Subject: [PATCH 675/683] Add todo --- deep-packages/payments/tinkoff/tinkoffNotificationHandler.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js b/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js index cc0d110f..22235179 100644 --- a/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js +++ b/deep-packages/payments/tinkoff/tinkoffNotificationHandler.js @@ -193,13 +193,12 @@ async ( { type_id: incomeTypeLinkId, from_id: paymentLink.id, - to_id: storageClientLinkId, }] }, out: { data: { - type_id: storageClientTitle, - from_id: storageClientLinkId, + type_id: storageClientTitleTypeLinkId, + from_id: storageClientLinkId, // TODO how to make loop-link without doing multiple queries? to_id: storageClientLinkId, string: { data: { value: req.body.Pan } }, in: { From 24a91f431415d0c9b44d5bf112028a8ecb13b9c2 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 17 Mar 2023 14:09:59 +0000 Subject: [PATCH 676/683] Add and use bankPaymentId variable --- .../cancelling/cancellingPayInsertHandler.js | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/deep-packages/payments/tinkoff/cancelling/cancellingPayInsertHandler.js b/deep-packages/payments/tinkoff/cancelling/cancellingPayInsertHandler.js index 5300165d..b3eb4e55 100644 --- a/deep-packages/payments/tinkoff/cancelling/cancellingPayInsertHandler.js +++ b/deep-packages/payments/tinkoff/cancelling/cancellingPayInsertHandler.js @@ -4,7 +4,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const crypto = require('crypto'); const axios = require('axios'); - const tinkoffApiUrlTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffApiUrl"); + const tinkoffApiUrlTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "TinkoffApiUrl"); const { data: [tinkoffApiUrlLink] } = await deep.select({ type_id: tinkoffApiUrlTypeLinkId }); @@ -16,8 +16,8 @@ async ({ deep, require, data: { newLink: payLink } }) => { } const tinkoffApiUrl = tinkoffApiUrlLink.value.value; - const terminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TerminalPassword"); - const usesTerminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "UsesTerminalPassword"); + const terminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "TerminalPassword"); + const usesTerminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "UsesTerminalPassword"); const { data: [terminalPasswordLink] } = await deep.select({ type_id: terminalPasswordTypeLinkId, in: { @@ -52,22 +52,22 @@ async ({ deep, require, data: { newLink: payLink } }) => { }; - const { data: linksUpToPayMp } = await deep.select({ + const { data: linksDownToLinkPay } = await deep.select({ down: { link_id: { _eq: payLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b", "paymentTree") }, // TODO + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "paymentTree") }, // TODO }, }); - console.log({ mpDownPay: linksUpToPayMp }); + console.log({ mpDownPay: linksDownToLinkPay }); - const cancellingPaymentTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "CancellingPayment"); - const cancellingPaymentLink = linksUpToPayMp.find(link => link.type_id === cancellingPaymentTypeLinkId); + const cancellingPaymentTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling-cancelling", "CancellingPayment"); + const cancellingPaymentLink = linksDownToLinkPay.find(link => link.type_id === cancellingPaymentTypeLinkId); console.log({ cancellingPaymentLink }); if (!cancellingPaymentLink) { return; } - const tinkoffProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const tinkoffProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "TinkoffProvider"); const { data: [tinkoffProviderLink] } = await deep.select({ type_id: tinkoffProviderTypeLinkId }); @@ -75,8 +75,8 @@ async ({ deep, require, data: { newLink: payLink } }) => { throw new Error(`A link with type ##${tinkoffProviderTypeLinkId} is not found`) } - const sumTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); - const sumLink = linksUpToPayMp.find(link => link.type_id === sumTypeLinkId); + const sumTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "Sum"); + const sumLink = linksDownToLinkPay.find(link => link.type_id === sumTypeLinkId); console.log({ sumLink }); if (!sumLink) throw new Error(`A link with type ##${sumTypeLinkId} associated with the link ##${payLink.id} is not found`); if (!sumLink.value?.value) { @@ -88,8 +88,8 @@ async ({ deep, require, data: { newLink: payLink } }) => { id: cancellingPaymentLink.from_id }); - const terminalKeyTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TerminalKey"); - const usesTerminalKeyTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "UsesTerminalKey"); + const terminalKeyTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "TerminalKey"); + const usesTerminalKeyTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "UsesTerminalKey"); const { data: [terminalKeyLink] } = await deep.select({ type_id: terminalKeyTypeLinkId, in: { @@ -107,7 +107,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { const terminalKey = terminalKeyLink.value.value; - const incomeTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Income"); + const incomeTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "Income"); await deep.insert({ type_id: incomeTypeLinkId, from_id: cancellingPaymentLink.id, @@ -144,9 +144,10 @@ async ({ deep, require, data: { newLink: payLink } }) => { await deep.insert({ link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value }, { table: "objects" }); + const bankPaymentId = cancelledPaymentLink.value.value.bankPaymentId; const cancelOptions = { TerminalKey: terminalKey, - PaymentId: cancelledPaymentLink.value.value.bankPaymentId, + PaymentId: bankPaymentId, Amount: sumLink.value.value, }; console.log({ cancelOptions }); @@ -155,7 +156,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { console.log({ cancelResult }); if (cancelResult.error) { await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b", "Error")), + type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "Error")), from_id: tinkoffProviderLink.id, to_id: payLink.id, string: { data: { value: cancelResult.error } }, @@ -164,7 +165,7 @@ async ({ deep, require, data: { newLink: payLink } }) => { } await deep.insert({ - type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b", "Payed"), + type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "Payed"), from_id: tinkoffProviderLink.id, to_id: payLink.id, }); From 749e622eb1bdad2bebf4d274a2db922baa373813 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 17 Mar 2023 14:10:33 +0000 Subject: [PATCH 677/683] Do not create error link --- .../tinkoff/cancelling/cancellingPayInsertHandler.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/deep-packages/payments/tinkoff/cancelling/cancellingPayInsertHandler.js b/deep-packages/payments/tinkoff/cancelling/cancellingPayInsertHandler.js index b3eb4e55..ae31fac1 100644 --- a/deep-packages/payments/tinkoff/cancelling/cancellingPayInsertHandler.js +++ b/deep-packages/payments/tinkoff/cancelling/cancellingPayInsertHandler.js @@ -155,12 +155,6 @@ async ({ deep, require, data: { newLink: payLink } }) => { const cancelResult = await cancel(cancelOptions); console.log({ cancelResult }); if (cancelResult.error) { - await deep.insert({ - type_id: (await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "Error")), - from_id: tinkoffProviderLink.id, - to_id: payLink.id, - string: { data: { value: cancelResult.error } }, - }); throw new Error(cancelResult.error); } From e37cb558b04443c70259e54b8c8794c22a9c2194 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 17 Mar 2023 14:20:27 +0000 Subject: [PATCH 678/683] Add contains --- .../cancelling/cancellingPayInsertHandler.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/deep-packages/payments/tinkoff/cancelling/cancellingPayInsertHandler.js b/deep-packages/payments/tinkoff/cancelling/cancellingPayInsertHandler.js index ae31fac1..4df5e151 100644 --- a/deep-packages/payments/tinkoff/cancelling/cancellingPayInsertHandler.js +++ b/deep-packages/payments/tinkoff/cancelling/cancellingPayInsertHandler.js @@ -1,5 +1,5 @@ -async ({ deep, require, data: { newLink: payLink } }) => { +async ({ deep, require, data: { newLink: payLink, triggeredByLinkId } }) => { const crypto = require('crypto'); const axios = require('axios'); @@ -106,12 +106,19 @@ async ({ deep, require, data: { newLink: payLink } }) => { } const terminalKey = terminalKeyLink.value.value; + const containTypeLinkId = await deep.id("@deep-foundation/core", "Contain"); const incomeTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "Income"); await deep.insert({ type_id: incomeTypeLinkId, from_id: cancellingPaymentLink.id, - to_id: cancelledPaymentLink.to_id + to_id: cancelledPaymentLink.to_id, + in: { + data: { + type_id: containTypeLinkId, + from_id: triggeredByLinkId + } + } }); const {data: [userLink]} = await deep.select({ @@ -162,6 +169,12 @@ async ({ deep, require, data: { newLink: payLink } }) => { type_id: await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "Payed"), from_id: tinkoffProviderLink.id, to_id: payLink.id, + in: { + data: { + type_id: containTypeLinkId, + from_id: triggeredByLinkId + } + } }); }; From 9d597a70149462b63ad2569be883cffb256c422d Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 17 Mar 2023 14:28:08 +0000 Subject: [PATCH 679/683] Use links from cancelling package instead of c2b --- .../tinkoff/cancelling/notificationHandler.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/deep-packages/payments/tinkoff/cancelling/notificationHandler.js b/deep-packages/payments/tinkoff/cancelling/notificationHandler.js index 906a7993..010a7939 100644 --- a/deep-packages/payments/tinkoff/cancelling/notificationHandler.js +++ b/deep-packages/payments/tinkoff/cancelling/notificationHandler.js @@ -15,8 +15,8 @@ async ( const crypto = require('crypto'); - const terminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TerminalPassword"); - const usesTerminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "UsesTerminalPassword"); + const terminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "TerminalPassword"); + const usesTerminalPasswordTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "UsesTerminalPassword"); const { data: [terminalPasswordLink] } = await deep.select({ type_id: terminalPasswordTypeLinkId, in: { @@ -50,7 +50,7 @@ async ( return hash; }; - const tinkoffProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "TinkoffProvider"); + const tinkoffProviderTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "TinkoffProvider"); const { data: [tinkoffProviderLink] } = await deep.select({ type_id: tinkoffProviderTypeLinkId }); @@ -58,7 +58,7 @@ async ( throw new Error(`A link with type ##${tinkoffProviderTypeLinkId} is not found`) } - const cancellingPaymentTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "Payment"); + const cancellingPaymentTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling-cancelling", "Payment"); const { data: [cancellingPaymentLink] } = await deep.select({ type_id: cancellingPaymentTypeLinkId, object: { value: { _contains: { orderId: req.body.OrderId } } } @@ -70,17 +70,17 @@ async ( const { data: linksDownToCancellingPaymentMp } = await deep.select({ up: { parent_id: { _eq: cancellingPaymentLink.id }, - tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "paymentTree") } + tree_id: { _eq: await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling-cancelling", "paymentTree") } } }); - const payTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "Pay"); + const payTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling-cancelling", "Pay"); const payLink = linksDownToCancellingPaymentMp.find(link => link.type_id === payTypeLinkId); if (!payLink) { throw new Error(`A link with type ##${payTypeLinkId} associated with ##${cancellingPaymentLink} is not found.`) } const bankPaymentId = req.body.PaymentId; - const sumTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b", "Sum"); + const sumTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "Sum"); const sumLink = linksUpToPayMp.find(link => link.type_id === sumTypeLinkId); console.log({ sumLink }); if (!sumLink) throw new Error(`A link with type ##${sumTypeLinkId} associated with the link ##${payLink.id} is not found`); @@ -88,7 +88,7 @@ async ( throw new Error(`##${sumLink.id} must have a value`) } - const payedTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "Payed") + const payedTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling-cancelling", "Payed") await deep.insert({ type_id: payedTypeLinkId, from_id: tinkoffProviderLink.id, From 67a58147b6c6a8ac7fe83fc4d50c4501b9d4ad21 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 17 Mar 2023 14:29:45 +0000 Subject: [PATCH 680/683] Remove unused variable --- .../payments/tinkoff/cancelling/notificationHandler.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/deep-packages/payments/tinkoff/cancelling/notificationHandler.js b/deep-packages/payments/tinkoff/cancelling/notificationHandler.js index 010a7939..d3220a15 100644 --- a/deep-packages/payments/tinkoff/cancelling/notificationHandler.js +++ b/deep-packages/payments/tinkoff/cancelling/notificationHandler.js @@ -78,8 +78,6 @@ async ( const payLink = linksDownToCancellingPaymentMp.find(link => link.type_id === payTypeLinkId); if (!payLink) { throw new Error(`A link with type ##${payTypeLinkId} associated with ##${cancellingPaymentLink} is not found.`) } - const bankPaymentId = req.body.PaymentId; - const sumTypeLinkId = await deep.id("@deep-foundation/payments-tinkoff-c2b-cancelling", "Sum"); const sumLink = linksUpToPayMp.find(link => link.type_id === sumTypeLinkId); console.log({ sumLink }); From 7a2b5375387b794a2347ec7bc097804092de95bd Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 17 Mar 2023 14:30:03 +0000 Subject: [PATCH 681/683] Add contain --- .../payments/tinkoff/cancelling/notificationHandler.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/deep-packages/payments/tinkoff/cancelling/notificationHandler.js b/deep-packages/payments/tinkoff/cancelling/notificationHandler.js index d3220a15..ef599e9a 100644 --- a/deep-packages/payments/tinkoff/cancelling/notificationHandler.js +++ b/deep-packages/payments/tinkoff/cancelling/notificationHandler.js @@ -91,5 +91,11 @@ async ( type_id: payedTypeLinkId, from_id: tinkoffProviderLink.id, to_id: sumLink.id, + in: { + data: { + type_id: containTypeLinkId, + from_id: triggeredByLinkId + } + } }); }; From 3d83adbcbb042568df9d372dcf0d851007535a38 Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 17 Mar 2023 14:31:00 +0000 Subject: [PATCH 682/683] Remove unused files --- ...rtTinkoffCancellingNotificationHandler.cjs | 77 ------------- ...nsertTinkoffCancellingPayInsertHandler.cjs | 102 ------------------ 2 files changed, 179 deletions(-) delete mode 100644 deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs delete mode 100644 deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs diff --git a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs deleted file mode 100644 index be1a507c..00000000 --- a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs +++ /dev/null @@ -1,77 +0,0 @@ -const { handlersDependencies } = require("../handlersDependencies.cjs"); -const {insertNotificationHandler: baseInsertNotificationHandler} = require("../../../insertNotificationHandler.cjs"); - -exports.insertTinkoffCancellingNotificationHandler = async ({paymentsPackageName,deep, notificationPort, notificationRoute, portTypeLinkId, routerListeningTypeLinkId, routerTypeLinkId, routerStringUseTypeLinkId, routeTypeLinkId, handleRouteTypeLinkId, handlerTypeLinkId, supportsId, containTypeLinkId, adminId, fileTypeLinkId}) => { - const code = ` -async ( - req, - res, - next, - { deep, require, gql } -) => { - res.send('ok'); - ${handlersDependencies} - const reqBody = req.body; - console.log({reqBody}); - - // Canceled is used instead of Cancelled because tinkoff team is not goos at english - if (req.body.Status !== 'CANCELED') { - return next(); - } - - const tinkoffProviderTypeLinkId = await deep.id("${paymentsPackageName}", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: tinkoffProviderTypeLinkId - }); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; - - const cancellingPaymentLinkSelectQuery = await deep.select({ - object: {value: {_contains: {orderId: req.body.OrderId}}} - }); - if(cancellingPaymentLinkSelectQuery.error) { throw new Error(cancellingPaymentLinkSelectQuery.error.message); } - const cancellingPaymentLink = cancellingPaymentLinkSelectQuery.data[0]; - console.log({cancellingPaymentLink}); - if(!cancellingPaymentLink) { throw new Error("The cancelling payment link associated with the order id " + req.body.OrderId + " is not found."); } - - const {data: mpUpCancellingPaymentLink, error: mpUpcancellingPaymentLinkSelectQueryError} = await deep.select({ - up: { - parent_id: { _eq: cancellingPaymentLink.id }, - tree_id: { _eq: await deep.id("${paymentsPackageName}", "paymentTree") } - } - }); - console.log({mpUpCancellingPaymentLink}); - if(mpUpcancellingPaymentLinkSelectQueryError) { throw new Error(mpUpcancellingPaymentLinkSelectQueryError.message); } - - const payTypeLinkId = await deep.id("${paymentsPackageName}", "Pay"); - const payLink = mpUpCancellingPaymentLink.find(link => link.type_id === payTypeLinkId); - console.log({payLink}); - if(!payLink) { throw new Error("The pay link associated with cancelling payment link " + cancellingPaymentLink + " is not found.") } - - - const bankPaymentId = req.body.PaymentId; - - const {data: mpUpPayment, error: mpUpPaymentLinkSelectQueryError} = await deep.select({ - up: { - parent_id: { _eq: cancellingPaymentLink.id }, - tree_id: { _eq: await deep.id("${paymentsPackageName}", "paymentTree") } - } - }); - - const sumTypeLinkId = await deep.id("${paymentsPackageName}", "Sum") - const sumLink = mpUpPayment.find(link => link.type_id === sumTypeLinkId); - if(!sumLink) {throw new Error("Could not find sum link associated with the cancelling payment " + cancellingPaymentLink);} - - const payedTypeLinkId = await deep.id("${paymentsPackageName}", "Payed") - const payedInsertLinkInsertQuery = await deep.insert({ - type_id: payedTypeLinkId, - from_id: tinkoffProviderLink.id, - to_id: sumLink.id, - }); - if(payedInsertLinkInsertQuery.error) {throw new Error(payedInsertLinkInsertQuery.error.message);} -}; -`; - -return await baseInsertNotificationHandler({adminId, containTypeLinkId, deep, fileTypeLinkId, handlerName: "tinkoffNotificationHandler", handleRouteTypeLinkId,handlerTypeLinkId,notificationPort,notificationRoute,portTypeLinkId,routerListeningTypeLinkId,routerStringUseTypeLinkId,routerTypeLinkId,routeTypeLinkId,supportsId, code}); -} - diff --git a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs b/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs deleted file mode 100644 index 68fcb0dd..00000000 --- a/deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs +++ /dev/null @@ -1,102 +0,0 @@ -const { insertHandler } = require("../../../insertHandler.cjs"); -const { handlersDependencies } = require("../handlersDependencies.cjs"); -const {cancel} = require("../cancel.cjs"); - -const insertTinkoffCancellingPayInsertHandler = async ({paymentsPackageName, cancellingPaymentsPackageName,deep, syncTextFileTypeId, terminalKey, containTypeId, packageId, dockerSupportsJsId, handlerTypeId, handleInsertTypeId, cancellingPayTypeId}) => { - const code = ` -async ({ deep, require, data: { newLink: payLink } }) => { - ${handlersDependencies} - - const {data: mpDownPay, error: mpDownPaySelectQueryError} = await deep.select({ - down: { - link_id: { _eq: payLink.id }, - tree_id: { _eq: await deep.id("${paymentsPackageName}", "paymentTree") }, - }, - }); - console.log({mpDownPay}); - if(mpDownPaySelectQueryError) { throw new Error(mpDownPaySelectQueryError.message); } - - const cancellingPaymentTypeLinkId = await deep.id("${cancellingPaymentsPackageName}", "CancellingPayment"); - const cancellingPaymentLink = mpDownPay.find(link => link.type_id === cancellingPaymentTypeLinkId); - console.log({cancellingPaymentLink}); - if(!cancellingPaymentLink) { - return; - } - - const tinkoffProviderTypeLinkId = await deep.id("${paymentsPackageName}", "TinkoffProvider"); - const tinkoffProviderLinkSelectQuery = await deep.select({ - type_id: tinkoffProviderTypeLinkId - }); - if(tinkoffProviderLinkSelectQuery.error) {throw new Error(tinkoffProviderLinkSelectQuery.error.message);} - const tinkoffProviderLink = tinkoffProviderLinkSelectQuery.data[0]; - - const sumTypeLinkId = await deep.id("${paymentsPackageName}", "Sum"); - const sumLink = mpDownPay.find(link => link.type_id === sumTypeLinkId); - console.log({sumLink}); - if(!sumLink) throw new Error("Sum link associated with the pay link " + payLink.id + " is not found."); - - const urlTypeLinkId = await deep.id("${paymentsPackageName}", "Url"); - - const cancelledPaymentLinkSelectQuery = await deep.select({ - id: cancellingPaymentLink.from_id - }); - if(cancelledPaymentLinkSelectQuery.error) { throw new Error(cancelledPaymentLinkSelectQuery.error.message); } - const cancelledPaymentLink = cancelledPaymentLinkSelectQuery.data[0]; - console.log({cancelledPaymentLink}); - - const incomeTypeLinkId = await deep.id("${paymentsPackageName}", "Income"); - const incomeLinkInsertQuery = await deep.insert({ - type_id: incomeTypeLinkId, - from_id: cancellingPaymentLink.id, - to_id: cancelledPaymentLink.to_id - }); - if(incomeLinkInsertQuery.error) {throw new Error(incomeLinkInsertQuery.error.message);} - - - const userLinkSelectQuery = await deep.select({ - id: cancellingPaymentLink.to_id - }); - if(userLinkSelectQuery.error) { throw new Error(userLinkSelectQuery.error.message); } - const userLink = userLinkSelectQuery.data[0]; - console.log({userLink}); - - const cancel = ${cancel.toString()}; - - await deep.insert({link_id: cancellingPaymentLink.id, value: cancelledPaymentLink.value.value}, {table: "objects"}); - - const cancelOptions = { - TerminalKey: "${terminalKey}", - PaymentId: cancelledPaymentLink.value.value.bankPaymentId, - Amount: sumLink.value.value, - }; - console.log({ cancelOptions }); - - const cancelResult = await cancel(cancelOptions); - console.log({cancelResult}); - if (cancelResult.error) { - const errorMessage = "Could not cancel the order. " + JSON.stringify(cancelResult.error); - - const {error: errorLinkInsertQueryError} = await deep.insert({ - type_id: (await deep.id("${paymentsPackageName}", "Error")), - from_id: tinkoffProviderLink.id, - to_id: payLink.id, - string: { data: { value: errorMessage } }, - }); - if(errorLinkInsertQueryError) { throw new Error(errorLinkInsertQueryError.message); } - throw new Error(errorMessage); - } - - const {error: payedLinkInsertQueryError} = await deep.insert({ - type_id: await deep.id("${paymentsPackageName}", "Payed"), - from_id: tinkoffProviderLink.id, - to_id: payLink.id, - }); - if(payedLinkInsertQueryError) {throw new Error(payedLinkInsertQueryError.message); } - -}; -`; - -return await insertHandler({deep,fileTypeId: syncTextFileTypeId, fileName: 'payInsertHandlerFile', handlerName: 'payInsertHandler', handleName: 'payInsertHandle', triggerTypeId: cancellingPayTypeId, code, supportsId: dockerSupportsJsId, handleOperationTypeId: handleInsertTypeId, containTypeId, packageId, handlerTypeId, code}); -} - -exports.insertTinkoffCancellingPayInsertHandler = insertTinkoffCancellingPayInsertHandler; \ No newline at end of file From cf79a7b9e476db8a9b5449a5225c5cbfd9aa3c8a Mon Sep 17 00:00:00 2001 From: FreePhoenix888 Date: Fri, 17 Mar 2023 14:36:02 +0000 Subject: [PATCH 683/683] Import confirm --- payments-tinkoff-c2b-cancelling.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/payments-tinkoff-c2b-cancelling.cjs b/payments-tinkoff-c2b-cancelling.cjs index 2ce2d15a..08fe8b84 100644 --- a/payments-tinkoff-c2b-cancelling.cjs +++ b/payments-tinkoff-c2b-cancelling.cjs @@ -23,6 +23,7 @@ const { payInBrowser } = require("./deep-packages/payments/tinkoff/payInBrowser. const { getError } = require("./deep-packages/payments/tinkoff/getError.cjs"); const { init } = require("./deep-packages/payments/tinkoff/init.cjs"); const { cancel } = require("./deep-packages/payments/tinkoff/cancel.cjs"); +const { confirm } = require("./deep-packages/payments/tinkoff/confirm.cjs"); const { handlersDependencies } = require("./deep-packages/payments/tinkoff/handlersDependencies.cjs"); const { insertTinkoffCancellingPayInsertHandler } = require("./deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingPayInsertHandler.cjs"); const { insertTinkoffCancellingNotificationHandler } = require("./deep-packages/payments/tinkoff/cancelling/insertTinkoffCancellingNotificationHandler.cjs");